51单片机 (4)中断系统

【转载请注明出处:http://blog.csdn.net/leytton/article/details/21577883

相关概念

  • 中断源:引起中断的事件
  • 中断请求:中断源向CPU提出处理的请求
  • 断点:发生中断时被打断程序的暂停点
  • 中断响应:CPU暂停现行程序而转为响应中断请求的过程
  • 中断处理程序:处理中断源的程序
  • 中断处理:CPU执行有关的中断处理程序
  • 中断返回:返回断点的过程

中断与子程序的区别

调用有点相似、但两者是不同的概念。

  • 源不同。中断是由外部中断源产生的、具有不可预测和随机性、比如抛异常。子程序是由主程序安排调用的。
  • 响应不同。中断系统需要保护断点和现场、子程序只需保存断点。
  • 功能不同。中断程序主要处理CPU外部异步事件、子程序调用是为主程序服务。

中断类型

  • 外部中断源:外部硬件资源产生。上下沿触发和高低电平触发。
  • 定时中断源:定时器/计数器溢出触发。
  • 串口中断源:串行通信时发送或接收完毕信息触发。

TCON中断标志

  • IE1:外部中断1请求标志位。
  • IT1:外部中断1触发方式选择位。当IT1=0,为低电平触发方式;当IT1=1,为下降沿触发方式。
  • IE0:外部中断0请求标志位。
  • IT0:外部中断0触发方式选择位。 当IT0=0,为低电平触发方式;当IT0=1,为下降沿触发方式。

SCON中断标志

  • RI:串行接口时接收信息完毕后、硬件自动置RI=1、CPU响应中断。注意不会自动清零置RI=0、需软件置RI=0
  • TI:串行接口发送信息完毕后、硬件自动置TI=1、CPU响应中断。注意不会自动清零置TI=0、需软件置TI=0

中断初始化的一般步骤

1、确定工作方式(即对TMOD赋值);
2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);
3、根据需要开放定时器/计数器的中断(直接对IE位赋值);
4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。

中断允许标志

  • EX1:外部中断1允许位;
  • EX0:外部中断0允许位; 
  • ET1:定时/计数器T1中断允许位; 
  • ET0:定时/计数器T0中断允许位;
  • ES:串行口中断允许位; 
  • EA: CPU中断允许(总允许)位。

中断优先级标志

0为低优先级、1为高优先级
  • PS:串行接口中断优先级设置位
  • PT1:定时器/计数器中断1中断优先级设置位
  • PT0:定时器/计数器中断0中断优先级设置位
  • PX1:外部中断1中断优先级设置位
  • PX0:外部中断0中断优先级设置位

51单片机中断号

  • 外部中断0(INT0),对应中断号是0, 中断入口地址0003H
  • 定时/计数器0(T1),对应中断号1 ,中断入口地址000BH
  • 外部中断1(INT1),中断号2 入口地址0013H
  • 定时/计数器1(T1)中断号3 入口地址001BH
  • 串行口(RI/TI)中断号4 入口地址0023H
  • 这五个是AT89S51的,52还多了下面这个
  • 定时/计数器2(T2)中断号5,入口地址002BH
  1. 函数名()interrupt 0 {} //对应外部中断0;
  2. 函数名()interrupt 1 {} //对应定时器/计数器0中断;
  3. 函数名()interrupt 2 {} //对应外部中断1;
  4. 函数名()interrupt 3 {} //对应定时器/计数器1中断;
  5. 函数名()interrupt 4 {} //对应串口中断;
一共5种中断,优先级自上向下;[摘自百度知道link]





posted @ 2014-03-20 02:46  Leytton  阅读(459)  评论(0编辑  收藏  举报