引脚低电平信号产生的中断服务子-starter使用手册
ORG 0003H ;P3.2引脚信号中断入口
AJMP INTERRUPT0 ;跳转到标号INTERRUPT0处(P3.2中断服务子程序)
ORG 0030H ;初始化程序从30H开始
;---初始化----
START:MOV SP, #60H ;给堆栈指针赋值60H
MOV P0, #0FFH ;让P0口输出高电平,小灯熄灭
SETB IT0 ;设置P3.2引脚下降沿信号可以引发中断
SETB EX0 ;开外中断0,即允许P3.2信号中断CPU
SETB EA ;开总中断允许
;---主程序----
MAIN:SJMP MAIN ;程序跳转到MAIN处
;-----P3.2脚引发的中断服务子程序----
INTERRUPT0:CPL P0.7 ;取反P0.7口状态
RETI ;中断子程序结束返回到主程序
END ;程序结束
从上面程序的实验现象可以知道只有P3.2引脚上的下降沿这一刻能触发中断,而P3.2引脚输入的信号低电平分别至少要持续12个振荡周期。我们来看一下如何通过低电平信号触发控制两个LED闪烁。
**硬件电路设计**如图8-4所示,给P3.2和P3.3引脚连接到GND上,用来给这两个引脚提供低电平信号;两个LED小灯分别接在P0.0和P0.7引脚。
**软件设计思想**如图8-5所示,程序包括四部分,分别是初始化程序,主程序和两个中断服务子程序。初始化程序负责对P3.2和P3.3引脚能否引发中断进行授权及以什么信号引发中断的进行设置,此外还要设置堆栈指针及LED小灯的初始亮灭状态等;主程序中没有任何事件可做,所以程序只需要停止在一个地方即可;P3.2引脚低电平信号产生的中断服务子程序负责取反P0.0引脚状态,P3.3引脚低电平信号产生的中断服务子程序负责取反P0.7引脚状态。引脚一直为高电平或一直为低电平时不会引发中断。需要注意的是,信号的频率不能太高,如果太高,CPU就“反应”不过来了,因此要求产生下降沿的高电平和低电平信号要有一定的时间间隔。
想要更深入了解如何通过外部中断控制LED的翻转,可以参考[中断控制LED](https://www.dude6.com/q/a/7800604.html)的详细教程。如果你对单片机软件中断和硬件中断的区别感兴趣,不妨看看[单片机软件中断和硬件中断的区别](https://www.dude6.com/q/a/5662219.html)。如果你使用ARM进行开发,可以参考[ARM的中断控制LED](https://www.dude6.com/q/a/306403.html)的资料获取更多相关信息。
在掌握了这些知识之后,你就可以开始设计自己的硬件和软件系统,通过外部中断控制LED,创造出令人惊叹的效果!什么样的项目会是你的下一个挑战呢?不妨开始你的创意之旅吧!
下载地址
用户评论