单片机定时器实现P3.4口1ms方波与P3.5口1分钟方波输出
单片机定时器实现P3.4口1ms方波与P3.5口1分钟方波输出
代码示例
ORG 0000H
SJMP START
ORG 001BH ;T1中断入口.
SJMP T1_INT
ORG 0030H
START:
MOV 50H,#20
MOV 51H,#30
JNB P1.0,LOOP1
JNB P1.1,LOOP2 ;按键扫描
AJMP START
LOOP1:
JNB P1.0,$ ;等待按键松开
MOV TMOD, #10H ;设置T1定时方式1
MOV TH1, #3CH ;送入初始值.
MOV TL1, #0B0H ;定时50MS
MOV IE, #10001000B ;开放总中断和T1中断.
SETB TR1 ;启动T1
LP: JB P1.0,LP ;等待按键再次被按下
JNB P1.0,WAIT ;按键被再次按下
WAIT: JNB P1.0,$ ;等待按键松开
CLR TR1 ;关闭定时器
JB P1.0,START ;返回主程序
T1_INT:
MOV TH1, #3CH ;重新送入初始值.
MOV TL1, #0B0H ;定时
DJNZ 50H, T1_INT
DJNZ 51H, T1_INT ;等待30s
CPL P3.5 ;输出方波
RETI ;中断返回
LOOP2: JNB P1.1,$ ;等待按键松开
LP1: ACALL DELAY_500us
CPL P3.4 ;取反,生成方波
JNB P1.1,BACK ;按键再次被按下,返回主程序
JB P1.1,LP1
BACK: JNB P1.1,$
JB P1.1,START
DELAY_500us:
MOV R0,#249
DJNZ R0,$
RET
END
代码说明
- 程序使用单片机晶振频率为12MHz。
- P1.0和P1.1为按键输入,用于控制程序流程。
- P3.4输出周期为1ms的方波,采用软件定时。
- P3.5输出周期为1分钟的方波,采用定时器T1中断实现。
修改中断周期
如果需要修改P3.5输出方波的周期,可以修改定时器T1的中断周期。
例如,要将中断周期修改为1分钟,可以将以下两行代码:
MOV TH1, #3CH ;定时50MS
MOV TL1, #0B0H ;定时50MS
改为:
MOV TH1, #0 ;定时1min
MOV TL1, #0 ;定时1min
注意: 将定时器周期设置为1分钟会导致定时器溢出,需要相应地调整代码逻辑。
总结
本文介绍了如何使用单片机定时器实现不同频率的方波输出,并提供了修改中断周期的代码示例。 读者可以根据实际需求修改代码,实现更多功能。
原文地址: https://www.cveoy.top/t/topic/fyvb 著作权归作者所有。请勿转载和采集!