收藏 分销(赏)

单片机中断与计时、计数器.ppt

上传人:快乐****生活 文档编号:2380089 上传时间:2024-05-29 格式:PPT 页数:63 大小:443.53KB
下载 相关 举报
单片机中断与计时、计数器.ppt_第1页
第1页 / 共63页
单片机中断与计时、计数器.ppt_第2页
第2页 / 共63页
单片机中断与计时、计数器.ppt_第3页
第3页 / 共63页
单片机中断与计时、计数器.ppt_第4页
第4页 / 共63页
单片机中断与计时、计数器.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

1、 中断的基本概念中断的基本概念 80 80C51C51中断源中断源 中断控制寄存器中断控制寄存器 中断处理过程中断处理过程 中断优先控制和中断嵌套中断优先控制和中断嵌套 中断系统的应用中断系统的应用 80 80C51C51定时定时/计数器计数器 定时定时/计数器控制寄存器计数器控制寄存器 定时定时/计数器工作方式计数器工作方式 定时定时/计数器的应用计数器的应用第第5 5章章 中断系统中断系统和和定时定时/计数器计数器 本章要点:本章要点:5-1 5-1 8080C51C51中断系统中断系统CPUCPU暂时暂时中止其正在中止其正在执执行的程序,行的程序,转转去去执执行行请请求中断的求中断的那个

2、外那个外设设或事件的服或事件的服务务程序,等程序,等处处理完理完毕毕后再返回后再返回执执行行原来中止的程序原来中止的程序,叫做中断。叫做中断。为什么要设置中断?为什么要设置中断?提高提高CPUCPU工作效率工作效率 具有实时处理功能具有实时处理功能 具有故障处理功能具有故障处理功能 实现分时操作实现分时操作5.1.1 5.1.1 中断概述中断概述 什么叫中断?什么叫中断?中断功能强弱是计算机性能优劣中断功能强弱是计算机性能优劣的重要标志的重要标志中断源中断源 中断申请中断申请开放中断开放中断保护现场保护现场中断服务中断服务恢复现场恢复现场中断返回中断返回中断涉及的几个环节 CPU CPU 在每

3、个机器周期的在每个机器周期的S5P2S5P2期间,会自动期间,会自动查询各个中断申请标志位,若查到某标志位被查询各个中断申请标志位,若查到某标志位被置位置位,将启动中断机制。将启动中断机制。CPUCPU识别中断申请的依据:识别中断申请的依据:INT0INT0:外部中断外部中断0 0,中断请求信号由,中断请求信号由P3.2P3.2输入。输入。INT1INT1:外部中断外部中断1 1,中断请求信号由,中断请求信号由P3.3P3.3输入。输入。T0T0:定时定时/计数器计数器0 0溢出中断溢出中断,对外部脉冲计数由,对外部脉冲计数由P3.4P3.4输入。输入。T1T1:定时定时/计数器计数器1 1溢

4、出中断溢出中断,对外部脉冲计数由,对外部脉冲计数由P3.5P3.5输入。输入。串行中断串行中断:包括包括串行接收中断串行接收中断RIRI和和串行发送中断串行发送中断TITI。5.1.2 5.1.2 中断源和中断控制寄存器中断源和中断控制寄存器 中断源中断源 中断源是指能发出中断请求,引起中断的中断源是指能发出中断请求,引起中断的装置或事件。装置或事件。80 80C51C51单片机的中断源共有单片机的中断源共有5 5个,其中个,其中2 2个为个为外部中断源,外部中断源,3 3个为内部中断源:个为内部中断源:中断请求:定时和外中断控制寄存器中断请求:定时和外中断控制寄存器TCONTCON;串行控制

5、寄存器串行控制寄存器SCONSCON;中断允许控制寄存器中断允许控制寄存器IEIE;中断优先级控制寄存器中断优先级控制寄存器IPIP。中断控制寄存器中断控制寄存器 8080C51C51单片机中涉及中断控制的有单片机中涉及中断控制的有3 3个方面个方面4 4个个特殊功能寄存器特殊功能寄存器:INT0INT0、INT1INT1、T0T0、T1T1中断请求标志放在中断请求标志放在TCONTCON中中串行中断请求标志放在串行中断请求标志放在SCONSCON中。中。中断请求控制寄存器中断请求控制寄存器TCONTCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称TF1TF1

6、TF0TF0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H功能功能 T1T1 中断中断标志标志T0T0中断中断标志标志 中断中断标志标志 触发触发方式方式 中断中断标志标志触发触发方式方式TCONTCON的结构、位名称、位地址和功能如下:的结构、位名称、位地址和功能如下:TCONTCON位功能位功能:TF1 TF1 T1T1溢出中断请求标志溢出中断请求标志 T1T1计数溢出后,计数溢出后,TF1=1TF1=1 TF0TF0 T0T0溢出中断请求标志溢出中断请求标志 T0T0计数溢出后,

7、计数溢出后,TF0=1TF0=1TF0/TF1TF0/TF1:定时器溢出中断申请标志位:定时器溢出中断申请标志位:=0 =0:定时器未溢出;:定时器未溢出;=1 =1:定时器溢出申请中断:定时器溢出申请中断,进中断后自动清零。进中断后自动清零。IE1IE1 外中断中断请求标志外中断中断请求标志 当当P3.3P3.3引脚信号有效时,引脚信号有效时,IE1=1IE1=1 IE0IE0 外中断中断请求标志外中断中断请求标志 当当P3.2P3.2引脚信号有效时,引脚信号有效时,IE0=1IE0=1IE0/IE1IE0/IE1:外部中断申请标志位:外部中断申请标志位:=0 =0:没有外部中断申请;:没有

8、外部中断申请;=1 =1:有外部中断申请。:有外部中断申请。IT1IT1 外中断触发方式控制位外中断触发方式控制位 IT1=1IT1=1,边沿触发方式;边沿触发方式;IT1=0IT1=0,电平触发方式。电平触发方式。IT0IT0 外中断触发方式控制位外中断触发方式控制位 其意义和功能与其意义和功能与IT1IT1相似。相似。IT0/IT1IT0/IT1:外部中断请求的触发方式选择位:外部中断请求的触发方式选择位:=0 =0:在:在INT0/INT1INT0/INT1端申请中断的信号低电平有效端申请中断的信号低电平有效;=1 =1:在:在INT0/INT1INT0/INT1端申请中断的信号负跳变有

9、效端申请中断的信号负跳变有效.串行控制寄存器串行控制寄存器SCONSCONTCONTCOND7D7 D6D6 D5D5D4D4 D3D3 D2D2D1D1D0D0位名称位名称 TITIRIRI位地址位地址 99H99H98H98H功能功能 串行发送串行发送中断标志中断标志串行接收串行接收中断标志中断标志 TITI 串行口发送中断请求标志串行口发送中断请求标志 RIRI 串行口接收中断请求标志串行口接收中断请求标志 8080C51C51对中断源的开放或关闭由中断允许控对中断源的开放或关闭由中断允许控制寄存器制寄存器IEIE控制。控制。中断允许控制寄存器中断允许控制寄存器IEIEIEIE的结构、位

10、名称和位地址如下:的结构、位名称和位地址如下:IEIED7D7D6D6 D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称EAEA ESESET1ET1EX1EX1ET0ET0EX0EX0位地址位地址AFHAFH ACHACHABHABHAAHAAHA9HA9HA8HA8H中断源中断源CPUCPU 串行口串行口T1T1T0T0 EAEA CPUCPU中断允许控制位中断允许控制位(总开关)总开关)EA=1EA=1,CPUCPU开中;开中;EA=0EA=0,CPUCPU关中,且屏蔽所有关中,且屏蔽所有5 5个中断源。个中断源。EX0EX0 外中断外中断INT0INT0中断允许控制位中断允

11、许控制位 EX0=1EX0=1,INT0INT0开中;开中;EX0=0EX0=0,INT0INT0关中。关中。EX1EX1 外中断外中断INT1INT1中断允许控制位中断允许控制位 EX1=1EX1=1,INT1INT1开中;开中;EX1=0EX1=0,INT1INT1关中。关中。ET0ET0 定时定时/计数器计数器T0T0中断允许控制位中断允许控制位 ET0=1ET0=1,T0T0开中;开中;ET0=0ET0=0,T0T0关中。关中。ET1ET1 定时定时/计数器计数器T1T1中断允许控制位中断允许控制位 ET1=1ET1=1,T1T1开中;开中;ET1=0ET1=0,T1T1关中。关中。E

12、SES 串行口中断串行口中断(包括串发、串收包括串发、串收)允许控制位允许控制位 ES=1ES=1,串行口开中;串行口开中;ES=0ES=0,串行口关中。串行口关中。说明说明:80 80C51C51对中断实行对中断实行两级两级控制,控制,总控制位是总控制位是EAEA,每一中断源还有各自的控制位。每一中断源还有各自的控制位。首先首先要要EA=1EA=1,其次其次还要自身的控制位置还要自身的控制位置“1 1”。例如例如:要使要使INT0INT0开中开中(其余关中其余关中),可执行下列指令:,可执行下列指令:MOV IEMOV IE,#1000000lB#1000000lB;或者:或者:SETB E

13、A SETB EA ;SETB EX0 SETB EX0 ;IEIED7D7D6D6 D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称EAEA ESESET1ET1EX1EX1ET0ET0EX0EX0位地址位地址AFHAFH ACHACHABHABHAAHAAHA9HA9HA8HA8H中断源中断源CPUCPU 串行口串行口T1T1T0T0中断允许控制寄存器中断允许控制寄存器IEIE PX0PX0 :INT0INT0中断优先级控制位。中断优先级控制位。PX0=1PX0=1,为为高高优先级;优先级;PX0=0PX0=0,为为低低优先级;优先级;PX1PX1 :INT1INT1中断优先级

14、控制位。控制方法同上。中断优先级控制位。控制方法同上。PT0PT0 :T0T0中断优先级控制位。控制方法同上。中断优先级控制位。控制方法同上。PT1PT1 :T1T1中断优先级控制位。控制方法同上。中断优先级控制位。控制方法同上。PS PS:串行口中断优先级控制位。控制方法同上。串行口中断优先级控制位。控制方法同上。中断优先级控制寄存器中断优先级控制寄存器IP 80C51 80C51有有5 5个中断源,划分为个中断源,划分为2 2个中断优先级:个中断优先级:高优先级和低优先级高优先级和低优先级。IPIP的结构、位名称和位地址如下:的结构、位名称和位地址如下:IEIED7D7D6D6D5D5D4

15、D4D3D3D2D2D1D1D0D0位名称位名称PSPSPT1PT1PX1PX1PT0PT0PX0PX0位地址位地址BCHBCHBBHBBHBAHBAHB9HB9HB8HB8H中断源中断源串行口串行口T1T1INT1INT1T0T0INT0INT0例如例如:若要将若要将INT1INT1、串行口设置为高优先级,其余串行口设置为高优先级,其余中断源设置为低优先级,可执行下列指令:中断源设置为低优先级,可执行下列指令:MOV IPMOV IP,#00010100B#00010100B;需要指出的是,若置需要指出的是,若置5 5个中断源全部个中断源全部为为高高优优先先级级,就等于不分就等于不分优优先先

16、级级。IEIED7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名称位名称PSPSPT1PT1PX1PX1PT0PT0PX0PX0位地址位地址BCHBCHBBHBBHBAHBAHB9HB9HB8HB8H中断源中断源串行口串行口T1T1INT1INT1T0T0INT0INT0中断优先级控制寄存器中断优先级控制寄存器IP5.1.3 中断处理过程中断处理过程 中断处理过程大致可分为四步:中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回中断请求、中断响应、中断服务、中断返回 中断请求中断请求 中断源发出中断请求信号,相应的中断请求标志位中断源发出中断请求信号,相应的中

17、断请求标志位(在中断允许控制寄存器在中断允许控制寄存器IEIE中中)置置“1 1”。中断响应中断响应 CPUCPU查询(检测)到某中断标志为查询(检测)到某中断标志为“1 1”,在满足中,在满足中断响应条件下,响应中断。断响应条件下,响应中断。中断响应条件中断响应条件:该中断已经该中断已经“开中开中”;CPUCPU此时没有响应同级或更高级的中断;此时没有响应同级或更高级的中断;当前正处于所执行指令的最后一个机器周期;当前正处于所执行指令的最后一个机器周期;正在执行的指令不是正在执行的指令不是RETIRETI或者是访向或者是访向IEIE、IPIP的指的指令令,否则必须再另外执行一条指令后才能响应

18、。否则必须再另外执行一条指令后才能响应。中断响应操作中断响应操作 CPUCPU响应中断后响应中断后,进行下列操作:进行下列操作:保护断点地址;保护断点地址;撤除该中断源的中断请求标志;撤除该中断源的中断请求标志;关闭同级中断;关闭同级中断;将相应中断的入口地址送入将相应中断的入口地址送入PCPC;80C5180C51五个中断入口地址五个中断入口地址:INT0INT0:0003H0003H;T0 T0:000BH000BH;INT1 INT1:0013H0013H;T1 T1:001BH001BH;串行口:串行口:00230023H H 执行中断服务程序执行中断服务程序 中断服务程序应包含以下几

19、部分:中断服务程序应包含以下几部分:保护现场保护现场 执行中断服务程序主体,完成相应操作执行中断服务程序主体,完成相应操作 恢复现场恢复现场 中断返回中断返回 在中断服务程序最后,必须安排一条中断返回在中断服务程序最后,必须安排一条中断返回指令指令RETIRETI,当当CPUCPU执行执行RETIRETI指令后,自动完成下列指令后,自动完成下列操作:操作:恢复断点地址。恢复断点地址。开放同级中断,以便允许同级中断源请求开放同级中断,以便允许同级中断源请求中断。中断。5.1.4 5.1.4 中断响应等待时间中断响应等待时间 若排除若排除CPUCPU正在响应同级或更高级的中断情况,中正在响应同级或

20、更高级的中断情况,中断响应等待时间为断响应等待时间为:3 38 8个机器周期个机器周期5.1.5 5.1.5 中断请求的撤除中断请求的撤除 中断源发出中断请求,相应中断请求标志置中断源发出中断请求,相应中断请求标志置“1 1”。CPUCPU响应中断后,响应中断后,必须必须清除中断请求清除中断请求“1 1”标志。否则中标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。断响应返回后,将再次进入该中断,引起死循环出错。对定时对定时/计数器计数器T0T0、T1T1中断,外中断边沿触发方式,中断,外中断边沿触发方式,CPUCPU响应中断时就用响应中断时就用硬件自动清除硬件自动清除了相应的中断请

21、求标了相应的中断请求标志。志。对外中断电平触发方式,需要采取对外中断电平触发方式,需要采取软硬结合的方软硬结合的方法法消除后果。消除后果。对串行口中断,用户应在串行中断服务程序中用对串行口中断,用户应在串行中断服务程序中用软件清除软件清除TITI或或RIRI。例:例:硬件电路如图所示。当外部设备有中断请求时,中硬件电路如图所示。当外部设备有中断请求时,中断请求信号经反相,加到锁存器断请求信号经反相,加到锁存器CPCP端,作为端,作为CPCP脉冲。脉冲。由于由于D D端接地为端接地为0 0,Q Q端输出低点平,触发端输出低点平,触发 INT0INT0生中生中断。断。当当CPUCPU响应中断后,应

22、在该中断服务程序中按排响应中断后,应在该中断服务程序中按排两条指令两条指令:CLR P1CLR P10 0:SETB P1 SETB P10 0 从而撤消引起重复中断的从而撤消引起重复中断的INT0INT0低电平信号。低电平信号。因此一般来说因此一般来说,对外中断,对外中断INT0INT0、INTlINTl,应尽量采应尽量采用边沿触发方式,以简化硬件电路和软件程序。用边沿触发方式,以简化硬件电路和软件程序。5.1.65.1.6 中断优先控制和中断嵌套中断优先控制和中断嵌套 中断优先控制中断优先控制 8080C51C51中断优先控制首先根据中断优先级,此外还规定中断优先控制首先根据中断优先级,此

23、外还规定了同一中断优先级之间的中断优先权。其了同一中断优先级之间的中断优先权。其从高到低的顺序从高到低的顺序为为:INT0INT0、T0 T0、INT1 INT1、T1T1、串行口。串行口。中断优先级是可编程的中断优先级是可编程的,而,而中断优先权是固定的中断优先权是固定的,不,不能设置,仅用于同级中断源同时请求中断时的优先次序。能设置,仅用于同级中断源同时请求中断时的优先次序。80 80C51C51中断优先控制的基本原则:中断优先控制的基本原则:高优先级中断高优先级中断可以中断可以中断正在响应的低优先级中断,正在响应的低优先级中断,反之则不能。反之则不能。同优先级中断同优先级中断不能互相中断

24、不能互相中断。同一中断优先级中,若有多个中断源同时请求中断,同一中断优先级中,若有多个中断源同时请求中断,CPUCPU将将先响应先响应优先权高的中断,优先权高的中断,后响应后响应优先权低的中断。优先权低的中断。中断嵌套中断嵌套 当当CPUCPU正在执行某个中断服务程序时,如果发生更高一正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,级的中断源请求中断,CPUCPU可以可以“中断中断”正在执行的低优先级正在执行的低优先级中断中断,转而响应更高一级的中断,这就是中断嵌套。转而响应更高一级的中断,这就是中断嵌套。中断嵌套只能高优先级中断嵌套只能高优先级“中断中断”低优先级,低优先级不低

25、优先级,低优先级不能能“中断中断”高优先级,同一优先级也不能相互高优先级,同一优先级也不能相互“中断中断”。中断嵌套结构类似与中断嵌套结构类似与调用子程序嵌套,调用子程序嵌套,不同不同的是的是:子程序嵌套是在程序子程序嵌套是在程序中事先按排好的;中断中事先按排好的;中断嵌套是嵌套是随机随机发生的。发生的。子程序嵌套无次序限子程序嵌套无次序限制,中断嵌套只允许高制,中断嵌套只允许高优先级优先级“中断中断”低优先低优先级。级。5.1.7 5.1.7 中断系统的应用中断系统的应用 中断初始化中断初始化 设置堆栈指针设置堆栈指针SPSP 定义中断优先级定义中断优先级 定义外中断触发方式定义外中断触发方

26、式 开放中断开放中断 安排好等待中断或中断发生前主程序应完成的操作内容。安排好等待中断或中断发生前主程序应完成的操作内容。中断服务主程序中断服务主程序 中断服务子程序内容要求:中断服务子程序内容要求:在中断服务入口地址设置一条跳转指令,转移到中断服务在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。程序的实际入口处。根据需要保护现场。根据需要保护现场。中断源请求中断服务要求的操作。中断源请求中断服务要求的操作。恢复现场。与保护现场相对应,注意先进后出、后进先出恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。操作原则。中断返回,最后一条指令必须是中断返回,最后一条指

27、令必须是RETIRETI。中断初始化中断初始化 设置堆栈指针设置堆栈指针SPSP 因中断涉及保护断点因中断涉及保护断点PCPC地址和保护现场数据,地址和保护现场数据,且均要用堆栈实现保护,因此要设置适宜的堆栈深且均要用堆栈实现保护,因此要设置适宜的堆栈深度。度。深度要求不高且工作寄存器组深度要求不高且工作寄存器组1 13 3不用时,不用时,可维持复位时状态:可维持复位时状态:SP=07HSP=07H,深度为深度为2424B(20H2FHB(20H2FH为位寻址区为位寻址区)。要求有一定深度要求有一定深度时时,可,可设设置置SP=60HSP=60H或或5050H H,深度分深度分别为别为3232

28、B B和和4848B B。定义中断优先级定义中断优先级根据中断源的轻重缓急,划分高优先级和低优先级。根据中断源的轻重缓急,划分高优先级和低优先级。用用MOV IPMOV IP,#XXH#XXH或或SETB XXSETB XX指指令令设设置。置。定义外中断触发方式定义外中断触发方式 一般情况,定义边沿触发方式为宜。若外中断一般情况,定义边沿触发方式为宜。若外中断信号无法适用边沿触发方式,必须采用电信号无法适用边沿触发方式,必须采用电平触平触发发方方式式时时,应应在硬件在硬件电电路上和中断服路上和中断服务务程序中采取撤除程序中采取撤除中断中断请请求信号的措施。求信号的措施。开放中断开放中断 注意开

29、放中断必须同时开放二级控制,即同时注意开放中断必须同时开放二级控制,即同时置位置位EAEA和需要开放中断的中断允许控制和需要开放中断的中断允许控制位。可用位。可用MOV IEMOV IE,#XXH#XXH指令指令设设置,也可用置,也可用SETB EASETB EA和和SETB SETB XXXX位操作指令位操作指令设设置。置。安排好等待中断或中断发生前主程序应完成的安排好等待中断或中断发生前主程序应完成的操作内容。操作内容。中断服务主程序中断服务主程序 中断服务子程序内容要求:中断服务子程序内容要求:在中断服务入口地址设置一条跳转指令,转在中断服务入口地址设置一条跳转指令,转移到中断服务程序的

30、实际入口处。移到中断服务程序的实际入口处。由于由于8080C51C51相邻两个中断入口地址间只有相邻两个中断入口地址间只有8 8B B的的空间空间,8 8B B只能容纳一个有只能容纳一个有3838条指令的极短程序,条指令的极短程序,一般情况中断服务程序均大大超出一般情况中断服务程序均大大超出8 8B B长度。因此,长度。因此,必须跳转到其他合适的地址空间。跳转指令可用必须跳转到其他合适的地址空间。跳转指令可用SJMPSJMP、AJMPAJMP或或LJMPLJMP指令,指令,SJMPSJMP、AJMPAJMP均受跳转范围均受跳转范围影响,影响,建议用建议用LJMPLJMP指令指令,则则可将真正的

31、中断服可将真正的中断服务务程程序不受限制地安排在序不受限制地安排在6464KBKB任何地方。任何地方。根据需要保护现场根据需要保护现场。保护现场不是中断服务程序的必需部分。保护现场不是中断服务程序的必需部分。通常是通常是保护保护AccAcc、PSWPSW和和DPTRDPTR等特殊功能寄存器中的内容。若等特殊功能寄存器中的内容。若中断服务程序中不涉及中断服务程序中不涉及AccAcc、PSW,DPTRPSW,DPTR,则不需保护,则不需保护,也不需恢复。例如:累加器也不需恢复。例如:累加器A A是最常用的特殊功能寄是最常用的特殊功能寄存器,主程序中不可能不用到存器,主程序中不可能不用到A A。而发

32、生中断又是随而发生中断又是随机的,可能正好发生在对机的,可能正好发生在对A A进行操作、进行操作、A A中的数据还有中的数据还有用时进入中断,而在中断服务程序中又涉及到用时进入中断,而在中断服务程序中又涉及到A A,改改变了变了A A中的内容,则在进入中断服务程序对中的内容,则在进入中断服务程序对A A操作前应操作前应对原对原A A中数据进行保护,以便中断返回后恢复中数据进行保护,以便中断返回后恢复A A中原来中原来数据数据 需要指出的是需要指出的是,保护现场数据越少越好,数据保,保护现场数据越少越好,数据保护越多,堆栈负担越重,堆栈深度设置护越多,堆栈负担越重,堆栈深度设置应应越深。越深。中

33、断源请求中断服务要求的操作中断源请求中断服务要求的操作。若是外中断电平触发方式,应有若是外中断电平触发方式,应有中断信号撤除中断信号撤除操作。若是串行收发中断,应有对操作。若是串行收发中断,应有对RIRI、TITI清清0 0指令。指令。恢复现场恢复现场。与保护现场相对应,注意先进后出、。与保护现场相对应,注意先进后出、后进先出操作原则。后进先出操作原则。(6)(6)中断返回中断返回,最后一条指令必须是,最后一条指令必须是RETIRETI。【例【例5-1】出租车计价器计程方法是车轮每运转一圈出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断产生一个负脉冲,从外中断INT0INT0(P3

34、.2P3.2)引脚输入,引脚输入,行驶里程为轮胎周长行驶里程为轮胎周长运转圈数,设轮胎周长为运转圈数,设轮胎周长为2 2m m,试实时计算出租车行驶里程(单位米),数据存试实时计算出租车行驶里程(单位米),数据存3232H H、31H31H、30H30H。中断系统应用举例中断系统应用举例解:编程如下:解:编程如下:ORGORG 0000H 0000H;复位地址复位地址 LJMPLJMP STAT STAT;转初始化转初始化 ORGORG 0003H 0003H;中断入口地址中断入口地址 LJMPLJMP INT INT;转中断服务程序转中断服务程序 ORG 0100HORG 0100H;初始化

35、程序首地址初始化程序首地址STAT:MOV SP,#60HSTAT:MOV SP,#60H;置堆栈指针置堆栈指针 SETB IT0SETB IT0;置边沿触发方式置边沿触发方式 MOV IP,#01HMOV IP,#01H;置高优先级置高优先级 MOV IE,#81HMOV IE,#81H;开中开中 MOV 30H,#0MOV 30H,#0;里程计数器清里程计数器清0 0 MOV 31H,#0MOV 31H,#0;MOV 32H,#0 MOV 32H,#0;LJMP MAIN LJMP MAIN;转主程序转主程序,并等待中断并等待中断 ORG 0200HORG 0200H;中断服务子程序首地址

36、中断服务子程序首地址INT:PUSH AccINT:PUSH Acc;保护现场保护现场 PUSH PSWPUSH PSW;MOV A,30H MOV A,30H;读低读低8 8位计数器位计数器 ADD A,#2ADD A,#2;低低8 8位计数器加位计数器加2 2m m MOV 30H,A MOV 30H,A;回存回存 CLR ACLR A;ADDC A,31H ADDC A,31H;中中8 8位计数器加进位位计数器加进位 MOV 31H,AMOV 31H,A;回存回存 CLR ACLR A;ADDC A,32H ADDC A,32H;高高8 8位计数器加进位位计数器加进位 MOV 32H,A

37、MOV 32H,A;回存回存 PUSH PSWPUSH PSW;恢复现场恢复现场 PUSH Acc PUSH Acc;RETI RETI;中断返回中断返回MAIN主程序可以处理主程序可以处理循环显示等任务。循环显示等任务。【例【例5-35-3】现有】现有5 5个外中断源个外中断源EX1EX1、EX20EX20、EX21EX21、EX22EX22和和EX23EX23,高电平时表示请求中断,要求执行相应中断高电平时表示请求中断,要求执行相应中断服务程序,试编制程序。服务程序,试编制程序。解:解:ORGORG0000H0000H;复位地址复位地址LJMPLJMP MAINMAIN;转主程序转主程序O

38、RGORG0003H0003H;中断入口地址中断入口地址LJMPLJMP PINT0PINT0;转中断服务程序转中断服务程序ORGORG0013H0013H;中断入口地址中断入口地址LJMPLJMP PINT1PINT1;转中断服务程序转中断服务程序 ORGORG0100H0100H ;主程序首地址主程序首地址MAIN:MOVMAIN:MOVSP,#60HSP,#60H;置堆栈指针置堆栈指针 ORLORLTCON,#05HTCON,#05H;置置INT0INT0、INT1INT1为边沿触发方式为边沿触发方式 SETBSETB PX0 PX0 ;置为高优先级置为高优先级 MOVMOVIE,#0F

39、FHIE,#0FFH;全部开中全部开中 ;主程序内容主程序内容 ORG 1000HORG 1000H;中断服务程序首地址中断服务程序首地址 PINT0:PUSHPINT0:PUSH AccAcc;中断中断,保护现场保护现场 LCALL WORK1LCALL WORK1;调用调用EX1EX1服务子程序服务子程序 POPPOPAccAcc;恢复现场恢复现场 RETIRETI;中断返回中断返回 ORGORG 2000H 2000H ;中断服务程序首地址中断服务程序首地址PINT1:CLRPINT1:CLR EA EA ;CPU;CPU禁中禁中 PUSHPUSH Acc Acc ;中断保护现场中断保护

40、现场 PUSHPUSH DPH DPH ;PUSH PUSH DPL DPL ;SETB SETB EA EA ;CPU;CPU开中开中 JB P1.0,JB P1.0,LWK20LWK20;P1.0=1,EX20;P1.0=1,EX20请求中断请求中断 JB P1.1,JB P1.1,LWK21LWK21;P1.1=1,EX21;P1.1=1,EX21请求中断请求中断 JB P1.2,JB P1.2,LWK22LWK22;P1.2=1,EX22;P1.2=1,EX22请求中断请求中断 LCALL WORK23 LCALL WORK23 ;P1.3=1,;P1.3=1,调用调用EX23EX23

41、服务子服务子LRET:LRET:CLR CLR EA EA;CPU;CPU禁中禁中 POPPOP DPL DPL;恢复现场恢复现场 POPPOP DPH DPH;POP POP Acc Acc;SETB SETB EA EA;CPU;CPU开中开中 RETIRETI;中断返回中断返回LWK20LWK20:LCALL WORK20:LCALL WORK20;P1.0=1,;P1.0=1,调用调用EX20EX20服务子程序服务子程序 SJMP LRET SJMP LRET ;转中断返回转中断返回LWK21LWK21:LCALL WORK21:LCALL WORK21;P1.1=1,;P1.1=1,

42、调用调用EX21EX21服务子程序服务子程序 SJMP LRETSJMP LRET;转中断返回转中断返回LWK22LWK22:LCALL WORK22 :LCALL WORK22 ;P1.2=1,;P1.2=1,调用调用EX22EX22服务子程序服务子程序 SJMP LRETSJMP LRET;转中断返回转中断返回【例】【例】通过外部中断通过外部中断1,1,在中断服务中将在中断服务中将B B寄存器里的内寄存器里的内容左环移一位。已知容左环移一位。已知:(:(B)=01h,B)=01h,要求采用要求采用边沿触边沿触发发,低优先级低优先级。此例的实际意义:在此例的实际意义:在INT1INT1引脚接

43、一个引脚接一个按钮开关按钮开关到地,每到地,每按一下按钮就申请一次中断,中断服务则是:按一下按钮就申请一次中断,中断服务则是:依次点亮依次点亮八盏灯中的一盏。八盏灯中的一盏。P1.0P1.0P1.7P1.7INT1INT1300 ORG 0000HORG 0000H LJMP LJMP MAINMAIN ORG 0013H ;ORG 0013H ;中断矢量中断矢量 LJMP LJMP INTINTMAINMAIN:SETB EA ;SETB EA ;开总中断允许开总中断允许“开关开关”SETB EX1 ;SETB EX1 ;开分中断允许开分中断允许“开关开关”CLR PX1 ;0 CLR PX

44、1 ;0 优先级(也可不要此句)优先级(也可不要此句)SETB IT1 ;SETB IT1 ;边沿触发边沿触发 MOV B,#01H;MOV B,#01H;给给 B B 寄存器赋初值寄存器赋初值HEREHERE:SJMP SJMP HEREHERE ;原地等待中断申请原地等待中断申请INTINT:MOV AMOV A,B ;B ;自自B B寄存器中寄存器中取数取数 RL A ;RL A ;左环移一次左环移一次 MOV BMOV B,A ;A ;存回存回B,B,备下次取用备下次取用 MOV P1MOV P1,A A ;输出到输出到P1P1口口 RETI ;RETI ;中断返回中断返回中断服中断服

45、 务程序务程序 定时定时/计数器是单片机系统一个重要的部计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,件,其工作方式灵活、编程简单、使用方便,可用来实现可用来实现定时控制定时控制、延时延时、频率测量频率测量、脉宽脉宽测量测量、信号发生信号发生、信号检测信号检测等。此外,定时等。此外,定时/计数器还可作为串行通信中波特率发生器。计数器还可作为串行通信中波特率发生器。5-25-2 8080C51C51定时定时/计数器计数器1 1定时定时/计数器的结构计数器的结构一一.定时定时/计数器概述计数器概述内部总线内部总线工作工作方式方式工作工作方式方式THTH 1 1TLTL 1

46、1TH TH 0 0TL TL 0 0 TCONTCONTMODTMODT T 1(1(P3.5)P3.5)T T 0(0(P3.4)P3.4)微微处处理理器器定时器定时器:对片内机器时钟对片内机器时钟(周期方波周期方波)进行计数进行计数计数器计数器:对对TxTx引脚引脚输入的负脉冲进行计数输入的负脉冲进行计数8080C51C51单片机内部有单片机内部有两个定时两个定时/计数器计数器T0T0和和T1T1,其其核心是计数器,基本功能是核心是计数器,基本功能是加加1 1。对外部事件脉冲(对外部事件脉冲(下降沿下降沿)计数,是计数器;对)计数,是计数器;对片片内机周脉冲计数内机周脉冲计数,是定时器。

47、,是定时器。计数器由计数器由二个二个8 8位计数器位计数器组成。组成。定时时间和计数值可以编程设定,其方法是在计定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后数器内设置一个初值,然后加加1 1计满后溢出计满后溢出。调整调整计数器初值,可调整从计数器初值,可调整从初值初值到到计满溢出计满溢出的数值,的数值,即调整了定时时间和计数值。即调整了定时时间和计数值。定时定时/计数器作为计数器时,外部事件脉冲必须从计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高频率不能超规定的引脚输入。且外部脉冲的最高频率不能超过时钟频率的过时钟频率的1/241/24。5.2.1

48、 5.2.1 定时定时/计数器概述计数器概述TCONTCON低低4 4位与外中断位与外中断 、有关,已在有关,已在中断中叙述。中断中叙述。高高4 4位与定时位与定时/计数器计数器T0T0、T1T1有关。有关。TF1:TF1:定时定时/计数器计数器T1T1溢出标志。溢出标志。TF0:TF0:定时定时/计数器计数器T0T0溢出标志。溢出标志。TR1:TR1:定时定时/计数器计数器T1T1运行控制位。运行控制位。TR1=1,T1TR1=1,T1运行运行;TR1=0,T1TR1=0,T1停。停。TR0:TR0:定时定时/计数器计数器T0T0运行控制位。运行控制位。TR0=1,T0TR0=1,T0运行运

49、行;TR0=0,T0TR0=0,T0停。停。TCONTCON的字节地址为的字节地址为8888H H,每一位有位地址,均可位操作。每一位有位地址,均可位操作。定时定时/计数器计数器控制控制寄存器寄存器TCONTCON5.2.2 5.2.2 定时定时/计数器的控制寄存器计数器的控制寄存器TCONTCONT1T1中断中断标志标志T1T1运行运行标志标志T0T0中断中断标志标志T0T0运行运行标志标志INT1INT1中断中断标志标志INT1INT1触发触发方式方式INT0INT0中断中断标志标志INT0INT0触发触发方式方式位名称位名称TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT

50、1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H高高4 4位控制位控制T1T1低低4 4位控制位控制T0T0门控门控位位计数计数/定时定时方式选择方式选择工作方式工作方式选择选择门控门控位位计数计数/定时定时方式选择方式选择工作方式工作方式选择选择G GC/TC/TM1M1M0M0G GC/TC/TM1M1M0M0TMODTMOD用于设定定时用于设定定时/计数器的工作方式计数器的工作方式低低4 4位位用于控制用于控制T0T0,高高4 4位位用于控制用于控制T1T1。定时定时/计数器工作方式控制寄存器计数

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服