單片機(jī)編程,輸出周期為2S和0.5S的方波
在80C51單片機(jī)中,已知時(shí)鐘頻率為 6MHz,請(qǐng)編程使 P1.0 和 P1.1 分別輸出周期為 2s 和 0.5s 的方波。
求答案,過程。
;=====================================
最佳答案:
;-------------------------------------
;下列程序,經(jīng)過編譯、仿真,符合要求:
;-------------------------------------
ORG 0000H
SJMP START
ORG 000BH
SJMP T0_INT
;-------------------------------------
START:
MOV TMOD, #01H
MOV TH0, #9EH
MOV TL0, #58H ;50ms@6MHz
SETB TR0
SETB ET0
SETB EA
MOV R2, #5
MOV A, #0
CLR P1.0
CLR P1.1
SJMP $ ;原地轉(zhuǎn)移,假死,等待中斷
;-------------------------------------
T0_INT: ;50ms執(zhí)行一次
MOV TH0, #9EH ;重新賦初始值
MOV TL0, #58H ;50ms@6MHz
DJNZ R2, T0_END ;不到5次,轉(zhuǎn)到退出
; ;下列指令都是每隔250ms執(zhí)行一次
MOV R2, #5 ;重新設(shè)置
INC A ;計(jì)數(shù)器加一
MOV C, ACC.0
MOV P1.1, C ;P1.1,每隔250ms,變化一次
MOV C, ACC.2
MOV P1.0, C ;P1.0,每隔1s,變化一次
T0_END:
RETI
;-------------------------------------
END
;-------------------------------------
;-------------------------------------
后記:
題目要求輸出兩個(gè)波形的周期是個(gè)4倍的關(guān)系,這一點(diǎn),被做而論道發(fā)現(xiàn)并巧妙的利用了。
程序中只使用了一個(gè)計(jì)數(shù)器ACC,它的相鄰兩位之間的變化時(shí)間,是呈2倍的關(guān)系;
而其第0位和第2位,就是4倍的關(guān)系,把它們輸出,即可得到所需的周期波形。
呵呵,做而論道的程序,所使用的資源,是最低的;執(zhí)行效率也最高,不知網(wǎng)友們認(rèn)為如何?