码迷,mamicode.com
首页 > 其他好文 > 详细

单片机的中断系统

时间:2017-05-06 19:54:39      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:功能   名称   特殊功能   软件   寄存器   主程序   使用   方式   断点   

中断概念


 

正常的工作过程被外部的事件打断了,EX 你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。

中断源

引起中断的事件称之为中断源,51中一共有5五个:两个外部中断,两个计数/定时器中断,一个串行口中断。

中断优先级与嵌套

  • 当两个中断同时产生时,就要考虑优先级。
  • 当一个中断已发生,又一个中断产生了,又要考虑另一种嵌套优先级。

中断的响应过程

  1. 保护断点:保存下面将要执行的指令地址送人堆栈,以便中断处理完之后回到原来地方继续执行
  2. 寻找中断入口:根据5个不一样的中断源所产生的中断,到5个不一样的入口地址找处理中断的程序
  3. 执行中断处理程序
  4. 中断返回:执行完中断指令后,就从中断处返回到主程序

51中断系统的结构


 

5个中断源的符号、名称及产生:

  • INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
  • INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
  • T0:定时器/计数器0中断,由T0计满回零引起。
  • T1:定时器/计数器0中断,由T1计满回零引起。
  • TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。

       

                              整个中断系统结构框图

中断请求源 

  • 外部:IT(0/1)为INT(0/1)触发方式控制位,可由软件置位和复位,IT(0/1)=0,INT0为低电平触发方式 IT(0/1)=1,INT0为负跳变触发方式。IE(0/1):INT(0/1)中断请求标志位。当有外部的中断请求时,自动置1,在CPU响应中断后,自动清0.
  • 内部:TF(0/1)为定时计数器T(0/1)的溢出中断标记,自动置位清零。T1R1串行口发送、接收中断。

中断允许寄存器IE

        EA是总开关,其他的是与之对应的中断源的中断允许。

中断优先级寄存器IP

        单片机采用了自然优先级和人工设置

        五个中断源的自然优先级与中断服务入口地址:(由高到低)

  • 外中断0:0003H
  • 定时器0:000BH
  • 外中断1:0013H
  • 定时器1:001BH
  • 串行口:0023H。

        人工设置只有两级,处于同一级由自然优先顺序确定,IP置1为高级否则低级。

 

中断系统的控制寄存器


 

 中断允许寄存器 IE                  

在特殊功能寄存器中,字节首地址为A8H,用来打开或关断各中断源的中断请求。

                

中断优先寄存器 IP

在特殊功能寄存器中,字节第一个单元地址为B8H,用来设定各个中断源优先级

               

串行端口的控制寄存器 scon

字节第一地址是98H,用以设置串行端口的工作方式、接收/发送的运行状态、数据的特征、波特率的大小,以及作为中断标志等。

              

 

 

  • 这些位功能都是方式2、3的
  • T1/R1在使用前必须用软件清零

电源控制寄存器 PCON

字节地址为87H,无位地址

                  (方式123时的波特率)

中断的响应过程


 

CPU在每一个周期扫描每一个中断源置位并采样,如果没被下述条件阻止,将在下一机器周期响应最高的中断请求

  1. CPU正在处理同级或更高级的中断
  2. 当前周期不是所执行指令未的最后周期
  3. 正在执行RETI或是访问IE、IP指令,至少需要再执行一条指令才能响应新的中断请求

处理中断程序从该地址开始一直到RETI结束,由于各个中断入口地址相隔甚近,不便于存放各个较长的中断服务程序,故通常在中断入口地址开始的二三个单元中,安排一条转移类指令,以转入到安排在那儿的中断服务程序。

单片机的中断系统

标签:功能   名称   特殊功能   软件   寄存器   主程序   使用   方式   断点   

原文地址:http://www.cnblogs.com/xieweikai/p/6817768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!