問題タブ [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.
c - Keil uVision (C51 コンパイラ)、単項演算子 "!" の意味は何ですか?
Keil uVision 4 でプログラミングしています。
次のようなコードがあります。
`P3^3
このピンにはPIR(パルス赤外線センサー)があるため、汎用入力ピンを制御できます。点滅しているときはその行に1が表示され、眠っているときは0になります。
にP3^3
プルアップすると1
、出力は(予想どおり)10101010101010..
まだ0の場合、出力は(予想外)0000000000000..
私が取得している動作は、sbit X
PIRによって設定/設定解除されていることを考慮して、上記で説明したものです..
!
質問は、 Keil C51 コンパイラの演算子の意味は何ですか?
assembly - C51 C コンパイラ インライン アセンブリから SDCC インライン アセンブリへ
私はアセンブリにはあまり興味がありませんが、プロジェクトでは、C51 C コンパイラのアセンブリ コードの数行を SDCC に変更する必要があります。
これはC51のコードです
SDCCでコンパイルされたもの
コンパイラのエラー/警告として。
$
-symbol がアセンブラによって命令の実際のアドレスに置き換えられることは知っていますが、SDCC に相当するものは何ですか?- などの警告を解決するにはどうすればよい
T0Run
ですか?
assembly - SDCC/C51: SDCC シンボルの再定義
C51でコンパイルしていたプログラムをSDCCでコンパイルしたい..
これは75A800
(16 進数)に変換されます。
SDCCでこれをコンパイルすると、これ
SDCC は、次のような TCON レジスタの私の定義を無視しているように見えます。
だからここに私の質問があります:
別のヘッダー ファイルで定義したアドレスを使用するように SDCC に指示するにはどうすればよいですか?
もちろん、全体は次のようになります。
c - printf() は意味不明になります
私はこのコードを持っています:
次の関数を使用します。
結果は次のとおりです。
これは、AT89C55WD 上の Keil C51 コンパイラでprintf()
、シリアル ポート経由で実行されます。
何が起こっている?
編集
printf行を次のように変更します
のバグのようprintf
です。プログラマーの皆さん、嘘をつくデバッグツールを絶対に作らないでください。お願いです。
c - xdata の代わりに data を使用するとコードスペースが大幅に削減されるのはなぜですか
これに対する答えを探してみましたが、決定的な理由が見つかりません。
コードスペースを削減するために、いくつかの 8051 C コードを最適化しようとしています。私は次の変更を加えました..
に
...そして、コードのサイズが 39 バイト減少するのを見ました (クリスマスのように感じます)。
From: プログラムサイズ: data=9.0 ...code=10509
to: プログラムサイズ: data=11.0 ... code=10468
質問: このようなマイナーな変更でコードスペースが大幅に縮小されたのはなぜですか?
c - c51 (Keil) で液晶ディスプレイに多次元の文字配列を出力したい
(配列は一連の文字で初期化されます)
配列を大きくすると、「データ セグメントが大きすぎます」というエラーも表示されます。配列を「CODE」から「XDATA」にコピーするにはどうすればよいですか? それともこれは問題ではありませんか?
編集: また、この方法で関数を呼び出すと、lcd は配列内の要素 [i] [] をスキップし、次の要素 [i] を出力します。
どんな助けでも大歓迎です。
c - sbit を GCC に適応させる
いくつかの C モジュール用のテスト ハーネスを作成していますが、そのうちの 1 つに「sbit」キーワードが含まれています。このコードは、最初は Keil C51 コンパイラ用に作成されました。ここでは、sbit を使用して sfr 内のビットを定義します。詳細については、こちらを参照してください。ただし、sbit が定義されていない GCC を使用してテスト ハーネスを作成しています。static、const、int、および bool のすべての組み合わせを試しましたが、コンパイラを満足させるものはないようです。#define も機能しません。これらの変数には、コードのさらに下で値が割り当てられるためです。
このサイトには、sbit が GCC に対して低レベルすぎる可能性があることを示唆する同様の質問がありました。いずれにせよ、これを回避するために私にできることはありますか?
8051 - アブソリュート機能アドレス keil 8051
C51 Keilで絶対アドレスを使用して関数を見つけて呼び出す方法は? バックグラウンド ROM にはいくつかのユーティリティ機能があります。フラッシュのコード スペースを最適化するために、これらの関数を呼び出したいと考えています。
microcontroller - キール c51 の奇妙なマスキング動作
c8051f040 コントローラーから 2 つのピンを読み取ろうとしています。
ポートを直接読み取ることはできますが、同じポート値を変数に保存すると、デバッガーが正しい値を表示しても機能しません。
これは KEIL c51 のバグですか、それとも最適化されているものですか。
8051 - 8051 文と単語カウンター
8051 MCU で文をカウントすると思われる以下のコードをインターネットで見つけました。疑問符がある場所で正確に何が起こっているのか、誰か説明してもらえますか。どんな種類の助けでも大歓迎です。