51单片机定时、中断练习:用延时程序做闪烁灯
时间:01-10
来源:互联网
点击:
一定的公约数,我们就可以用软件定时器加以实现,如我要实现P10口所接灯按1S每次,而P11口所接灯按2S每次闪烁,怎么实现呢?对了我们用两个计数器,一个在它计到20时,取反P10,并清零,就如上面所示,另一个计到40取反P11,然后清0,不就行了吗?这部份的程序如下
ORG0000H
AJMPSTART
ORG000BH;定时器0的中断向量地址
AJMPTIME0;跳转到真正的定时器程序处
ORG30H
START:
MOVP1,#0FFH;关所灯
MOV30H,#00H;软件计数器预清0
MOVTMOD,#00000001B;定时/计数器0工作于方式1
MOVTH0,#3CH
MOVTL0,#0B0H;即数15536
SETBEA;开总中断允许
SETBET0;开定时/计数器0允许
SETBTR0;定时/计数器0开始运行
LOOP:AJMPLOOP;真正工作时,这里可写任意程序
TIME0:;定时器0的中断处理程序
PUSHACC
PUSHPSW;将PSW和ACC推入堆栈保护
INC30H
INC31H;两个计数器都加1
MOVA,30H
CJNEA,#20,T_NEXT;30H单元中的值到了20了吗?
T_L1:CPLP1.0;到了,取反P10
MOV30H,#0;清软件计数器
T_NEXT:
MOVA,31H
CJNEA,#40,T_RET;31h单元中的值到40了吗?
T_L2:
CPLP1.1
MOV31H,#0;到了,取反P11,清计数器,返回
T_RET:
MOVTH0,#15H
MOVTL0,#9FH;重置定时常数
POPPSW
POPACC
RETI
END
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)