1、第第12次课主要内容:次课主要内容:AT89S51中断基本概念中断基本概念中断系统结构中断系统结构 中断请求标志寄存器中断请求标志寄存器TCON和和SCON第第5 5章章 单片机的中断系统单片机的中断系统5.1 5.1 中断的基本概念中断的基本概念1 1、中断(、中断(interruptinterrupt)中断含义中断含义在在CPUCPU执行主程序的过程中,当发生某个紧急事件请求时,执行主程序的过程中,当发生某个紧急事件请求时,CPUCPU暂停当前的工作,处理这个紧急事件,暂停当前的工作,处理这个紧急事件,CPUCPU处理完紧急事件后,回到原来中断的地方,继续工作。处理完紧急事件后,回到原来中
2、断的地方,继续工作。中断源中断源 请求请求CPUCPU暂停当前工作的暂停当前工作的紧急事件紧急事件。断点断点 中断的地点中断的地点。中断服务程序中断服务程序 处理紧急事件的程序处理紧急事件的程序。看书看书 敲门,敲门,开门交谈,中断看书开门交谈,中断看书 继续看书继续看书2 2、中断响应过程、中断响应过程中断中断主程序主程序中断服务程序中断服务程序继续执行主程序继续执行主程序中断中断中断中断3 3、中断优先级、中断优先级当主程序同时接收多个中断源请求时,根据中断源的重要性和当主程序同时接收多个中断源请求时,根据中断源的重要性和实时性,赋予中断源不同的实时性,赋予中断源不同的优先处理级别优先处理
3、级别。中断中断1 1中断中断2 2中断中断1 1中断中断2 2中断中断1 1比中断比中断2 2优先级高优先级高优先处理的中断源优先处理的中断源 优先级高优先级高滞后处理的中断源滞后处理的中断源 优先级低优先级低4 4、中断的作用、中断的作用CPUCPU任何时刻只能处理一项事件,任何时刻只能处理一项事件,当某个事件需要及时处理时当某个事件需要及时处理时,通过中断系统及时响应要处理的事件,提高了通过中断系统及时响应要处理的事件,提高了CPUCPU的工作效率。的工作效率。5.2 5.2 中断系统的构成中断系统的构成中断系统结构图中断系统结构图中中断断程程序序入入口口地地址址中断源中断源中断标志中断标
4、志中断使能中断使能中断优先级中断优先级1 1、中断源(、中断源(5 5个)个)(1 1)INT0 INT0 外部中断请求外部中断请求0 0;(5 5)TX/RX TX/RX 串行口中断请求。串行口中断请求。(2 2)INT1 INT1 外部中断请求外部中断请求1 1。(3 3)T0 T0 定时器定时器/计数器计数器T0T0溢出溢出中断请求;中断请求;(4 4)T1 T1 定时器定时器/计数器计数器T1T1溢出溢出中断请求;中断请求;2 2个外部中断源:个外部中断源:3 3个内部中断源:个内部中断源:重点、记住重点、记住外部中断源:外部中断源:数据收发数据收发中断源中断源思考:在电路系统中,思考
5、:在电路系统中,如何知道有中断产生如何知道有中断产生?学习方法:学习方法:看书并记住寄存器各个标志位的含义。看书并记住寄存器各个标志位的含义。2 2、中断请求标志寄存器(、中断请求标志寄存器(TCONTCON、SCONSCON)TCONTCON为定时器为定时器/计数器控制寄存器,计数器控制寄存器,字节地址为字节地址为88H88H。各各标志位标志位的功能(电路设计者规定,的功能(电路设计者规定,TF1TF1这一位的符号):这一位的符号):(1 1)TF1TF1定时器定时器/计数器计数器T1 T1 溢出溢出中断请求中断请求标志位标志位。TF1=0TF1=0,无中断请求。,无中断请求。TF1=1TF
6、1=1,有中断请求。,有中断请求。(2 2)TF0TF0定时器定时器/计数器计数器T0T0的溢出中断请求标志位与的溢出中断请求标志位与 TF1TF1类似。类似。难点、理解难点、理解画板书(3 3)IE1IE1 外部中断请求外部中断请求INT1INT1的中断请求标志位。的中断请求标志位。IE1=0IE1=0,无中断请求。,无中断请求。IE1=1IE1=1,有中断请求。,有中断请求。(4 4)IE0IE0 外部中断请求外部中断请求INT0INT0与与IE1IE1类似。类似。低电平触发低电平触发 IT1=0IT1=0下降沿触发下降沿触发 IT1=1IT1=1(5 5)IT1IT1外部中断请求外部中断
7、请求INT1INT1为下降沿触发方式或者为下降沿触发方式或者 电平电平触发方式触发方式。IT1=0IT1=0,电平触发方式。,电平触发方式。IT1=1IT1=1,下降沿触发方式。,下降沿触发方式。(6 6)IT0IT0外部中断请求外部中断请求INT0INT0与与INT1INT1类似。类似。SCONSCON为串行口控制寄存器,字节地址为为串行口控制寄存器,字节地址为98H98H。各标志位的功能:各标志位的功能:TITI 发送中断请求标志位。发送中断请求标志位。TI=1TI=1,串口发送完一帧数据后,硬件自动把,串口发送完一帧数据后,硬件自动把TITI置置“1 1”;必须在中断服务程序中用软件对必
8、须在中断服务程序中用软件对TITI标志清标志清“0 0”。RIRI 接收中断请求标志位。接收中断请求标志位。RI=1RI=1,串口接收完一帧数据后,硬件自动把串口接收完一帧数据后,硬件自动把RIRI置置“1 1”。必须在中断服务程序中用软件对必须在中断服务程序中用软件对RIRI标志清标志清“0 0”。怎样知道外部怎样知道外部中断请求中断请求1(INT1)1(INT1)发生中断发生中断?思考题:思考题:TCON=0 x08;TCON=0 x08;/TCON /TCON的值为的值为0 x080 x08,则哪个中断源产生中断?,则哪个中断源产生中断?0 00 00 00 01 10 00 00 0思
9、考题:思考题:TCON TCON的值为的值为0 x0C0 x0C,则表示什么意思?,则表示什么意思?第第13次课主要内容:次课主要内容:中断允许寄存器(中断允许寄存器(IE)及编程)及编程 中断优先级寄存器(中断优先级寄存器(IP)及编程)及编程 思考:在电路系统中,思考:在电路系统中,如何允许如何允许/禁止中断请求?禁止中断请求?3 3、中断允许寄存器(、中断允许寄存器(IEIE)(1 1)EAEA:中断允许:中断允许总控制位总控制位。EA=0EA=0,CPUCPU屏蔽所有的中断请求屏蔽所有的中断请求(CPU(CPU关中断关中断);EA=1EA=1,CPUCPU开放所有中断开放所有中断(CP
10、U(CPU开中断开中断)。各标志位的功能:各标志位的功能:(2 2)ESES:串行口中断允许位。:串行口中断允许位。ES=0ES=0,禁止串行口中断;,禁止串行口中断;ES=1ES=1,允许串行口中断。,允许串行口中断。(3 3)ETET0 0:定时器:定时器/计数器计数器T T0 0的溢出中断允许位。的溢出中断允许位。ETET0 0=0=0,禁止,禁止T0T0溢出中断;溢出中断;ETET0 0=1=1,允许,允许T0T0溢出中断。溢出中断。(4 4)EX1EX1:外部中断:外部中断1 1中断允许位。中断允许位。EX1=0EX1=0,禁止外部中断,禁止外部中断1 1中断;中断;EX1=1EX1
11、=1,允许外部中断,允许外部中断1 1中断。中断。(5 5)ET0ET0:定时器:定时器/计数器计数器T0T0的溢出中断允许位。的溢出中断允许位。ET0ET0与与ET1ET1类似。类似。(6 6)EX0EX0:外部中断:外部中断0 0中断允许位。中断允许位。EX0EX0与与EX1EX1类似。类似。允许某一个中断源中断的条件允许某一个中断源中断的条件?IEIE相应的位被置相应的位被置“1 1”;EAEA位置位置“1 1”。编程:编程:允许定时器允许定时器/计数器计数器T0T0、T1T1中断,禁止其它中断源的请求。中断,禁止其它中断源的请求。按字节操作:按字节操作:按位操作:按位操作:sfrsfr
12、 IE=0 xA8 IE=0 xA8;IE=0 x8A;IE=0 x8A;sbitsbit ET1=0 xAB ET1=0 xAB;sbitsbit ET0=0 xA9 ET0=0 xA9;SbitSbit EA =0 xAF EA =0 xAF;EA=1EA=1;ET1=1;ET1=1;ET0=1;ET0=1;允许外部中断允许外部中断1 1中断,禁止其它中断源的请求。中断,禁止其它中断源的请求。按字节操作:按字节操作:sfrsfr IE=0 xA8 IE=0 xA8;IE=0 x84;IE=0 x84;4、中断优先级寄存器(、中断优先级寄存器(IP)两个中断优先级,可实现两级中断嵌套。两个中
13、断优先级,可实现两级中断嵌套。低优先级中断低优先级中断高优先级中断高优先级中断中断优先级寄存器中断优先级寄存器IPIP,其字节地址为,其字节地址为B8HB8H各标志位的功能:各标志位的功能:(1 1)PSPS串行口中断优先级控制位。串行口中断优先级控制位。PS=1PS=1,高优先级中断;,高优先级中断;PS=0PS=0,低优先级中断。,低优先级中断。(2 2)PT1PT1定时器定时器T1T1中断优先级控制位。中断优先级控制位。(3 3)PX1PX1外部中断外部中断1 1中断优先级控制位。中断优先级控制位。(4 4)PT0PT0定时器定时器T0T0中断优先级控制位。中断优先级控制位。(5 5)P
14、X0PX0外部中断外部中断0 0中断优先级控制位。中断优先级控制位。PSPS、PT1PT1、PX1PX1、PT0PT0、PX0PX0位置位置“1 1”,则为中断高优先级。,则为中断高优先级。由软件可改变各中断源的中断优先级。由软件可改变各中断源的中断优先级。低优先级可被高优先级中断;同级优先级不会中断;低优先级可被高优先级中断;同级优先级不会中断;在同时收到几个同一优先级的中断请求时,优先响在同时收到几个同一优先级的中断请求时,优先响应哪一个中断,取决于内部的查询顺序。应哪一个中断,取决于内部的查询顺序。中断优先级响应顺序:中断优先级响应顺序:中断查询次序中断查询次序 中断源中断源 中断优先级
15、中断优先级 外部中断外部中断INT0 最高最高 T0溢出中断溢出中断 外部中断外部中断INT1 T1溢出中断溢出中断 串行口中断串行口中断 最低最低2 2个外部中断请求个外部中断请求INT1INT1,INT0INT0为高优先级,其它中断请求为高优先级,其它中断请求为低优先级。为低优先级。sfrsfr IP=0 xB8 IP=0 xB8;IP=0 x05;IP=0 x05;(3 3)该中断源发出中断请求,即该中断源对应的)该中断源发出中断请求,即该中断源对应的中断中断 请求标志为请求标志为“1 1”;1 1、响应、响应 中断请求的条件中断请求的条件(P146P146,记住),记住)(2 2)该中
16、断源的)该中断源的中断允许位中断允许位=1=1,即该中断没有被屏蔽;,即该中断没有被屏蔽;(1 1)IEIE寄存器中的中断总允许位寄存器中的中断总允许位EA=1EA=1;(4 4)无同级或更高级中断正在被服务。)无同级或更高级中断正在被服务。5.3 5.3 中断响应中断响应2 2、中断响应的过程、中断响应的过程 把把PCPC的内容压入堆栈以保护断点,再将中断入口地址装的内容压入堆栈以保护断点,再将中断入口地址装入入PCPC,执行中断程序。,执行中断程序。中断源中断源 入口地址入口地址 外部中断外部中断0 0003H 定时器定时器/计数器计数器T0 000BH 外部中断外部中断1 0013H 定
17、时器定时器/计数器计数器T1 001BH 串行口中断串行口中断 0023H各中断源服务程序的各中断源服务程序的入口地址:入口地址:中断处理程序中断处理程序程序存储器程序存储器1 1)定时器)定时器/计数器计数器T1T1、T0T0中断请求的撤消;中断请求的撤消;中断请求被响应后,中断请求被中断请求被响应后,中断请求被硬件自动撤消。硬件自动撤消。3 3、中断请求的撤消(中断标志位清、中断请求的撤消(中断标志位清0 0)2 2)外部中断请求的撤消)外部中断请求的撤消下降沿方式外部中断请求是下降沿方式外部中断请求是硬件自动撤消。硬件自动撤消。电平方式外部中断请求是电平方式外部中断请求是硬件自动撤消。硬
18、件自动撤消。并且,把中断请求信号引脚从低电平强制改变为高电平。并且,把中断请求信号引脚从低电平强制改变为高电平。3 3)串行口中断请求的撤消)串行口中断请求的撤消响应串行口的中断后,测试这两个中断标志位的状态是响应串行口的中断后,测试这两个中断标志位的状态是接收中断还是发送中断,然后才能清除。接收中断还是发送中断,然后才能清除。所以串行口中断请求的撤消只能用软件清除。所以串行口中断请求的撤消只能用软件清除。第第14次课主要内容:次课主要内容:中断服务程序设计方法中断服务程序设计方法 中断响应函数中断响应函数 中断函数编程中断函数编程 5.4 5.4 中断程序设计中断程序设计1 1、中断服务程序
19、设计方法、中断服务程序设计方法(1 1)设置中断允许控制寄存器)设置中断允许控制寄存器IEIE。(2 2)设置中断优先级寄存器)设置中断优先级寄存器IPIP。(3 3)对外部中断源,是采用电平触发还是下降沿触发。)对外部中断源,是采用电平触发还是下降沿触发。(4 4)编写中断服务程序,处理中断请求。)编写中断服务程序,处理中断请求。2 2、中断响应函数、中断响应函数(背住)(背住)函数类型函数类型 函数名()函数名()interrupt n using ninterrupt ninterrupt n:表示中断号,:表示中断号,n n的值为的值为0 0 4 4;using nusing n:表示
20、寄存器组号,:表示寄存器组号,n n的值为的值为0 0 3 3;中断号中断号中断源中断源入口地址入口地址0 0外部中断外部中断0 00003H0003H1 1定时器定时器/计数器计数器T0T0000BH000BH2 2外部中断外部中断1 1 0013H0013H3 3定时器定时器/计数器计数器T1T1001BH001BH4 4串行口中断串行口中断0023H0023H中断号与中断源的对应关系(背住)中断号与中断源的对应关系(背住)void int1void int1()interrupt interrupt 2 2 using 0 using 0void time0void time0()int
21、errupt interrupt 1 1 using 0 using 0中断函数的特点中断函数的特点(理解)(理解):2 2)当中断事件发生时,中断函数不能被其他函数调用,)当中断事件发生时,中断函数不能被其他函数调用,而是被硬件自动调用;而是被硬件自动调用;1 1)中断函数没有返回值,没有参数传递;)中断函数没有返回值,没有参数传递;3 3)中断函数完成后,返回主程序继续执行。)中断函数完成后,返回主程序继续执行。例题:编写外部中断例题:编写外部中断0的中断响应函数的中断响应函数void int0void int0()interrupt interrupt 0 0 using 0 using
22、 03 3、中断函数编程、中断函数编程 例题、例题、(P151)(P151)单片机的单片机的P1P1口接有口接有8 8个个LEDLED灯,在外部中断灯,在外部中断0 0引脚接有一个按钮开关引脚接有一个按钮开关K1K1。(掌握并(掌握并背住背住)程序要求:程序要求:外部中断外部中断0 0设置为下降沿触发;设置为下降沿触发;没有按下开关没有按下开关K1K1时,时,8 8支支LEDLED灯全亮;灯全亮;按下开关按下开关K1K1时,低时,低4 4位和高位和高4 4位交替闪烁位交替闪烁5 5次。次。重点、掌握重点、掌握思考?思考?1 1、允许外部中断、允许外部中断0 0的条件怎么编程?的条件怎么编程?2
23、 2、外部中断、外部中断0 0 的中断响应函数怎么编程?的中断响应函数怎么编程?3 3、8 8支支LEDLED灯全亮怎么编程?灯全亮怎么编程?4 4、低、低4 4位和高位和高4 4位交替闪烁位交替闪烁5 5次怎么编程?次怎么编程?#include#include void delay(void delay(intint i)i)延时函数体延时函数体 main()main()EA=1;EA=1;EX0=1;EX0=1;IT0=1;IT0=1;while(1)while(1)P1=0;P1=0;/总中断允许;总中断允许;/外部中断外部中断0 0允许;允许;/外部中断外部中断0 0为下降沿触发;为下
24、降沿触发;/8/8个个LEDLED灯全亮;灯全亮;/循环;循环;void int0()interrupt 0 using 0void int0()interrupt 0 using 0 char m char m;EX0=0;EX0=0;for for(m=0;m5;m+m=0;m5;m+)P1=0 x0f;P1=0 x0f;delay delay(4 40000););P1=0 xf0;P1=0 xf0;delay delay(4 40000););EX0=1;EX0=1;/禁止外部中断禁止外部中断0 0中断;中断;/高高4 4位位LEDLED灯亮;灯亮;/低低4 4位位LEDLED灯灭;灯
25、灭;/允许外部中断允许外部中断0 0中断;中断;例题、单片机的例题、单片机的P1.0P1.0接一个接一个LEDLED灯,在外部中断灯,在外部中断1 1引脚接引脚接一个按钮开关一个按钮开关K1K1。程序要求:程序要求:外部中断外部中断1 1设置为低电平触发;设置为低电平触发;没有按下开关没有按下开关K1K1,P1.0P1.0的的LEDLED灯灭;灯灭;按下开关按下开关K1K1时,时,P1.0P1.0的的LEDLED灯亮。灯亮。main()main()EA=1;EA=1;EX1=1;EX1=1;IT1=0;IT1=0;while(1)while(1)P1=0 xff;P1=0 xff;#inclu
26、de#include void delay(void delay(intint i)i)延时函数体延时函数体 void int1()interrupt 2 using 0void int1()interrupt 2 using 0 EX1=0;EX1=0;P1=0 xfe;P1=0 xfe;EX1=1;EX1=1;例题、单片机的例题、单片机的P1.0P1.0和和P1.1P1.1分别接一个分别接一个LEDLED灯,在外部灯,在外部中断中断0 0、1 1引脚分别接一个按钮开关引脚分别接一个按钮开关K1K1、K2K2。程序要求:程序要求:外部中断外部中断0 0、1 1设置为低电平触发;设置为低电平触
27、发;没有按下开关没有按下开关K1K1、K2K2时,时,2 2支支LEDLED灯全灭;灯全灭;按下开关按下开关K1K1时,时,P1.0P1.0的的LEDLED亮,亮,P1.1P1.1的的LEDLED灭。灭。按下开关按下开关K2K2时,时,P1.0P1.0的的LEDLED灭,灭,P1.1P1.1的的LEDLED亮。亮。void int0()interrupt 0 using 0void int0()interrupt 0 using 0 EA=0;EA=0;P1=0 xfe;P1=0 xfe;EA=1;EA=1;void int1()interrupt 2 using 0void int1()in
28、terrupt 2 using 0 EA=0;EA=0;P1=0 xfd;P1=0 xfd;EA=1;EA=1;main()main()EA=1;EA=1;EX0=1;EX0=1;IT0=0;IT0=0;EX1=1;EX1=1;IT1=0;IT1=0;while(1)while(1)P1=0 xff;P1=0 xff;#include#include#include char t=0;main()EA=1;EX0=1;IT0=1;P1=0;while(1)P1=0 xff;void int0()interrupt 0 EX0=0;t+;if(t=2)P1=P1&0 xf0;EX0=1;例题、阅
29、读程序,按下外部中断例题、阅读程序,按下外部中断0 0 次数,写出次数,写出P1P1口状态口状态#include char t=0;main()EA=1;EX0=1;IT0=1;P1=0;while(1)if(t=1)P1=0 xff;void int0()interrupt 0 EX0=0;t+;if(t=2)P1=P1&0 xf0;else P1=P1|0 xf0;EX0=1;例题、阅读程序,按下外部中断例题、阅读程序,按下外部中断0 0 次数,写出次数,写出P1P1口状态口状态 项目设计项目设计报警模拟案例设计,包括软件和硬件。报警模拟案例设计,包括软件和硬件。正常工作时,正常工作时,8
30、 8个个LEDLED以流水方式,一个一个点亮,以流水方式,一个一个点亮,异常时,异常时,8 8个个LEDLED同时点亮,点灭;同时点亮,点灭;解除异常时,恢复正常工作。解除异常时,恢复正常工作。作业:作业:P155 P155 一、一、1,2,41,2,4,5 5二、二、1,21,2,4 4,四、四、3 3P1.0P1.0R1VccVccR3P1.1P1.1R2INT0INT0K1K1L1L1L2L2补充补充2 2、K1K1接外部中断接外部中断0 0,下降沿触发方式,下降沿触发方式,按下按下K1K1,LED1LED1亮,亮,LED2LED2灭;灭;松开松开K1K1,LED1LED1灭,灭,LED2LED2亮。亮。补充补充1 1、P151P151,例,例6-16-1