单片机 > 单片机程序设计 > 详情

51单片机的中断,有些乱

发布时间:2020-09-03 发布时间:
|
几个与中断有关的寄存器:
 
1. TCON:中断标志寄存器,内容为
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
 
2. SCON:串行口控制寄存器,内容为
SM0 SM1 SM2 REN TB8 RB8 TI RI
TI:发送数据前应复位,发完一帧数据时,由硬件置位。
RI:接收中断标志,与TI类似
中断响应后,RI和TI不能自动清除,须由软件来清除。
IT0,1:外部中断的触发方式,=1时为下降沿有效
IE0,1:外部中断中断请求标志位
TF0,1:定时器溢出中断请求
 
3. IP:中断优先级控制寄存器
自然优先级的排列顺序(由高到低):外部中断0(INT0)、定时器T0、外部中断1(INT1)、定时器T1、串口中断。
寄存器内容(D7、D6未用):PT2 PS PT1 PX1 PT0 PX0
PT2:定时器T2(52系列单片机才有T2)的优先级控制位,=1时,设定T2为高优先级,=0时为低优先级;
PS:串口的优先级控制位;
PT1:定时器T1的优先级控制位;
PX1:外部中断1的优先级控制位;
PT0:定时器T0的;
PX0:外部中断0的。
如果同时有几个设定为高优先级的,则按照自解优先级的顺序排队。
 
4. IE:中断允许控制寄存器
其内容:EA 空 ET2 ES ET1 EX1 ET0 EX0
EA: CPU中断的总允许位,=1时开放中断,=0时屏蔽所有中断,即俗称的关中断;
ES: 串口中断允许位,=1时允许;
ET1:T1的
EX1:外部中断1的
ET0:T0的
EX0:外部中断0的
 
采用中断处理的程序结构:
main()
  ....
  设置 中断允许控制寄器IE
  设置 中断优先级寄存器IP
  如果是外部中断源,还要设置中断请求的触发方式IT0或IT1(在TCON中),以决定采用电平触发还是跳变触发
  ....
 
中断服务程序(对照前面的定时器处理程序就明白了。。。)
  函数类型 函数名(参数表) [interrupt 中断号] [using N]
  {
      ....
  }
中断号可以取值0-31(C51编译器允许32个中断,0-4为51的标准中断源,0外部中断0,1是定时器0,2是外部中断1,3是
 
定时器1,4是串口中断)using后的N表示第N组寄存器(8051有4组寄存器)。以下是有关寄存器组的问题:
1. 使用using指定与主函数不同的寄存器组(主函数一般使用寄存器组0);
2. 中断优先级相同的中断处理函数(ISR)可用using指定相同的寄存器组(因为它们不会同时被调用),但优先级不
 
同的ISR必须使用不同的寄存器组,在ISR中被调用的函数也要使用using指定与中断函数相同的寄存器组;
3. 如果不用using,C51默认选择寄存器组0,这意味着程序将切换寄存器组,而要使用大量的PUSH和POP操作,指定寄
 
存器组的结果是节省了以上保护现场的操作,可以节省RAM空间及减少MCU的消耗;但这样容易引起错误,一定要注意
 
,特别是在程序中进行直接内存访问时。
4. 可以这样设定:主程序使用bank 0,低中断优先级的所有中断使用bank 1,高中断优先级的所有中断使用bank 2。
关键字:51单片机 中断 电平触发 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM JTAG 调试原理