求单片机 外中断与定时器实验 的程序
根据外中断0引脚上的按键(接P1.0)触发信号,控制定时器0工作。具体要求为:首次按下按键时,启动定时器控制外接发光二极管闪烁(接P1.1),亮灭时间间隔为1秒。当再次按...
根据外中断0引脚上的按键(接P1.0)触发信号,控制定时器0工作。具体要求为:首次按下按键时,启动定时器控制外接发光二极管闪烁(接P1.1),亮灭时间间隔为1秒。当再次按下按键时,停止定时器工作,二极管停止闪烁。如此反复,不断循环。
展开
1个回答
展开全部
;假设时钟频率为12MHZ
WSTA EQU 20H
STA BIT WSTA.0 ;设置一个状态位,来判断按键的状态
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SW_INT ;按键中断子程序入口
ORG 0030H
MAIN: CLR STA
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
MLOOP: JNB STA,$ ;等待判断是否有按键中断
MOV R7,#20
ML01: JNB TF0,$ ;判断定时器0是否有中断
CLR TF0
MOV TL0,#0B0H ;定时初值重设
MOV TH0,#3CH
DJNZ R7,ML01 ;判断是否有1s
CPL P1.1 ;端口取反,LED闪烁
AJMP MLOOP
;======按键中断服务子程序=========
SW_INT: PUSH ACC
PUSH PSW
CPL STA ;对状态为取反
CPL TR0 ;对中断开关取反
POP PSW
POP ACC
RETI
希望能够帮助你。
WSTA EQU 20H
STA BIT WSTA.0 ;设置一个状态位,来判断按键的状态
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SW_INT ;按键中断子程序入口
ORG 0030H
MAIN: CLR STA
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
MLOOP: JNB STA,$ ;等待判断是否有按键中断
MOV R7,#20
ML01: JNB TF0,$ ;判断定时器0是否有中断
CLR TF0
MOV TL0,#0B0H ;定时初值重设
MOV TH0,#3CH
DJNZ R7,ML01 ;判断是否有1s
CPL P1.1 ;端口取反,LED闪烁
AJMP MLOOP
;======按键中断服务子程序=========
SW_INT: PUSH ACC
PUSH PSW
CPL STA ;对状态为取反
CPL TR0 ;对中断开关取反
POP PSW
POP ACC
RETI
希望能够帮助你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询