硬件电路:
由硬件电路可以看出通过p32引脚可以触发外部中断0。当外部为低电平或者负跳变(高电平跳变为低电平)时,即可启动外部中断0。
中断系统结构
由中断系统结构可以看出外部中断0需要配置it0、ie0、ex0、ea、(px0)位。下面我们来介绍一下要用到的寄存器。(中断允许寄存器ie和中断优先级寄存器ip不再赘述)
tcon-定时/计数器控制寄存器 (可位寻址)
tf1-定时计数器1溢出标志位
(为1溢出申请中断。中断方式硬件自动清0,查询方式需软件清0)
tr1-定时计数器1运行控制位
(若gate==1且int1为高电平,tr1为1运行;若gate==0,tr1为1运行;tr1需软件清0关闭)
tf0-定时计数器0溢出标志位(与tf1类似)
tr0-定时计数器0运行控制位(与tr1类似)
ie1-外部中断1请求标志
(为1表明正在向cpu申请中断,cpu转向中断服务程序后,硬件清0)
it1-外部中断1触发方式选择位
(为1为跳变沿触发方式(负跳变),为0为低电平触发方式)
ie0-外部中断0请求标志(与ie1类似)
it0-外部中断0触发方式选择位(与it1类似)
所以我们在使用外部中断0的时候需要用到tcon寄存器中ie0、it0位查询或设置触发方式,需要ie寄存器中ea、ex0位来打开总中断允许位和外部中断0允许位,在中断嵌套时需要ip寄存器来配置优先级。
程序代码:
使用外部中断0,使得在负跳变的触发下申请中断,中断响应使p1口的8位led全部点亮500ms。
在此开发板上存在独立键盘模块,其中s4一端连接p32/int0口,一端接地,按下后可以产生负跳变。
代码如下:
1/**************************** 2* 使用外部中断0点亮led * 3****************************/ 4#include 5#define uint unsigned int 6#define uchar unsigned char 7 8void delay(uint t_ms) //ms级延时 9{10 uchar y;11 while(t_ms--)12 for(y = 114; y > 0; y--);13}1415void init() //自定义函数-中断之前的准备16{17 it0 = 1; //设置申请中断信号为负跳变有效18 ea = 1; //开总中断开关19 ex0 = 1; //开外部中断0开关20}2122void main()23{24 init(); //中断初始化25 while(1) //死循环26 p1 = 0xff; //使led全灭27}2829void init0() interrupt 0 //外部中断030{31 p1 = 0; //将数码管全部点亮32 delay(500); //延时500ms33}当p32/int0还没有负跳变触发时,cpu一直执行while死循环,但是一旦有负跳变触发,cpu会根据interrupt 0进入中断服务程序使p1的8位led全部点亮并持续500ms。
代码亲测有效,请注意硬件电路与代码的对应关系。
OPPO A83预计月底上市:全面屏+面部识别999元起
中国广电网络2021年度工作会议在北京召开
智能电网和智能电力系统的区别
5G业务需求推动无线通信技术发展
比特币会是一股好的超体力量吗
51单片机外部中断0(INT0)讲解
2G/3G退网是移动通信网更新换代的必然选择
跑步适合戴哪种耳机不掉,适合跑步的无线蓝牙耳机
KNX 总线和主流 RS485对比
食品农药残留检测仪器的原理是什么
基于人工智能、云计算和大数据三位一体的互联互通,是否有望打破医疗数据孤岛
电动汽车现阶段面临的充电问题该如何解决
众筹、大数据、互联网思维、020详细解析
影响嵌入式系统PCB的信号完整性的原因及布线技巧
21世纪各超级大国为追求高超音速而做的事
特斯拉私有化成泡影,沙特的下一个目标又是谁呢?
八大无线通信标准混战物联网,谁将胜出?
无锡市人工智能与大数据产业知识产权运营服务平台正式启动
全方面解读2014款上汽荣威350底盘
SQL对象名无效的解决方法