當前位置:編程學習大全網 - 編程語言 - 簡單 單片機編程!~!~~~

簡單 單片機編程!~!~~~

1.

mov a,#0 ;將A清零

clr c ;清進位標誌位

mov a,r1 ;取低字節數據

add a,r7 ;低字節數據相加

mov 60h,a ;存低位結果

mov a,r0 ;取高位字字

addc a,r6 ;未高位和並加上低位的進位

mov 61h,a ;存高位結果

2.80C52 內部12分頻,故將 6M/12 = 0.5M 得到頻率,然後將頻率換為

壹個機器周期的時間 T = 1/ (0.5M) = 2 * e -6

即為2us,壹個機器周期的時間 為2 us;

DELAY:MOV R7,#0F6H ; 該指令執行為 2 T 設標號為 A指令

LP: MOV R6,#0FAH ;該指令執行為 2 T 設標號為 B指令

DJNZ R6,$ ;該指令執行為 2 T 設標號為 C指令

DJNZ R7,LP ;該指令執行為 2 T 設標號為 D指令

RET

B指令將 250 傳給 R6, C 指令中 的 "$" 表示本條指令的地址,所以壹直在執行 C指令,

該所用時間 為 2T ,***為 250次, 250* 2T為C指令所執行的時間 ,

D指令中R7為 246,他會執行 B ,C ,D 三條指令,所以,每次要 2T + 250* 2T +2T 的時間 ,

***為 246 *( 2T + 250* 2T +2T ) 再加上A指令的2T 時間 所以***為:

246 *( 2T + 250* 2T +2T ) + 2T = 247972 us 在單片機中記為 250 ms的延時

3.

個人感覺 題目有些問題,51在做16位除法的時候 比較復雜壹點

雖然可以做出來,我簡單的將其最8位處理

mov r0,#50h

mov r7,#10

mov a,#0

loop: add a,@r0

inc r0

djnz r7,loop

mov b ,#10

div ab

mov 5ah,a

4.

MOV R6,#0FAH

mov r7,#10

lp: DJNZ R6,$ ; 1 ms延時

DJNZ R7,LP ; 10 次

RET

約為,10ms,壹般情況,十幾us的偏差是正常的。

註意,這是在妳的剛說的 晶振6MHZ 的前提下的。

  • 上一篇:下列哪個是微軟的產品
  • 下一篇:職高有什麽專業可以選?
  • copyright 2024編程學習大全網