わからないコードがありますが、その動作を簡単に説明していただければ幸いです。
最初のビットは型キャストについてです。次のコードを正しく読んでいるかどうか誰かに教えてもらえますか?
#define A_TIME 0xC0500000
#define B_TIME *(UINT_8 *)(A_TIME + 0x00002909)
この出力は、B_TIMEが8ビットの符号なし整数= 0x09へのポインターであるということですか?型キャストがどのように機能するかわかりませんか?8 LSBをB_TIMEに割り当てますか?また、私は*(UINT_8 *)に混乱していますか?これは正確にはどういう意味ですか?これは、8ビットの符号なし整数へのポインタですか?
上記を知ったら、2番目の部分はおそらく私には明らかですが、とにかく投稿します:
UINT_8 Timer = 0;
Input_Time (&Timer);
#define C_TIME *(UINT_16 *)0xC0C0B000
#define MASK 0x003F
void Input_Time (UINT_8 *Time)
{
*Time = 0xC0;
*Time |= (UINT_8)((C_TIME >> 4) & MASK);
return;
}
Input_Time関数に続く*Timeの値は何ですか?誰かがコードをステップスルーして、各ステップを説明してもらえますか?
質問の初心者(それは一言ですか?!)についてお詫びします。
とても有難い。ジェームズ
編集:
OK、上記に満足しています。ありがとう。Input_Time()が呼び出された後、コード内で発生する次のことについて混乱しています。
#define OUT_TIME *(UINT_8 *)0xC0411297
OUT_TIME = Timer;
これはどのように可能ですか?OUT_TIME
アドレス0XC0411297内の8ビット値ではありませんか?それはどのように機能しますか?