微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机的中断,有些乱

51单片机的中断,有些乱

时间:11-24 来源:互联网 点击:
几个与中断有关的寄存器:

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。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top