Ⅰ 單片機中有哪兩種注釋,符號是什麼
為單片機編程時,用匯編語言寫程序時,用分號 ; 表示注釋符號。
用C語言寫程序時,有兩種注釋符號,//為本行注釋符
/*
注釋內容
*/
為一段多行注釋符。
Ⅱ 菜鳥請教單片機C編程中0x80,0x0f, 0xf0,0xc0都是什麼意思。。。
C語言里0x表示後面的數是16進制數,16進制數可以包含0~9,a,b,c,d,e,f。它與10進制對應如:
0x80 = 8 * 16 + 0 = 128
0x0f = 0*16 + 15 = 15
0xf0 = 15 * 16 + 0 = 240
0xc0 = 12 * 16 + 0 = 192
C語言裡面乘法是星號*,如4*5
Ⅲ 單片機編程
在單片機匯編語言的保留字元中,符號$用於表示當前指令行所在地址。在本題目所給出的匯編子程序中,指令行DJNZ R4,$表示這是一條有條件的轉移指令,即R4寄存器中數值減1,如果寄存器值不等於0,轉到指定的地址執行程序。而此行指令所指定地址$,就是本行指令所在的地址,所以會重復執行本條指令,直到R4寄存器中內容減至0後,轉而執行下條指令。
此處之所以出現這樣的寫法,完全是為了湊延時吋間。從子程序給出的注釋信息可以看出,這是一段500ms的延時程序。在經典的51系列單片機中,執行一條DJNZ操作指令需要2個機器周期,一個機器周期又是12個系統時鍾周期。對於系統時鍾頻率11..0592MHz的單片機,執行一次DJNZ指令佔用的時間為2×12x1/11.0592,大約等於2us。因R4寄存器賦初值250,該重復操作所產生延時為2×250=500us。這500us延時又被嵌套在LOOP1和LOOP2兩重循環中,LOOP1循環200次,LOOP2循環5次,由此可以計算出子程序總的延時為500×200x5=500(ms)。