問題タブ [c51]

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.

0 投票する
2 に答える
1571 参照

c - Keil uVision (C51 コンパイラ)、単項演算子 "!" の意味は何ですか?

Keil uVision 4 でプログラミングしています。

次のようなコードがあります。

`P3^3このピンにはPIR(パルス赤外線センサー)があるため、汎用入力ピンを制御できます。点滅しているときはその行に1が表示され、眠っているときは0になります。

P3^3プルアップすると1、出力は(予想どおり)10101010101010..

まだ0の場合、出力は(予想外)0000000000000..

私が取得している動作は、sbit XPIRによって設定/設定解除されていることを考慮して、上記で説明したものです..

!質問は、 Keil C51 コンパイラの演算子の意味は何ですか?

0 投票する
2 に答える
1289 参照

assembly - C51 C コンパイラ インライン アセンブリから SDCC インライン アセンブリへ

私はアセンブリにはあまり興味がありませんが、プロジェクトでは、C51 C コンパイラのアセンブリ コードの数行を SDCC に変更する必要があります。

これはC51のコードです

SDCCでコンパイルされたもの

コンパイラのエラー/警告として。

  • $-symbol がアセンブラによって命令の実際のアドレスに置き換えられることは知っていますが、SDCC に相当するものは何ですか?
  • などの警告を解決するにはどうすればよいT0Runですか?
0 投票する
1 に答える
510 参照

assembly - SDCC/C51: SDCC シンボルの再定義

C51でコンパイルしていたプログラムをSDCCでコンパイルしたい..

これは75A800(16 進数)に変換されます。

SDCCでこれをコンパイルすると、これ

SDCC は、次のような TCON レジスタの私の定義を無視しているように見えます。

だからここに私の質問があります:

別のヘッダー ファイルで定義したアドレスを使用するように SDCC に指示するにはどうすればよいですか?

もちろん、全体は次のようになります。

0 投票する
1 に答える
886 参照

c - printf() は意味不明になります

私はこのコードを持っています:

次の関数を使用します。

結果は次のとおりです。

これは、AT89C55WD 上の Keil C51 コンパイラでprintf()、シリアル ポート経由で実行されます。

何が起こっている?

編集

printf行を次のように変更します

のバグのようprintfです。プログラマーの皆さん、嘘をつくデバッグツールを絶対に作らないでください。お願いです。

0 投票する
1 に答える
659 参照

c - xdata の代わりに data を使用するとコードスペースが大幅に削減されるのはなぜですか

これに対する答えを探してみましたが、決定的な理由が見つかりません。

コードスペースを削減するために、いくつかの 8051 C コードを最適化しようとしています。私は次の変更を加えました..

...そして、コードのサイズが 39 バイト減少するのを見ました (クリスマスのように感じます)。

From: プログラムサイズ: data=9.0 ...code=10509

to: プログラムサイズ: data=11.0 ... code=10468

質問: このようなマイナーな変更でコードスペースが大幅に縮小されたのはなぜですか?

0 投票する
2 に答える
1073 参照

c - c51 (Keil) で液晶ディスプレイに多次元の文字配列を出力したい

(配列は一連の文字で初期化されます)

配列を大きくすると、「データ セグメントが大きすぎます」というエラーも表示されます。配列を「CODE」から「XDATA」にコピーするにはどうすればよいですか? それともこれは問題ではありませんか?

編集: また、この方法で関数を呼び出すと、lcd は配列内の要素 [i] [] をスキップし、次の要素 [i] を出力します。

どんな助けでも大歓迎です。

0 投票する
0 に答える
368 参照

c - sbit を GCC に適応させる

いくつかの C モジュール用のテスト ハーネスを作成していますが、そのうちの 1 つに「sbit」キーワードが含まれています。このコードは、最初は Keil C51 コンパイラ用に作成されました。ここでは、sbit を使用して sfr 内のビットを定義します。詳細については、こちらを参照してください。ただし、sbit が定義されていない GCC を使用してテスト ハーネスを作成しています。static、const、int、および bool のすべての組み合わせを試しましたが、コンパイラを満足させるものはないようです。#define も機能しません。これらの変数には、コードのさらに下で値が割り当てられるためです。

このサイトには、sbit が GCC に対して低レベルすぎる可能性があることを示唆する同様の質問がありました。いずれにせよ、これを回避するために私にできることはありますか?

0 投票する
1 に答える
664 参照

8051 - アブソリュート機能アドレス keil 8051

C51 Keilで絶対アドレスを使用して関数を見つけて呼び出す方法は? バックグラウンド ROM にはいくつかのユーティリティ機能があります。フラッシュのコード スペースを最適化するために、これらの関数を呼び出したいと考えています。

0 投票する
1 に答える
105 参照

microcontroller - キール c51 の奇妙なマスキング動作

c8051f040 コントローラーから 2 つのピンを読み取ろうとしています。

ポートを直接読み取ることはできますが、同じポート値を変数に保存すると、デバッガーが正しい値を表示しても機能しません。

これは KEIL c51 のバグですか、それとも最適化されているものですか。

0 投票する
1 に答える
253 参照

8051 - 8051 文と単語カウンター

8051 MCU で文をカウントすると思われる以下のコードをインターネットで見つけました。疑問符がある場所で正確に何が起こっているのか、誰か説明してもらえますか。どんな種類の助けでも大歓迎です。