51单片机之

您所在的位置:网站首页 80c51单片机外部中断源的中断请求方法可以是 51单片机之

51单片机之

2024-07-03 05:46| 来源: 网络整理| 查看: 265

寄存器是干什么的?怎么配置它?配置完寄存器后,有什么作用呢? 寄存器是中央处理器内的组成部分。它是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。寄存器可以用来暂存指令、暂存数据、暂存地址。换而言之,我们配置寄存器,便是给寄存器中赋予一定的值,而这些值又要与我们的目的想对应,这样它便会有相应的作用。 例如,芯片的资料规定,当给芯片的 A 寄存器赋“0x11”时,它会出现 B 现象;赋“0x77”时,它会出现 C 现象。那么当我们目的是完成 B 现象时,我们就只需要配置 A 寄存器为“0x11”即可。 虽说看起来很简单,并且去完成目的时的流程并非这么容易。但是,实实在在而言,这些就是控制寄存器的根本! 这里以外部中断0(INT0)为例,使得外部中断0每发生一次,最后一位数码管的数值加1。 前一篇博文已经提到,要实现外部中断0,就必须要配置好两个寄存器IP、IE。而对于中断优先级寄存器IP,当我们使用默认优先级时(上篇博文的优先级表格所述),就不必要去配置IP。 接下来附上IE寄存器的每一位的作用: 这里写图片描述 首先,中断允许位寄存器 IE 是可位寻址的,意思是说,我们可以单独的对D0~D7每一位进行操作,而不需要对 IE 整个赋值(为什么可以这样,因为keil的头文件“reg52.h”已经对 IE 的地址进行了定义)。 在这里说明一点,对于51单片机的 I/O 口而言,上电时,默认输出为高电平。对于其寄存器而言,上电是,默认为0。可见,当要完成外部中断0的配置时,我们只需要配置中的EX0、EA,当然还有外部中断0的触发方式(产生方式),这里就要看到中断及控制寄存器TCON,其成员及意义如下: 这里写图片描述 这里写图片描述 可见外部中断0和外部中断1的设置方式雷同,跟据上表所述,我们通过设置IT0来设置外部中断0的触发方式(分别为:低电平触发、下降沿触发),其中 IE 位由硬件自身控制,不需要软件操作。

实例的核心代码如下:

/*数码管配置完成*/ void main() { IT0 = 1; //设置为下降沿触发 EX0 = 1; //外部中断0中断允许位 EA = 1; while(1); //等待外部中断0发生 { display(); } } void INT0() interrupt 0 //中断服务函数的书写格式 { if( IE == 1) //产生了外部中断,IE 自动置为1 { dspbuf[0]++; } }

在上面可以看到配置外部中断0相关的寄存器时,我们先打开EX0=1,允许外部中断产生,再EA = 1,打开总中断,这样就配置好了能产生外部中断0的先决条件,通过IT0 来配置中断的触发方式。在中断服务函数中,函数名“INT0”可自由编写,并且中单服务函数不需要声明,后面所加的“interrupt X”X为该中断对应的C语言序号。 值得注意的是,对于51单片机而言,上电之后,所有寄存器的值默认为“0”,所有 I/O 口的值默认为“1”。 通过外部中断的理解,很方便的能引出下一节的定时器/计数器中断。

未完待续……



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3