中断源寄存器
中断源寄存器包括定时器/计数器控制寄存器TCON和串行通信口控制寄存器SCON。
1.定时器/计数器控制寄存器TCON
定时器/计数器控制寄存器 TCON 的功能主要是接收外部中断源( INT0、INT1 )和定时器/计数器(T0、T1)送来的中断请求信号。其字节地址是88H,它有8位,每位均可进行位寻址,各位的地址和名称如下:

![120a26762c58f90ddf563bde91c5edfd.png](https://i-blog.csdnimg.cn/blog_migrate/c0204e01d5de055b9abc0e7beeb51ffc.jpeg)
下面是寄存器TCON各位功能的说明。
IE0和IE1:它们分别是外部中断0()和外部中断1()的中断请求标志位。当外部有中断请求信号输入单片机的引脚(即P3.2引脚)或引脚(即P3.3引脚)时,寄存器TCON的IE0和IE1位会被置“1”。
IT0和IT1:它们分别是外部中断0和外部中断1的输入方式控制位。以外部中断0()为例,当IT0=0时,开关置“1”处,端输入的低电平经非门后会将定时器/计数器控制寄存器TCON的IE0位置“1”;当IT1=1时,开关置“2”处,端只有输入信号下降沿时才能将IE0位置“1”,才表示有中断请求。
TF0和TF1:它们分别是定时器/计数器0和定时器/计数器1的中断请求标志。当定时器/计数器工作产生溢出时,会将TF0或TF1位置“1”,表示定时器/计数器有中断请求。
TR0和TR1:它们分别是定时器/计数器0和定时器/计数器1的启动/停止位。在编写程序时,若将TR0或TR1设置为“1”,那么相应的定时器/计数器开始工作;若设置为“0”,定时器/计数器则会停止工作。
注意:如果将TF*位设为“1”,则把IE*设置为下降沿置“1”,中断子程序执行完后,IE*位自动变为“0”(硬件置“0”);如果将TF*位设为“0”,则把IE*设置为低电平置“1”,中断子程序执行完后,IE*位将仍是“1”,所以在退出中断子程序前,要将 INT*端的低电平信号撤掉,再用指令将IE*位置“0”(软件置“0”),若退出中断子程序后,IE*位仍为“1”,将会产生错误的再次中断。
在单片机复位时,定时器/计数器控制寄存器TCON的各位均为“0”。
2.串行通信口控制寄存器SCON
串行通信口控制寄存器SCON的功能主要是接收串行通信口送到的中断请求信号。其字节地址是98H,它有8位,每位均可进行位寻址,各位的地址和名称如下:
![203e429c8d9447105eb81df3abee3bdd.png](https://i-blog.csdnimg.cn/blog_migrate/9b1234429090e1b1b256173d807aa816.jpeg)
串行通信口控制寄存器SCON的TI位和RI位与中断有关,其他位用作串行通信控制,将在后面说明。
TI:串行通信口发送中断标志位。在串行通信时,每发送完一帧数据,串行通信口会将TI位置“1”,表明数据已发送完成,向单片机发送中断请求信号。RI:串行通信口接收中断标志位。在串行通信时,每接收完一帧数据,串行通信口会将 RI 位置“1”,表明数据已接收完成,向单片机发送中断请求信号。
单片机执行中断子程序后,TI位和RI位不能自动变为“0”,需要在退出中断子程序时,用软件指令将它们清0。