功能说明:
定时器的应用(广告灯的左移右移,延时时间使用TIMER0在MODE0下工作)
开始时P1.0亮,延时0.2秒后左移于P1.1亮,如此左移7次后至P1.7亮,再延时右移至P1.6亮,如此右移7次后至P1.0亮.
2) 硬件电路
3) 本实验主程序如下.
ORG 0030H ;起始地址 | |
MOV TMOD,#00H | ;设定TIMER0工作在MODE0 |
START:CLR C | ;C=0 |
MOV A,#0FFH | ;ACC=FFH,左移初值 |
MOV R2,#08 | ;R2=08,设左移8次 |
LOOP: RLC A | ;左移一位 |
MOV P1,A | ;输出至P1口 |
MOV R3,#100 | ;0.2秒 |
CALL DELAY | ;2000微秒 |
DJNZ R2,LOOP | ;左移8次 |
MOV R2,#07 | ;R2=07,设右移7次 |
LOOP1:RRC A | ;右移一位 |
MOV P1,A | ;输出至P1 |
MOV R3,#100 | ;0.2秒 |
CALL DELAY | ;2000微秒 |
DJNZ R2,LOOP1 | ;右移7次 |
JMP START | |
DELAY:SETB TR0 | ;启动TEMER0开如计时 |
AGAIN:MOV TL0,#(8192-2000) | ;设定TL0的值 |
MOV TH0,#(8192-2000) | ;设定TH0的值 |
LOOP2:JBC TF0,LOOP3 | ;TF0是否为1,是则跳至LOOP3,并清除TF0 |
JMP LOOP2 | ;不是则跳到LOOP2 |
LOOP3: | |
DJNZ R3,AGAIN | ;R3是否为0?不是则跳到AGAIN |
CLR TR0 | ;是则停止TIMR0计数 |
RET | |
END |