|
使用定时器0定时20ms,循环5次,移位控制led亮灭
但是有个BUG,速度比1s快多了,也就是那个5次没起作用,求大神解惑
-
- ;流水灯例程,IO/定时器/
- ORG 0000H
- RESET: LJMP START
- ORG 000BH
- LJMP ITOP ;T0中断服务函数
- ORG 1000H
-
- START:
- MOV SP,#06H ;设置堆栈指针
- MOV TMOD,#01H ;设置定时器模式,00H13位,01H16位,02H自动重装8位,03H(T0)两个8位
- ;GATE|C/T|M1|M0,GATE|C/T|M1|M0
- ;装入初值 ,要求设置定时20ms.
- ;X = M-((Fosc*20*10(-3次))/12) M=2的16次 X = 45536 1011 0001 1110 0000B
- MOV TL0,#0E0H
- MOV TH0,#0B1H
-
- ;定时器控制运行
- SETB TR0 ;将t0运行控制位置位
- ;中断运行控制
- SETB EA ;总中断开关
- SETB ET0 ;定时器中断开关置位
- MOV R5,#5
- MOV A,#01H
- MOV P1,A
- MAIN: AJMP MAIN ;动态循环
- DELAYGO:
- RETI
- ITOP:
- MOV TL0,#0E0H
- MOV TH0,#0B1H
-
- DJNZ R5,DELAYGO;如果未满循环5次,就继续进行定时中断
- ;当5次循环满足时,即定时1S
- LCALL LEDRUN
- MOV R5,#5
- RETI
- LEDRUN:
- RL A
- MOV P1,A
- RET
- END
-
-
-
复制代码
里面有源代码和仿真件
|
|