1、5.5 5.5 MCS-51MCS-51对外部中断源的扩展对外部中断源的扩展5.5.1 5.5.1 借用定时器借用定时器/计时器溢出中断扩展外部中断源计时器溢出中断扩展外部中断源 (P160 P160 利用计数溢出,扩展中断源)利用计数溢出,扩展中断源)来自来自P3.4(T0)P3.4(T0)或或P3.5(T1)P3.5(T1)引脚的引脚的 外部输入计数脉冲相当于中断请求信号外部输入计数脉冲相当于中断请求信号5.5.2 5.5.2 使用硬件申请软件查询法扩展外部中断源使用硬件申请软件查询法扩展外部中断源 (P161 P161 硬件申请,软件查询的方法)硬件申请,软件查询的方法)5 55 MCS
2、-515 MCS-51对外部中断源的扩展对外部中断源的扩展6.1.2 P16.1.2 P1口口 功能:功能:P1P1口作通用口作通用I/OI/O口口 P1P1口也是一个口也是一个“准双向准双向”口,作输入口时要先将输出口,作输入口时要先将输出驱动管截止。驱动管截止。即先执行一条指令即先执行一条指令 MOV P1,#0FFHMOV P1,#0FFH内部结构:内部结构:如图所示如图所示DBDB口地址口地址地址译码器地址译码器QRD5V应答信号应答信号WR锁存器锁存器输出设备输出设备PORTD译码译码PORTS译码译码状态线状态线BusyBusy状态信息状态信息D6RDD6D6 MCS-51 MCS
3、-51 的中断系统的结构的中断系统的结构EX0EX1ET0ET1ESEAPX0PX1PT0PT1PS 外部中断请求信号触发方式选择(外部中断请求信号触发方式选择(IT0/1IT0/1位)位):IT0/1=0 IT0/1=11IE0/1EX0/1 EAPX0/101D7D0TF1TF0IE1IT1IE0IT0外部中断请求外部中断请求0(1)的触发方式选择的触发方式选择 IT0=0 电平触发方式;电平触发方式;IT0=1 边沿触发方式边沿触发方式IE0(IE1):外部中断请求:外部中断请求0(1)的中断申请标志的中断申请标志 IT0=0 CPU每个机器周期采样每个机器周期采样/INT0,若,若/I
4、NT0=1 则则IE0=0 否否则则/INT0=0,IE0=1申请中断申请中断 IT0=1 若第一个机器周期若第一个机器周期/INT0=1,第二个机器周期,第二个机器周期/INT0=0,则则IE0=1申请中断,否则申请中断,否则IE0=0 转向中断服务时边沿触发方式下转向中断服务时边沿触发方式下IE由硬件清零由硬件清零转向中断服务时电平触发方式下硬件不清转向中断服务时电平触发方式下硬件不清IE,待申请信号撤消,待申请信号撤消。T/C0T/C0、T/C1T/C1溢出中断溢出中断D7D0TF1TF0IE1IT1IE0IT0串行口接收中断标志串行口接收中断标志串行口接收中断串行口接收中断TITI:串
5、行口发送中断标志:串行口发送中断标志串行口发送中断串行口发送中断 RIRI、TI TI 由硬件置位由硬件置位 必须由软件清零必须由软件清零 D7D0RITI 总结中断源的各个触发器总结中断源的各个触发器(p163)表表5-1)中断源中断源 入口地址入口地址 同级中断同级中断优先级优先级 IE0 0003H TF0 000BH IE1 0013H TF1 001BH TI/RI 0023H 1 1、MCS-51MCS-51中断系统的初始化中断系统的初始化中断系统初始化步骤为:中断系统初始化步骤为:1 1)CPUCPU开中断或关中断;开中断或关中断;2 2)某中断源中断请求的允许或禁止(屏蔽);)
6、某中断源中断请求的允许或禁止(屏蔽);3 3)设定所用中断的中断优先级;)设定所用中断的中断优先级;4 4)若为外部中断,则应规定低电平还是负边沿)若为外部中断,则应规定低电平还是负边沿 的中断触发方式。的中断触发方式。2、程序设计方法、程序设计方法(2 2)中断服务程序)中断服务程序 中断服务程序是一种具有特定功能的独立程序段,它为中断中断服务程序是一种具有特定功能的独立程序段,它为中断源的特定要求服务,其一般源的特定要求服务,其一般低级中断源程序低级中断源程序编写格式如下编写格式如下:RETIRETI ORG 0000H AJMP MAIN ORG 0003H LJMP I0SV ORG
7、0013H LJMP I1SV MAIN:MOV SP,#60H SETB PX1 SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB EA SJMP$DLY:MOV R6,#50HDYL1:MOV R7,#200 DJNZ R7,$DJNZ R6,DYL1 RET ORG 1000HI0SV:CLR EA PUSH ACC SETB EA MOV A,#0FEH MOV R2,#00HLOOP:MOV P1,A ACALL DLY RL A DJNZ R2,LOOP CLR EA POP ACC SETB EA RETI ORG 1100HI1SV:CLR EA
8、 PUSH ACC MOV A,#7FH MOV R2,#00HLOOP1:MOV P1,A ACALL DLY RR A DJNZ R2,LOOP1 POP ACC SETB EA RETI END8051+5VRLED0+5VRLED7P1.7调试:改8000HRETI RETI 恢复中断逻辑恢复中断逻辑 转向中断服务是由转向中断服务是由CPUCPU通过硬件产生的通过硬件产生的LCALLLCALL指令指令子程序与中断服务程序的区别子程序与中断服务程序的区别 从中断请求有效(从中断请求有效(CPUCPU响应中断)到开始响应中断)到开始执行中断服务程序的第一条指令(中断入口地址执行中断服务程序
9、的第一条指令(中断入口地址处指令)为止,至少要经历三个完整的机器周期:处指令)为止,至少要经历三个完整的机器周期:第一个机器周期用于查询中断标志位;第一个机器周期用于查询中断标志位;第二和第三个机器周期用于保护断点并自动第二和第三个机器周期用于保护断点并自动转入执行一条长转移转入执行一条长转移LCALLLCALL指令指令 ,进入中断服务进入中断服务程序入口地址。程序入口地址。MCS-51MCS-51中断中断响应时间响应时间 逢逢RETIRETI或其它访问或其它访问IEIE、IPIP指令的第一个周期,而这指令的第一个周期,而这类指令之后又跟随着类指令之后又跟随着MULMUL或或DIVDIV指令引
10、起的附加等待时指令引起的附加等待时间不会超过间不会超过5 5个机器周期:一个周期完成正在进行的指令,个机器周期:一个周期完成正在进行的指令,再加再加MULMUL或或DIVDIV的的4 4个周期。个周期。得出结论得出结论:在一个单级的中断系统中,在一个单级的中断系统中,MCS-51MCS-51响应响应中断的时间一般在中断的时间一般在3-83-8个机器周期之间。个机器周期之间。当一个同级或更高级的中断正在进行,则附加的等待当一个同级或更高级的中断正在进行,则附加的等待时间取决于正在进行的中断程序。时间取决于正在进行的中断程序。CPU CPU必须在中断返回前,把它的响应中断标志位必须在中断返回前,把
11、它的响应中断标志位复位成复位成“0”0”状态。状态。80318031单片机的单片机的5 5个断源,撤除中断个断源,撤除中断请求的方法是不相同请求的方法是不相同。MCS-51MCS-51中断请求的撤除中断请求的撤除INSVR:ANL P1,#0FEH ORL P1,#01H RETI END 执行第一条指令使执行第一条指令使P1.0P1.0输出为负,其持续时间输出为负,其持续时间为为2 2个机器周期,足以使个机器周期,足以使D D触发器置位,触发器置位,INT0INT0上电上电平变高,从而撤除中断请求。平变高,从而撤除中断请求。第二条指令使第二条指令使P1.0P1.0变为变为1 1,否则,否则,D D触发器的触发器的S S端始终有效,端始终有效,INT0INT0端终为端终为1 1,无法再次中断。,无法再次中断。