认识80S51的中断

发布时间:2024-03-18  

中断(interrupt)是CPU在执行程序时,对系统发生的某个事件(程序自身或外界的原因)作出的一种反应,暂时放下目前所执行的程序,先去执行特定的程序,待完成特定的程序后,再返回执行刚才放下的程序。比如用户按下按钮,程序必须及时处理用户的按钮请求,然后再返回来继续执行。

图片

比如,老师正在讲课,而同学有疑问,随时都可以举手发问,老师将立即暂停讲课,为同学解惑,再继续刚才暂停的课程,这样的动作就是中断。

中断源

中断源(中断请求源):能够向CPU发出中断申请的部件。

8051提供5个中断服务(中断源):外部中断(INT0、INT1),定时器中断/计数器中断(TF0、TF1),串行口中断UART(RI/TI)。

8052提供6个中断服务(中断源),除了包含8051提供的5个中断外,还包括第三个定时器/计数器(Timer2)的中断。

MCS-51的中断

图片

图片

外部中断

外部中断INT0/INT1,CPU通过12引脚(即P3.2)及13脚(即P3.3)来接收外部中断的请求。

外部中断信号的采样方式可分为电平触发(低电平触发)及边缘触发(负边缘触发,即时钟信号由高转低时触发)两种。

若要采用电平触发,需要将TCON寄存器中的IT0(或IT1)设定为0,则只要P3.2引脚(或P3.3引脚)为低电平,即视为外部中断需求。

若要采用边缘触发需要将TCON寄存器中的IT0(或IT1)设定为1,则只需要P3.2引脚(或P3.3引脚)的信号由高电平转为低电平,即视为外部中断需求。

这些中断需求将反应在IE0(或IE1)里,若IE寄存器的EX0(或EX1)=1,且EA=1,CPU将进入该中断的服务。

至于中断的优先级寄存器(IP寄存器),只是安排多个中断发生时中断服务执行的顺序而已,若只有一个中断,将不会有所影响。

定时器/计数器中断

定时器/计数器中断有TF0和TF1两个(8052多一个:TF2)。若是定时器,CPU将对内部的时钟脉冲计数,而提出内部中断;若是计数器,CPU将对外部的脉冲计数,而提出内部中断。至于外部脉冲的输入,则是通过T0引脚(即14脚,也就是P3.4)及T1引脚(即15脚,也就是P3.5)

串行口中断

串行口中断(UART)有RI或TI两个,CPU通过RXD引脚(即10引脚,也就是P3.0)及TXD引脚(即11脚,也就是P3.1)要求接收(RI)中断需求或传送(TI)中断需求。

相关寄存器

在前面的[MCS-51中断系统图]中,我们可将中断启用寄存器(IE寄存器)看作中断功能的开关,中断优先级寄存器(IP寄存器)是判断各中断优先级的开关。而实际上,IE寄存器、IP寄存器、TCON寄存器都是一个8位的可寻址寄存器,如下图

图片

中断优先级

若没有在IP寄存器里设定优先级,则中断的优先级为:

INT0 >TF0>INT1>TF1>RI/TI。

若设定了优先级:

假设TF1=1,则中断优先级应为:

TF1>INT0 >TF0>INT1> RI/TI;

假设TF0 =1,INT1=1,则中断优先级应为:TF0>INT1>INT0 > TF1>RI/TI。

定时器/计数器控制寄存器TCON里,有部分设定与外部中断信号的采样有关。其中IT0与IT1分别为INT0与INT1的采样信号设置位:

若设置为1,则是采用下降沿触发信号;

若设置为0,则是采用低电平触发。

IE0与IE1是由CPU所操作的中断标志位,当中断发生时将被设定为1,结束中断时,恢复为0。

中断的应用

中断的设定包括开启中断开关(IE寄存器的设定)、中断优先级的设定(IP寄存器的设定)、中断信号的设定(TCON寄存器的设定)等。


在程序中设定中断命令:


IE=0x81  //即1000 0001,对照前面IE寄存器图片可得EA=1,EX0=1,即启用INT0中断

IE=0x84  //启用INT1中断

IE=0x85  //启动INT0、INT1中断

IP=0x04  //设置INT1中断具有最高优先级

TCON=0x8  //设定INT1采用下降沿触发

中断程序格式:void +函数名+interrupt +数字0~4,其中0—4分别表示


0:外部中断INT0


1:定时器/计数器TF0


2:外部中断INT1


3:定时器/计数器TF1


4:串行口TI/RI

如:void my_INT (void) interrupt 0


{


......//中断子程序逻辑代码


}


举例:12引脚(即P3.2)接入按钮,当在主程序运行过程中,按下这个按钮,程序就会进入中断子程序,执行子程序的逻辑,中断子程序执行完,再进入主程序继续执行。


//主程序:

void main()

{

   IE=0x81 // 启用INT0中断

   TCON=0x01  //设置INT0 为下降沿触发

   ......

   While(1)

   {

     ......

   }

}

//中断子程序 使用INT0外部中断

void int0_test(void) interrupt 0

{

  ......//中断程序逻辑代码

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    80c51是几位单片机 80c51单片机有几个中断源;  80c51是几位单片机   80C51是一种8位微处理器,也被称为8051,由Intel公司推出。它是最早的商用单片机之一,由于......
    8051单片机是几位机_8051单片机共有几个中断源;  8051单片机   8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,由英特尔公司于1981年制造。INTEL公司......
    浅谈51单片机的中断控制;51系列单片机有5个中断源,2个优先级,可以实现二级中断服务嵌套结构。 现在很多兼容51单片机已经有4个优先级(或更多)和更多的中断源了。 想要研究中断的嵌套,应该从中断......
    5个中断源(2个外中断、2个定时/计数器中断和1个串行中断)。 (8)时钟电路:8051单片机有时钟电路,只需外接晶振和震荡电容,用于产生时序脉冲供整个单片机运行。 5、MCS-51系列单片机......
    际上在逻辑上我们是一个,所以我们51单片机有四个物理存储空间,但是相当于是三个逻辑存储空间,它们最大的扩展容量都不能超过64K,这个是由它的地址总线决定的,这个大家一定要理解。 接下来看ROM当中的几个......
    AT89S51和AT89S52这两种类型的单片机有什么区别?;AT89S51 AT89S51是一个低功耗、高性能的CMOS 8位单片机,片内含4KB的可反复擦写1000次的Flash只读......
    根口线还具有第二种功能 ,P3口的各位如不设定为第二功能则自动处于第一功能。P3的第二功能涉及到串行口 、外部中断、定时器,与特殊功能寄存器有关。 四、89C51单片机有几个中断源?它们的中断......
    、P3.7,共7根 聪明的你一定会发现:标准51单片机有32根可编程I/O口线,89C2051精简掉P0、P2口16根I/O线后,应该还有16根I/O口线,现在只有15根,另一根跑那里去了呢?!前面......
    51单片机定时器中断_51单片机中断系统_51单片机扩展中断的四种方法;  中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断......
    STM32单片机外部中断配置讲解;01单片机外部中断简介所谓外部中断,就是通过外部信号所引起的中断,如单片机引脚上的电平变化(高电平、低电平)、边沿变化(上升沿、下降沿)等。51单片机有5个中断......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>