《单片机及接口技术2.6(中断系统)课件》由会员分享,可在线阅读,更多相关《单片机及接口技术2.6(中断系统)课件(24页珍藏版)》请在金锄头文库上搜索。
1、2.6 中断系统,中 断 系 统,1. 8051的中断系统的组成结构,ES,ET1,ET0,EX0,EX1,TF0,TF1,TI,+,RI,PS,PT1,PT0,PX0,PX1,EA,高 优 先 级,低 优 先 级,中断服务 子程序入口,80C51中断系统结构示意图,总开关,分开关,优先级开关,1) 中断源,(1)外部中断源,(2)定时溢出中断源(TF0、TF1),INT0、INT1、TF0、TF1中断源标志:在TCON寄存器中,TCON格式,中 断 系 统,a. TF0、TF1:定时/计数器溢出后,自动硬件置1 b. IE0、IE1(Interrupt Enable):外部中断请求标志,IE
2、0、IE1=1,外部请求中断,c. IT0、IT1(Interrupt1):外部中断触发方式选择位; 若IT1=0,外部中断1为电平触发方式,CPU在每个机器周期的S5P2期间对INT1(平)引脚采样,若采到低电平,认为有中断申请,即置IE1=1,若为高电平,则清除IE1标志,CPU响应中断后不能自动清除IE1标志,也不能由软件清除IE1标志,所以在中断返回前必须撤消INT1(平)引脚上的低电平。 若IT1=1,为边沿触发方式,CPU在每个机器周期的S5P2期间采样引脚。若在连续两个机器周期采样到先高后低,则使IE1=1,此标志一直保持到CPU响应中断时,才由硬件自动清除。,中 断 系 统,(
3、3)串行口中断源(TI/RI),中断标志:SCON(98H),中 断 系 统,2) 中断入口地址(中断矢量),中 断 系 统,3) 中断控制,(1)中断允许控制寄存器IE,(1)EA:CPU中断总允许位。EA=1,开中断;EA=0,关中断。 (2)ES(Enable Serial):串行口中断允许 (3)ET1(Enable T1):T1中断允许 (4)EX1:外部中断1允许 (5)ET0:T0中断允许 (6)EX0:外部中断0允许,(2)中断优先级寄存器IP,a.PS:串行口中断优先级控制位。PS=1,串行口为高优先级中断 b.PT1:T1中断优先级控制位。PT1=1,定时器T1为高优先级中
4、断 c.PX1 d.PT0 e.PX0,中 断 系 统,自然优先级表(IP优先级一致的前提下),中 断 系 统,2. CPU对中断的处理,1)中断查询 80C51的CPU在每个机器周期的S6状态中查询中断源,在下一个机器周期的S1状态响应中断请求。 2)中断响应中的CPU自动操作 (1)中断源标志清零(TI、RI除外) (2)保护断点(不保护PSW) (3)中断入口地址装入PC 3)中断返回时CPU自动操作:断点地址送入PC RETI指令,中 断 系 统,概念:中断源、中断请求、中断标志、中断允许(开中断)、中断优先级、中断响应、中断入口地址、中断嵌套、中断保护、中断服务程序、中断源清除、中断
5、禁止(关中断)、中断返回,中 断 系 统,3. 外部中断源扩展,方法1:,将T0、T1用作外部中断源。如定时/计数器工作于方式1时,令计数初值为FFFFH,则T0或T1有一个下降沿电平发生时,定时器/计数器0或定时器/计数器1溢出,产生中断请求,入口地址为定时器/计数器0或定时器/计数器1的中断服务入口地址(000BH或001BH),中 断 系 统,如:,用INT0(平)扩展3个外部中断源,方法2:通过一个外部中断源和n个I/O口线扩展n-1个外部中断源,中 断 系 统,ORG 0003H ;INT0(平)的中断服务入口地址 ; 为0003H LJMP INTRPT ; 跳转子程序,中断服务程
6、序,ORG 1000H INTRPT:PUSH PSW ;保护现场,因为PSW不会 ; 被CPU自动保护, ; 所以用软件编程保护 JNB P1.0,PROG0 ; 如果有0#中断,转0#中断子程序 JNB P1.1,PROG1 ; 如果有1#中断,转1#中断子程序 JNB P1.2,PROG2 ; 如果有2#中断,转2#中断子程序 GOBACK:POP PSW ;恢复现场 RETI ;中断返回 PROG0: LJMP GOBACK PROG1: LJMP GOBACK PROG2: LJMP GOBACK,中 断 系 统,练习2.6.1: 采用中断方式从P1.0产生频率500Hz的方波,设单
7、片机时钟频率为6MHz,解:用T0工作于方式1,1)计算定时初值,频率:500Hz; 周期:1/500=2 ms 定时时间:周期/2=1ms 定时器T0计数1次耗时: 12个时钟周期=12*1/6M=2*10-6 s 定时器T0需计数次数:1*10-3/(2*10-6)=500 (次)=1F4H 定时初值:10000H-1F4H= FE0CH TH0=FEH TL0=0CH,中 断 系 统,2)设置TMOD:01H,中 断 系 统,3)主程序:初始化,ORG 0000H AJMP MAIN ORG 100H MAIN: MOV TMOD,#01H ;定时器/计数器初始化 MOV TL0,#0C
8、H MOV TH0,#0FEH ;装计数初值 SETB EA ;开中断 SETB ET0 ;开定时器0中断 SETB TR0 ;启动定时器0计数 SJMP $ ;中断等待,中 断 系 统,ORG 000BH LJMP SQSU ORG 200H SQSU:CPL P1.0 MOV TL0, #0CH MOV TH0, #0FEH RETI,4)中断服务子程序,中 断 系 统,练习2.6.2:单片机串行口设为方式2,波特率为fosc/32,接收到一个字节数据后,将F0置1。编写主程序和串行口中断子程序实现该功能。,中 断 系 统,附表1 SCON,附表2 PCON,中 断 系 统,附表3 中断入
9、口地址,课12,中 断 系 统,解:,1)计算定时初值 SCON=10010000B=90H,2)设置波特率:SMOD=1,即PCON=80H,3)主程序:初始化,ORG 0000H AJMP MAIN ORG 100H MAIN: MOV SCON,#90H ;定时器/计数器初始化 MOV PCON,#80H SETB EA ;开中断 SETB ES ;开串行口中断 SJMP $ ;中断等待,中 断 系 统,4)中断服务子程序,ORG 0023H LJMP SQSU ORG 200H SQSU:CLR RI ;软件清RI CLR ES ;关中断 SETB F0 RETI,练习2.6.3:如下图所示电路,要求按下键K后,发光二极管亮,编写主程序和中断处理子程序实现该功能。,中 断 系 统,附表 中断入口地址,中 断 系 统,主程序: MOV P3, #0FFH ; 置P3口为替代输入输出功能 SETB EA SETB EX0 SJMP $ 子程序: ORG 0003H SETB P1.0 NOP NOP RETI,本节小结,