問題タブ [8051]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
microcontroller - 8051 マイクロコントローラの割り込みによる UART 送信
私のプラットフォームは c8051F120 マイクロコントローラーです。割り込みを使用して UART0 経由で (=tx) バイトを送信したいと考えています。これまでの私のデザインは次のとおりです。
ブロッキング関数を使用できるため、UART0 レジスタと Timer2 を介したタイミング (上記のコードの一部ではない) に関する初期化が正しいと確信しています。
もちろん、割り込み設計に切り替えたいときも設定します
割り込みを使用しようとする私の設計の欠陥を誰かが見つけますか? または、このためのサンプルコードを持っている人はいますか? ありがとうございました!そして、TCNT レジスターの読み取りに関する私の質問に答えてくれた jzakmeister に大声で叫びました。
c - 8051 μCU - 同時割り込みはどのように処理されますか?
私は 8051 マイクロコントローラーでプログラミングを行っていましたが、割り込みを処理しているときに奇妙なことに気づきました。割り込みが発生したとします。その割り込みの処理中に、優先度の高い別の割り込みが発生しています。コントローラーは、優先度の高い割り込みの処理に飛び込んでから、優先度の低い割り込みに戻るべきではありませんか?
以下は私の質問を示しています。キーパッドは、外部割り込み 1 (優先度が低い) をトリガーするように配線されており、タイマー 0 割り込み (優先度が高い) が有効になっています。
android - USBMIDIを介した8051マイクロコントローラーとAndroidタブレットのインターフェース
USB経由でAndroidデバイスから8051マイクロコントローラーにデジタルデータを送信したい(タブレットのotgから8051ボードのUSB MIDIに)。これにより、8051に接続されたLEDが点滅します...ただし、USBデバイスの検出を書き込もうとしたときコードそれは機能しませんでした..そして私は8051MCを検出できませんでした。誰かplsが私にどのようにそしてどこから始めなければならないか教えてもらえますか?
c - 構造体のポインターメンバーを指す
次のように、コンパイラからエラーが発生します。
C51 COMPILER V9.01 - SN: C1ADC-HAI60D COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2009 * SEQUENCE.C の行 300 で警告 C260: '=': ポインターの切り捨て * SEQUENCE.C の行301 でエラー C190: '&':左辺値ではない
以下は私のコードです:
c - keil ide の C ソース コードからアセンブリ ルーチンを呼び出す
アセンブリ言語で 8051 マイクロコントローラー用の遅延ルーチンを使用しています。アセンブリ言語プログラムでそれらを使用できますが、これらのルーチンは C 言語から使用したいと考えています。
ちょうど下に投稿する delay.asm ファイルである遅延のコード...
このコードをアセンブリ言語にインクルードして簡単に使用します。ただし、これらのルーチンを c ソース コードから呼び出したいと考えています。
c - 8051コントローラーポートビットの読み取り/書き込み
アイデアは、ポートから任意のビットを読み取ることです。とにかく、1つの既知のビットへのアクセスは次のように簡単です。
しかし、関数を介してビットyにアクセスする必要がある場合はどうなりますか?
SDCCを使用してプログラムし、8051ヘッダーを使用します。
c - I2C スレーブ モードのプログラム方法
MCU をコーディングして I2C バス上のアドレスをリッスンし、それに応じて実行する方法を理解できていません。C のサンプル コードの多くは、マスター デバイス用です。スレーブ デバイスのコードを記述する方法をよりよく理解したいと思います。SMB0STA ステータス レジスタを使用しますか? データを開始して出力するキューを「リッスン」すると思われる関数を以下に投稿しました。0xA8
は「自分のアドレス + R 受信。ACK 送信」のステータスコードです。私のC8051F020 MCUデータシートによると。
assembly - 8051アセンブリの16進数の処理
適切な減算のために8051アセンブリの16進数をループするのに問題があります。
これは、30回繰り返し、40から70までの値を示す単純なコードです(40,41,42,43、.... 70)
これが各値の調整方法です。
しかし、ループを逆にしたい場合、つまり出力を70から40(70,69,68,67,66,65,64、..... 40)の逆順にしたい場合
私は何をしなければなりませんか?
これは、最初の数値が90の場合の動作例です。
しかし、減算後の10進調整には何もないので、どうすれば目的の結果を達成できますか?
目的の出力、
90 89 88 87 8685...。
assembly - SFR を 1 ビットまたは 8051 アーチのバイトとして設定する
バイト全体を SFR に割り当てることと、その値に AND または OR を適用することに違いはありますか?
言い換えれば、一部のビットを以前と同じ値に設定した場合、またはこれによりハードウェアの反応が引き起こされる可能性がありますか?
たとえば、次から始めます。
次に、同じ最終値で私ができること
また
あるいは
違いはありますか?
ここでは特に UARTCON について話しているのではなく、SFR の一般的なメカニズムについて話しています。ビットのセットは重要ですか、それともそのビットの変更のみですか?
UPDCLR
質問を絞り込むことができます: ビット アドレス指定可能な SFR は、ビットによって内部的に変更されますか、または、SETB
、ORL
およびのような命令でもバイト全体として変更されますAND
か?
assembly - 8051で送信済みのシリアルデータを新しいデータに置き換える
シリアル データ (3 桁) をハイパー ターミナルに送信する数カウント プログラムがあります。そのプログラムは 1 秒ごとにカウント (増加/減少) します。カウントするたびにシリアルアウトに送ります。
ただし、ハイパーターミナルにさらに 3 桁追加しているだけです。最初に以前のデータを消去したい。
実行する方法?バックスペース(08h)aldyを試してみました。それは奇妙です、ランダムに削除します。
ありがとう。