C51编程12-中断篇(中断原理2)

中断可以用下面的例子理解

    工程师A在自己的位置做着自己的工作(写代码),工程师B有个问题需要请教工程师A,于是工程师B就会跑过来跟工程A请教。这时工程师A的写代码的工作会被打断,开始回答工程B的问题,解答完问题后,工程师A又开始愉快的写代码。从工程师B打断工程师A,到工程师A继续写代码这者整个过程叫中断。

    1)工程师B的问题,称为中断源

    2)工程师A停止当前的工作,准备解答称为:中断响应;

    3)工程师A解答问题的过程称为:中断服务程序;

    4)工程师A解答完继续回到写代码的状态称为:中断返回。

 

   中断系统

    引起MCS-51中断的中断源有几种呢?从以下的中断系统中可以看到有5种中断请求源,它们分别是EX0、ET0、EX1、ET1、ES 对应着单片机的P3^0~P3^5引脚,相关的寄存器有中断允许寄存器IE、中断优先级控制寄存器IP、定时器/计数器控制寄存器TCON、串行口控制寄存器SCON 。 

 

 

IE寄存器:

    寄存器地址为A8H,单片机复位后数值为00H;寄存器里面有8位,可以被位寻址

    当需要某中断源需要进入中断服务,需要开总中断将EA位置1,并且将对应的中断源置1(如果是串口需要将ES置1;如果是外部中断0需要EX0置1)

 

 

 IP寄存器

    寄存器地址为B8H,单片机复位后数值为00H;寄存器里面有8位,可以被位寻址

        IP寄存器将对应的中断源置1,则该中断源被设置为高优先级。

在中断系统中,不管高优先中断等级或者是低优先级中断等级,在它们里面都是按照一定的优先级进行排列的进行响应的。这种优先级称之为自然优先级。详细可以参考上面的中断系统图

    自然优先级从高到低:外部中断0->定时器/计数器T0中断->外部中断1->定时器/计数器T1中断->串行中断。

 

 TCON寄存器

    寄存器地址为88H,单片机复位后数值为00H;寄存器里面有8位,可以被位寻址

    外部中断可以设置两种中断方式(低电平或负跳变),当检测到有中断(低电平或负跳变),中断标志位被置1,从而判断中断优先级,进而中断服务处理。

    定时器/计数器在设定计数值后,开机进行计数。当计数溢出时,会将TF0或者TF1置1。

 

    从上面可以知道,除外部中断标志0外,其他的都会由硬件自动清零。   

 

注:

    TCON还有T0与TR1两位,这两位是控制定时器/计数器开始计数,在后面的定时器中会详细说明。

    TR1:为1是定时器T1开始计数;0时不计数。

    TR0:为1是定时器T0开始计数;0时不计数。

 

 

 

 SCON寄存器

    寄存器地址为98H,单片机复位后数值为00H;寄存器里面有8位,可以被位寻址

 

       在串行通讯中,串行发送与接收完一帧数据后,硬件将标志位置1,向CPU申请中断,CPU响应中断是,并不能直接标志位置0,需要中断服务程序将它们置0。

 

    TI与RI接到ES中断源上,因此它们是同一个中断源。

    

 


中断向量

    为了响应不同的中断,将中断服务函数的入口地址放在某个地址上,我们将这个地址成为中断向量。

 

    在C51中编译器中,增加了一个扩展字 interrupt,它是一个函数的选项,当函数添加上这个选项定义成中断函数。中断函数的一般形式如下:

    void 函数名() [interrupt n] [using n]

       interrupt后面的n为中断号

       using 后面的n为工作寄存器组(8051中有4组寄存器组->0~3组)

 

总结:

    1)C51中有5个中断源(EX0、ET0、EX1、ET1、ES),两个优先等级,其中TX与RX共用一个中断源ES;

    2)相关的寄存器有中断允许寄存器IE、中断优先级控制寄存器IP、定时器/计数器控制寄存器TCON、串行口控制寄存器SCON 。

    3)C51对函数进行扩展添加interrput,该关键字用于将函数定义成中断服务函数,对应着中断向量里面内容。

 

---------------------------------------------------------

如果觉得文章还不错,那就扫码关注吧!

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颖川初尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值