-
1.這是由不同編譯器引起的長度差異。
2.它仍然與編譯器有關,IAR 針對不同的微控制器有不同的編譯器。
它與雙倍的長度相同也就不足為奇了,我們也是如此。
-
1. int 指標大小為 2,沒問題,keil 結果是 3,這有點奇怪,應該和編譯器有關。
2.同樣是IAR,430支援無符號長長,NEC不支援,這與微控制器本身支援的資料型別有關,與編譯器無關。
3.浮點數為IEEE-754標準,4個位元組,double占用4個位元組的記憶體,沒有問題,long double占用8個位元組。
-
我不需要在程式中浮動,也許我的系統不需要它。 似乎他們中的一些人強迫浮點結果成型。
keil 中的指標不是固定的三個位元組,通用指標是三個位元組,通用指標不指定儲存間隔; 乙個特殊的指標是兩個位元組,乙個特殊的指標同時定義了指標的儲存間隔。
例如,unsigned char *gp;
這裡的 gp 指標沒有指定儲存哪些程式碼、資料和 idata 儲存區間,所以 keil 在分配記憶體時,會使用三個位元組 a、b、c、a 來儲存編譯器分配的儲存區域,b 儲存 gp 的高位址,c 儲存 gp 的低位址。
unsigned char code/data/idata *sp;
這裡的 sp 指定了儲存區域,因此 keil 不必在編譯時為其分配位元組來儲存 sp 定義的間隔。 就是這樣,指標 keil 只分配兩個位元組,b 和 c。
因為我沒有接觸過MSP系列,所以我對IAR編譯器不熟悉。
-
可以利用微控制器的定址能力來分析,如果微控制器的資料儲存區或程式儲存區超過16位,也就是65535,那麼你用乙個雙位元組指標指向位址65535,該怎麼辦?
你提到的問題似乎與微控制器的型別有關。 ,
-
1、uchar state1;main 函式中有乙個 state1 變數,但整個程式並沒有改變數量定義,所以我們可以看到第乙個空的是這個變數的定義。
2、state1=0xfe;或 state1= 1; 在圖中,LED被驅動為低電平,D1為P10,State1的值在環路中直接分配給P1,因此為了使D1明亮,State1的值必須=0xfe
3、temp=4;該問題要求光按 d1 3 5 7 執行,只有 4 步,而 for 迴圈的步長值只有 -1 (temp--) 結束條件為 temp=0,所以 temp 的初始值應為 = end value - step value number of steps = 0 - (-1) 4 = 4。
4、state1=(state1<<2)+3;如果此語句的前半部分向左移動 2 位,則較低的 2 位變為 0,並且需要新增 2 個 1(即 0000 0011b=3)以關閉較低 2 位的燈。
5、j
1. 直接呼叫庫函式。
2.以下是該函式的配置,從中可以看出,當i=0時,埠對應的燈亮,當i=1時,埠對應的燈亮,在for迴圈中,兩組燈交替閃爍。 >>>More
idata:定義的變數在 00 h ffh ram 和 256 位元組的範圍內,可以讀寫變數。 >>>More
讓我們先對你的問題做點什麼:從你的描述來看,你似乎想把重點放在微控制器上。 如果對C語言的要求不高,按照形式化流程學習指標和結構基本就夠了,而譚浩強的書更多的是針對PC的,有些東西你看不懂。 >>>More