参考文章1
参考文章2(中断寄存器部分)
89C51的中断系统有5个中断源:外部中断0、定时器0、外部中断1、定时器1、串口中断(优先级依次递减);2个中断优先级:高优先级、低优先级。
-
中断相关寄存器
- 中断寄存器IE
EA:中断总控制位。EA=1,CPU开放中断;EA=0,CPU禁止所有中断。
ES:串行口中断控制位。ES=1,允许串行口中断;ES=0,屏蔽串行口中断。
ET1:定时/计数器T1中断控制位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
EX1:外中断1中断控制位,EX1=1,允许外中断1中断;EX1=0,禁止外中断1中断。
ET0:定时/计数器T0中断控制位。ET0=1,允许T0中断;ET0=0,禁止T0中断。
EX0:外中断0中断控制位,EX0=1,允许外中断0中断;EX0=0,禁止外中断0中断。
-
中断优先级控制寄存器IP
PS:串行口中断口优先级控制位。PS=1,串行口中断声明为高优先级中断;PS=0,串行口定义为低优先级中断。
PT1:定时器1优先级控制位。PT1=1,声明定时器1为高优先级中断;PT1=0定义定时器1为低优先级中断。
PX1:外中断1优先级控制位。PT1=1,声明外中断1为高优先级中断;PX1=0,定义外中断1为低优先级中断。
PT0:定时器0优先级控制位。PT1=1,声明定时器0为高优先级中断;PT1=0,定义定时器0为低优先级中断。
PX0:外中断0优先级控制位。PT1=1,声明外中断0为高优先级中断;PX1=0,定义外中断0为低优先级中断。 -
定时器控制寄存器TCON
其中,TF1、TR1、TF0和TR0位用于控制定时器/计数器;IE1、IT1、IE0和IT0位用于控制中断系统。
TF1:定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。
TR1:定时器1运行控制位。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。由软件清“0”关闭定时器1。
TF0:定时器0溢出标志。其功能及操作情况同TF1。
TR0:定时器0运行控制位。其功能及操作情况同TR1。
IE1:外部边沿触发中断1请求标志。其功能和操作类似于TF0。
IT1:外部中断1类型控制位。通过软件设置或清除,用于控制外中断的触发信号类型。IT1=1,边沿触发。IT=0是电平触发。
IE0:外部边沿触发中断0请求标志。其功能和操作类似于IE1。
IT0:外部中断0类型控制位。通过软件设置或清除,用于控制外中断的触发信号类型。其功能和操作类似于IE1。 -
定时器控制寄存器TMOD
GATE :定时操作开关控制位。若GATE=1,只有当INT0或INT1引脚为高电平,并且TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。
C/T :定时器或计数器功能的选择位。C/T=1时为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。
M1 、M0:T0、T1工作模式选择位。
-
串行通信控制寄存器SCON
SM0、SM1:串行口工作方式控制位。
SM2:多机通信控制位。 多机通信工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃;当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。
REN:允许接收位。REN用于控制数据接收的允许和禁止。REN=1时,允许接收;REN=0时,禁止接收。
TB8:发送接收数据位8。在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
RB8:接收数据位8。在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
TI:发送中断标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。
RI:接收中断标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。
- 中断寄存器IE
- 中断源
- 中断函数
void int0 () interrupt 0 using 1 //int0为函数名称,() interrupt为固定格式,0位中断号,using 1是指函数具体使用哪一组寄存器(可不写)。
{
do anything that you want
}