使用AT89S51單片機,在原有的基礎(chǔ)改動,將LED燈亮4s熄2s。謝謝。用定時器。
(程序?qū)懺诖鸢钢校颂幝?――做而論道注)
原來的程序(局部)如下:
LOOP:
MOV R0, #0AH ;R0=10
CJNE R0, #00H, $ ;比較R0是否為0,原地轉(zhuǎn)移
;R0在中斷程序中,100ms減1次1。
;1s鐘后,將為0。
CPL LED ;取反,LED亮滅
JMP LOOP
經(jīng)過分析可以看出,樓主給出的程序是實現(xiàn)LED燈亮1s熄1s的。
按照題目要求,修改后的程序如下:
;----------------------
LED BIT P1.0
ORG 0000H
LJMP START
ORG 000BH
LJMP T0_INT
ORG 0030H
;----------------------
START: ;初始化
MOV SP, #60H
MOV TMOD, #01H ;定時器0方式1定時
MOV TH0, #03CH ;50ms@12MHz
MOV TL0, #0B0H
SETB TR0
SETB ET0
SETB EA ;開中斷,完成初始化
;----------------------
LOOP: ;主循環(huán)
MOV R0, #40 ;R0 = 40
CJNE R0, #0, $ ;中斷40次(即2s),R0才為0
CLR LED ;LED發(fā)光
;
MOV R0, #80
CJNE R0, #0, $ ;中斷80次,R0才為0
SETB LED ;LED熄滅
LJMP LOOP ;轉(zhuǎn)回去
;----------------------
T0_INT: ;T0的中斷程序,100ms執(zhí)行一次
MOV TL0, #0B0H
MOV TH0, #03CH ;50ms@12MHz
DEC R0 ;R0減一
RETI
;----------------------
END
;---------------------------------------------------