单片机的中断与定时系统v_第1页
单片机的中断与定时系统v_第2页
单片机的中断与定时系统v_第3页
单片机的中断与定时系统v_第4页
单片机的中断与定时系统v_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第5 5章章 单片机的中断与定时系统单片机的中断与定时系统 学习目标学习目标n掌握中断系统的基本概念掌握中断系统的基本概念n掌握中断系统使用的相关寄存器掌握中断系统使用的相关寄存器n掌握中断系统的编程方法及应用掌握中断系统的编程方法及应用n掌握计数掌握计数/ /定时的基本概念定时的基本概念n掌握计数掌握计数/ /定时使用的相关寄存器定时使用的相关寄存器n掌握计数掌握计数/ /定时器的编程方法及应用定时器的编程方法及应用 主要内容主要内容5.1 5.1 中断系统中断系统 5.1.1 5.1.1 中断的基本概念中断的基本概念5.1.2 5.1.2 中断源及中断请求中断源及中断请求5.1.3 5.

2、1.3 中断系统结构中断系统结构5.1.4 5.1.4 中断控制中断控制5.1.5 5.1.5 中断处理过程中断处理过程5.1.6 5.1.6 中断系统的应用中断系统的应用5.2 5.2 定时定时/ /计数器接口计数器接口5.2.1 5.2.1 定时定时/ /计数器的主要特性计数器的主要特性5.2.2 5.2.2 定时定时/ /计数器计数器T0T0、T1T1的结构的结构5.2.3 5.2.3 定时定时/ /计数器的控制寄存器计数器的控制寄存器5.2.4 5.2.4 定时定时/ /计数器的工作方式计数器的工作方式5.2.5 5.2.5 定时定时/ /计数器的初始化编程及应用计数器的初始化编程及应

3、用5.3 5.3 中断及定时系统综合应用中断及定时系统综合应用 与上对比,单片机中也有同样的问题。与上对比,单片机中也有同样的问题。CPU正在执行原程正在执行原程序,突然,被意外事情打断,转去执行新程序。序,突然,被意外事情打断,转去执行新程序。CPU执行新程执行新程序结束后,又回到原程序中继续执行。这样的过程就叫序结束后,又回到原程序中继续执行。这样的过程就叫 。 什么叫中断?什么叫中断? 举例:举例:课堂教学中,当老师正在按备课教案给同学们讲课课堂教学中,当老师正在按备课教案给同学们讲课 时,课堂中任何一个同学都可能突然间提出问题,老师暂停时,课堂中任何一个同学都可能突然间提出问题,老师暂

4、停正在讲授的课程内容,解答同学的问题,问题解决后,老师正在讲授的课程内容,解答同学的问题,问题解决后,老师接着刚才的内容继续讲授课程。这样一个过程实质上就是一接着刚才的内容继续讲授课程。这样一个过程实质上就是一个中断过程。个中断过程。 5.1 515.1 51的中断系统的中断系统5.1.1 5.1.1 中断的概念中断的概念5.1 515.1 51的中断系统的中断系统5.1.1 5.1.1 中断的概念中断的概念 老师按教案讲课是老师按教案讲课是“主程序主程序”;提问同学是;提问同学是“中断源中断源”;提问打断老师正常授课过程可称为;提问打断老师正常授课过程可称为“中断请求中断请求”;老师认为有必

5、要马上回答这个问;老师认为有必要马上回答这个问题,可称为是题,可称为是“中断允许中断允许”;暂停正在讲授的课;暂停正在讲授的课程内容解答同学的疑问,可称为程内容解答同学的疑问,可称为“中断响应中断响应”;解答疑问的过程可称为解答疑问的过程可称为“中断处理中断处理”;解答完疑;解答完疑问继续讲授课程内容可称之为问继续讲授课程内容可称之为“中断返回中断返回”。 单片机实现上述中断功能的部件称为单片机实现上述中断功能的部件称为中断系统中断系统 采用中断方式,采用中断方式,CPUCPU将只在外部设备提出请求时才中断正将只在外部设备提出请求时才中断正在执行的任务,来执行外部设备请求任务,这样极大地提升在

6、执行的任务,来执行外部设备请求任务,这样极大地提升了了CPUCPU的使用效率。的使用效率。5.1.2 5.1.2 中断系统的结构中断系统的结构 80C5180C51单片机的中断源共有单片机的中断源共有5 5个,其中个,其中2 2个为外部中个为外部中断源、断源、2 2个定时中断源和个定时中断源和1 1个串行中断源。个串行中断源。 1 1、2 2个外部中断源个外部中断源 外部中断是由外部事件引起的中断,分别由引脚外部中断是由外部事件引起的中断,分别由引脚P3.2P3.2和和P3.3 P3.3 引入外部中断请求有两种信号方式引入外部中断请求有两种信号方式 ,可通过设置控,可通过设置控制位制位ITXI

7、TX(X=0X=0,1 1)进行定义。)进行定义。2 2、 2 2个定时中断源个定时中断源 定时中断是为单片机的计数定时中断是为单片机的计数/ /定时器设置的中断。当定时定时器设置的中断。当定时器器TxTx对单片机内部定时脉冲或对外部计数脉冲进行计数发对单片机内部定时脉冲或对外部计数脉冲进行计数发生溢出时,置位生溢出时,置位TFxTFx,并向,并向CPUCPU申请中断。申请中断。3 3、 1 1个串行中断个串行中断 串行中断是为串行数据传送的需要而设置的中断。当串串行中断是为串行数据传送的需要而设置的中断。当串行口接收完一帧串行数据时置位行口接收完一帧串行数据时置位RIRI或当串行口发送完一帧

8、或当串行口发送完一帧串行数据时置位串行数据时置位TITI,向,向CPUCPU申请中断。申请中断。 5.1.3 5.1.3 中断系统的结构中断系统的结构 80C5180C51的中断系统有的中断系统有5 5个中断源,个中断源,2 2个优先级,个优先级,可实现二级中断嵌套可实现二级中断嵌套 。IT0 IT0 外部中断外部中断0 0触发方式控制位。触发方式控制位。 当当IT0=0IT0=0时,为电平触发方式。时,为电平触发方式。 当当IT0=1IT0=1时,为边沿触发方式(下降沿有效)。时,为边沿触发方式(下降沿有效)。IE0 IE0 外部中断外部中断0 0中断请求标志位。中断请求标志位。IT1 IT

9、1 外部中断外部中断1 1触发方式控制位。触发方式控制位。IE1 IE1 外部中断外部中断1 1中断请求标志位。中断请求标志位。TF0 TF0 定时定时/ /计数器计数器T0T0溢出中断请求标志位。溢出中断请求标志位。TF1 TF1 定时定时/ /计数器计数器T1T1溢出中断请求标志位。溢出中断请求标志位。 1 1 TCONTCON定时器与外部中断控制寄存器定时器与外部中断控制寄存器 5.1.4 5.1.4 中断控制中断控制利用中断请利用中断请求标志位来求标志位来通知通知CPUCPU中断请求!中断请求!TF1 T1TF1 T1的溢出中断标志的溢出中断标志 硬件置硬件置1 1,硬件清,硬件清0

10、0(也可软件清(也可软件清0 0)TF0 T0TF0 T0的溢出中断标志。(的溢出中断标志。(用法同用法同TF1TF1,针对,针对T0T0的的)IE1 IE1 外部中断外部中断1 1(/INT1/INT1)请求标志。)请求标志。 外部有中断请求时,外部有中断请求时,硬件使硬件使IE1IE1置置1 1,硬件清,硬件清0 0。IE0 IE0 外部中断外部中断0 0(/INT0/INT0)请求标志。)请求标志。 (用法同用法同IE1IE1)IT1 IT1 外部中断外部中断1 1(/INT1/INT1)触发类型控制位。)触发类型控制位。 IT1 = 0 IT1 = 0 ,低电平触发。,低电平触发。IT

11、1 = 1 IT1 = 1 ,下降沿触发。,下降沿触发。 IT0 IT0 外中断外中断0 0(/INT0/INT0)触发类型控制位,)触发类型控制位,用法同用法同IT1IT1。 2 2、SCONSCON的中断标志的中断标志nRIRI(SCON.0SCON.0),串行口接收中断标志位。当允许),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬串行口接收数据时,每接收完一个串行帧,由硬件置位件置位RIRI。但是,。但是,RIRI必须由软件清除必须由软件清除。nTITI(SCON.1SCON.1),串行口发送中断标志位。当),串行口发送中断标志位。当CPUCPU将一个发送数据写

12、入串行口发送缓冲器时,就启将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。每发送完一个串行帧,由硬件置动了发送过程。每发送完一个串行帧,由硬件置位位TITI。CPUCPU响应中断时,不能自动清除响应中断时,不能自动清除TITI,TITI必须必须由软件清除由软件清除。 3.3.中断允许控制中断允许控制 CPUCPU对中断系统所有中断以及某个中断源的开对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器放和屏蔽是由中断允许寄存器IEIE控制的。控制的。nEX0EX0(IE.0)(IE.0),外部中断,外部中断0 0允许位;允许位;nET0ET0(IE.1)(IE.1),定时,定时

13、/ /计数器计数器T0T0中断允许位;中断允许位; nEX1EX1(IE.2)(IE.2),外部中断,外部中断1 1允许位;允许位;nET1ET1(IE.3)(IE.3),定时,定时/ /计数器计数器T1T1中断允许位;中断允许位;nESES(IE.4)IE.4),串行口中断允许位;,串行口中断允许位;nEAEA (IE.7) (IE.7), CPUCPU中断允许(总允许)位。中断允许(总允许)位。若为若为“1”1”,开关接,开关接通,允许通,允许例如例如 SETB EASETB EA若为若为“0”0”,开关断,开关断开,不允许开,不允许例如例如 CLR IE.7CLR IE.7为什么要为什么

14、要有中断优有中断优先级?先级? CPUCPU同一时间只能响应一个中断请求。若同时同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有来了两个或两个以上中断请求,就必须有先有后。后。 ! 为此将为此将5 5个中断源分成高级、低级两个级个中断源分成高级、低级两个级别,高级优先,由别,高级优先,由IPIP控制。控制。 4. 4. 中断优先级控制中断优先级控制 5151单片机有两个中断优先级,即可实现二级中单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器优先级寄存器IPIP中的相应位的状态

15、来规定的中的相应位的状态来规定的 。nPX0PX0(IP.0IP.0),外部中断),外部中断0 0优先级设定位;优先级设定位;nPT0PT0(IP.1IP.1),定时),定时/ /计数器计数器T0T0优先级设定位;优先级设定位;nPX1PX1(IP.2IP.2),外部中断),外部中断0 0优先级设定位;优先级设定位;nPT1PT1(IP.3IP.3),定时),定时/ /计数器计数器T1T1优先级设定位;优先级设定位;nPSPS (IP.4IP.4),串行口优先级设定位。),串行口优先级设定位。该位是该位是“1”1”时,为高级优先时,为高级优先级级该位是该位是“ “ 0”0”时,为低级优时,为低

16、级优先级先级 当当CPUCPU正在执行某个中断服务程序时,如果发正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,生更高一级的中断源请求中断,CPUCPU可以可以“中断中断”正在执行的低优先级中断正在执行的低优先级中断, ,转而响应更高一级的中转而响应更高一级的中断,这就是断,这就是中断嵌套中断嵌套。中断优先级是为中断嵌套服。中断优先级是为中断嵌套服务的。务的。5.5.中断优先级控制原则和控制逻辑中断优先级控制原则和控制逻辑中断嵌套中断嵌套5151单片机的中断优先级有三条原则:单片机的中断优先级有三条原则:nCPUCPU同时接收到几个中断时,同时接收到几个中断时,首先响应优先级别最

17、首先响应优先级别最高的中断请求。高的中断请求。n正在进行的中断过程正在进行的中断过程不能被新的同级或低优先级的不能被新的同级或低优先级的中断请求所中断。中断请求所中断。n正在进行的低优先级中断服务,正在进行的低优先级中断服务,能被高优先级中断能被高优先级中断请求所中断。请求所中断。 为了实现上述后两条原则,为了实现上述后两条原则,中断系统内部设有中断系统内部设有两个用户不能寻址的优先级状态触发器。两个用户不能寻址的优先级状态触发器。其中一个其中一个置置1 1,表示正在响应高优先级的中断,它将阻断后来,表示正在响应高优先级的中断,它将阻断后来所有的中断请求;另一个置所有的中断请求;另一个置1 1

18、,表示正在响应低优先,表示正在响应低优先级中断,它将阻断后来所有的低优先级中断请求。级中断,它将阻断后来所有的低优先级中断请求。同一级中的同一级中的5 5个中断源的优先顺序是个中断源的优先顺序是: /INT0/INT0中断中断 T0T0溢出中断溢出中断 /INT1/INT1中断中断 T1T1溢出中断溢出中断 串口中断串口中断 高高低低厂家固化顺序厂家固化顺序5.1.5 单片机中断处理过程单片机中断处理过程 1 1单片机的响应条件单片机的响应条件n 有中断源发出中断请求。有中断源发出中断请求。n 中断总允许位中断总允许位EA=1EA=1。n 中断源对应的中断允许位为中断源对应的中断允许位为1 1

19、。 在满足以上条件的基础上,若有下列任何一种情况在满足以上条件的基础上,若有下列任何一种情况存在,中断响应都会受到阻断。存在,中断响应都会受到阻断。n CPUCPU正在执行一个同级或高优先级的中断服务程序。正在执行一个同级或高优先级的中断服务程序。n 正在执行的指令尚未执行完。正在执行的指令尚未执行完。n 正在执行中断返回指令正在执行中断返回指令 RETIRETI或者对专用寄存器或者对专用寄存器IEIE、 IPIP进行读进行读/ /写的指令。写的指令。n将相应的优先级状态触发器置将相应的优先级状态触发器置1 1(以阻断(以阻断后来的同级或低级的中断请求)。后来的同级或低级的中断请求)。n执行一

20、条硬件执行一条硬件LCALLLCALL指令,指令,即把程序计数即把程序计数器器PCPC的内容压入堆栈保存,再将相应的中的内容压入堆栈保存,再将相应的中断服务程序的入口地址送入断服务程序的入口地址送入PCPC。n中断处理中断处理执行中断服务程序。执行中断服务程序。2.2.中断响应过程中断响应过程 中断响应过程的前两步是由中断系统中断响应过程的前两步是由中断系统内部自动完成的,而中断服务程序则要由内部自动完成的,而中断服务程序则要由用户编写程序来完成。用户编写程序来完成。 2 2单片机的响应过程单片机的响应过程 中断处理就是执行中断服务程序,从中断处理就是执行中断服务程序,从中断入口地址中断入口地

21、址开始开始执行,直到返回指令执行,直到返回指令(RETI)(RETI)为止。此过程一般包括三部分内为止。此过程一般包括三部分内容:容: (1 1)保护现场)保护现场 (2 2)处理中断源的请求)处理中断源的请求 (3 3)恢复现场)恢复现场入口地址入口地址用途用途0000H0000H复位操作后的程序入口复位操作后的程序入口0003H0003H外部中断外部中断0 0服务程序入口服务程序入口000BH000BH定时器定时器0 0中断服务程序入口中断服务程序入口0013H0013H外部中断外部中断1 1服务程序入口服务程序入口001BH001BH定时器定时器1 1中断服务程序入口中断服务程序入口00

22、23H0023H串行口中断服务程序入口串行口中断服务程序入口002BH002BH定时器定时器2 2中断服务程序入口中断服务程序入口 3. 3. 中断返回中断返回 中断返回通过执行中断返回指令中断返回通过执行中断返回指令RETIRETI来实现,来实现,具体功能是:具体功能是:n将相应中断优先级状态触发器清将相应中断优先级状态触发器清0 0,通知中断系统,通知中断系统,中断服务程序已执行完毕。中断服务程序已执行完毕。n将中断响应时压入堆栈保存的断点地址从栈顶弹出将中断响应时压入堆栈保存的断点地址从栈顶弹出送回送回PCPC,CPUCPU从原来中断的地方继续执行程序;从原来中断的地方继续执行程序; 注

23、意,不能用注意,不能用RETRET指令代替指令代替RETIRETI指令。在中断服指令。在中断服务程序中务程序中PUSHPUSH指令与指令与POPPOP指令必须成对使用,否则不指令必须成对使用,否则不能正确返回断点能正确返回断点 。响应过程:(假设已使某中断请求标志置响应过程:(假设已使某中断请求标志置1 1)(1 1)先使相应优先级状态触发器置)先使相应优先级状态触发器置1 1;(2 2)执行一个硬件子程序的调用,)执行一个硬件子程序的调用, 1 1)硬件清零相应中断请求标志()硬件清零相应中断请求标志(TITI、RIRI除外)除外) 2 2)将当前)将当前PCPC内容压入堆栈内容压入堆栈保护

24、断点;保护断点; 3 3)将中断服务子程序入口地址送)将中断服务子程序入口地址送PCPC转移。转移。 返回过程:(返回过程:(RETIRETI执行后)执行后)(1 1)使相应优先级状态触发器清)使相应优先级状态触发器清0 0。(2 2)从堆栈中弹出栈顶的两个字节内容送)从堆栈中弹出栈顶的两个字节内容送PCPC恢复断恢复断点。点。(3 3)CPUCPU接着中断处继续执行原程序。接着中断处继续执行原程序。 4 4中断请求的撤除中断请求的撤除 CPUCPU响应某中断请求后,在中断返回前,应该响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。不同中断撤消该中断请求,否则会引起另

25、一次中断。不同中断源中断请求的撤除方法是不一样的。源中断请求的撤除方法是不一样的。n 定时器溢出中断请求的撤除定时器溢出中断请求的撤除硬件会自动清除中断请求标志硬件会自动清除中断请求标志TF0TF0或或TFlTFl。 n 串行口中断的撤除串行口中断的撤除硬件不能清除中断请求标志硬件不能清除中断请求标志TITI和和RIRI,要由软件来清除相,要由软件来清除相 应的标志。应的标志。n 外部中断的撤除外部中断的撤除 外部中断为电平触发方式时,外部中断为电平触发方式时,CPUCPU响应中断后,硬件会自响应中断后,硬件会自动清除中断请求标志动清除中断请求标志IE0IE0或或IElIEl,但由于加到或引脚

26、的外部中断,但由于加到或引脚的外部中断请求信号并未撤除,中断请求标志请求信号并未撤除,中断请求标志IE0IE0或或IElIEl会再次被置会再次被置1 1,所,所以在以在CPUCPU响应中断后应立即撤除或引脚上的低电平。响应中断后应立即撤除或引脚上的低电平。 5.1.6 5.1.6 中断系统的应用中断系统的应用中断系统示意图中断系统示意图 1 1中断初始化中断初始化n 设置堆栈指针设置堆栈指针SPSPn 定义中断优先级定义中断优先级n 定义外中断触发方式定义外中断触发方式n 开放中断开放中断n 安排好等待中断或中断发生前主程序安排好等待中断或中断发生前主程序 应完成的操作内容应完成的操作内容 5

27、.1.6 5.1.6 中断系统的应用中断系统的应用2 2现场保护和现场恢复现场保护和现场恢复 将中断时刻单片机中主要寄存器的数据或状态送入堆栈将中断时刻单片机中主要寄存器的数据或状态送入堆栈中保存起来,这就是中保存起来,这就是现场保护现场保护。中断服务结束后,在返回主。中断服务结束后,在返回主程序前,则需把保存的现场内容从堆栈中弹出,以恢复那些程序前,则需把保存的现场内容从堆栈中弹出,以恢复那些寄存器的原有内容,这就是寄存器的原有内容,这就是现场恢复现场恢复。3 3中断服务主程序中断服务主程序n 在中断服务入口地址设置一条跳转指令在中断服务入口地址设置一条跳转指令n 转移到中断服务程序的实际入

28、口处;转移到中断服务程序的实际入口处; n 根据需要保护现场;根据需要保护现场;n 中断源请求中断服务要求的操作;中断源请求中断服务要求的操作; n 恢复现场。与保护现场相对应,注意先进恢复现场。与保护现场相对应,注意先进 后出、后进先出操作原则;后出、后进先出操作原则; n 中断返回,最后一条指令必须是中断返回,最后一条指令必须是RETIRETI。 例例5-15-1 出租车计价器计程方法是车轮每运转出租车计价器计程方法是车轮每运转一圈产生一圈产生2 2个负脉冲,从外中断(个负脉冲,从外中断(P3.2P3.2)引)引脚输入,行驶里程为轮胎周长脚输入,行驶里程为轮胎周长运转圈数,运转圈数,设轮胎

29、周长为设轮胎周长为2m2m,试实时计算出租车行驶,试实时计算出租车行驶里程(单位米),数据由高字节到低字节依里程(单位米),数据由高字节到低字节依次存放于次存放于32H32H、31H31H、30H30H。 分析:分析:由由32H32H、31H31H、30H30H三个字节存放计数结果三个字节存放计数结果,最大数值为,最大数值为2 22424-1=16777215-1=16777215次,足以满足出租车次,足以满足出租车计程的使用。程序在初始化时,应先将这些存放数计程的使用。程序在初始化时,应先将这些存放数据的内存单元清零。另外,由于题目并未明确说明据的内存单元清零。另外,由于题目并未明确说明负脉

30、冲的宽度,并且硬件上也没有设计中断请求撤负脉冲的宽度,并且硬件上也没有设计中断请求撤除电路,所以除电路,所以应该将外部中断的触发方式设置为下应该将外部中断的触发方式设置为下降沿脉冲触发方式降沿脉冲触发方式。 里程数决定了乘客的付费,必须准确,所以应里程数决定了乘客的付费,必须准确,所以应将中断优先级设为最高。中断服务程序主要任务是将中断优先级设为最高。中断服务程序主要任务是完成对完成对32H32H、31H31H、30H30H三字节的加三字节的加1 1计数任务。主程计数任务。主程序应完成中断初始化任务,如设置堆栈、设定中断序应完成中断初始化任务,如设置堆栈、设定中断优先级、开中断、对内存单元清零

31、等。优先级、开中断、对内存单元清零等。经过以上分析,读者可以划出程序设计的流程图,汇编语经过以上分析,读者可以划出程序设计的流程图,汇编语言程序如下:言程序如下: ORGORG 0000H 0000H ; ;复位地址复位地址 LJMPLJMP START START ; ;转初始化转初始化 ORGORG 0003H 0003H ; ;中断入口地址中断入口地址 LJMPLJMP EINT0 ; EINT0 ;转中断服务程序转中断服务程序 ORGORG 0030H 0030H ; ;定义主程序首地址定义主程序首地址START: MOV SP,#60H ;START: MOV SP,#60H ;置堆

32、栈指针置堆栈指针 SETB IT0SETB IT0 ; ;置边沿触发方式置边沿触发方式 MOV IP,#01H ;MOV IP,#01H ;置高优先级置高优先级 MOV 30H,#0 ;MOV 30H,#0 ;里程计数器清里程计数器清0 0 MOV 31H,#0 MOV 31H,#0 ; ; MOV 32H,#0 MOV 32H,#0 ; ; MOV IE,#81H ; MOV IE,#81H ;开中断开中断 LJMP $LJMP $ ; ;等待中断等待中断 ORG 0200H ;ORG 0200H ;中断服务子程序首地址中断服务子程序首地址EINT0:PUSH Acc ;EINT0:PUSH

33、 Acc ;保护现场保护现场 PUSH PSW ;PUSH PSW ; MOV A,30H ; MOV A,30H ;读低读低8 8位计数器位计数器 ADD A,#1 ;ADD A,#1 ;低低8 8位计数器加位计数器加1m1m MOV 30H,A ; MOV 30H,A ;低低8 8位保存在位保存在30H30H单元单元 CLR ACLR A ; ; ADDC A,31H ; ADDC A,31H ;中中8 8位计数器加进位位计数器加进位 MOV 31H,A ;MOV 31H,A ;中中8 8位计数保存在位计数保存在31H31H单元单元 CLR ACLR A ; ; ADDC A,32H ;

34、ADDC A,32H ;高高8 8位计数器加进位位计数器加进位 MOV 32H,A ;MOV 32H,A ;高高8 8位计数保存在位计数保存在32H32H单元单元 POP PSWPOP PSW ; ;恢复现场恢复现场 POP Acc ;POP Acc ; RETI RETI ; ;中断返回中断返回 ENDEND例例5-25-2 如图如图5-75-7所示按键电路对应于教学实验板所示按键电路对应于教学实验板上的脉冲产生电路,每按一次按键会在单片机引脚上的脉冲产生电路,每按一次按键会在单片机引脚产生一个脉冲,使用产生一个脉冲,使用C51C51编写程序对按键次数进行编写程序对按键次数进行计数。计数。脉

35、冲产生电路脉冲产生电路 主要内容主要内容5.1 5.1 中断系统中断系统 5.1.1 5.1.1 中断的基本概念中断的基本概念5.1.2 5.1.2 中断源及中断请求中断源及中断请求5.1.3 5.1.3 中断系统结构中断系统结构5.1.4 5.1.4 中断控制中断控制5.1.5 5.1.5 中断处理过程中断处理过程5.1.6 5.1.6 中断系统的应用中断系统的应用5.2 5.2 定时定时/ /计数器接口计数器接口5.2.1 5.2.1 定时定时/ /计数器的主要特性计数器的主要特性5.2.2 5.2.2 定时定时/ /计数器计数器T0T0、T1T1的结构的结构5.2.3 5.2.3 定时定

36、时/ /计数器的控制寄存器计数器的控制寄存器5.2.4 5.2.4 定时定时/ /计数器的工作方式计数器的工作方式5.2.5 5.2.5 定时定时/ /计数器的初始化编程及应用计数器的初始化编程及应用5.3 5.3 中断及定时系统综合应用中断及定时系统综合应用5.2 5.2 定时定时/ /计数器计数器 在为学习本节内容前,我们常用软件定在为学习本节内容前,我们常用软件定时,软件定时不占用硬件资源,但占用了时,软件定时不占用硬件资源,但占用了CPUCPU时间,降低了时间,降低了CPUCPU的利用率。的利用率。 实现定时功能,比较方便的办法是利用实现定时功能,比较方便的办法是利用单片机内部的定时单

37、片机内部的定时/ /计数器。计数器。 定时定时/ /计数器是计数器是5151系列单片机的重要功能系列单片机的重要功能模块之一。在检测、控制及智能仪器应用中,模块之一。在检测、控制及智能仪器应用中,常用定时器作时钟,以实现定时检测、定时常用定时器作时钟,以实现定时检测、定时控制。还可用定时器产生宽度预先设定的脉控制。还可用定时器产生宽度预先设定的脉冲信号,以驱动步进电机一类的电器机械。冲信号,以驱动步进电机一类的电器机械。计数器主要用于外部事件的计数计数器主要用于外部事件的计数。5.2.1 5.2.1 定时定时/ /计数器的主要特性计数器的主要特性n 5151系列中系列中5151子系列有两个子系

38、列有两个1616位的可编程定时位的可编程定时/ / 计数器,计数器,5252子系列有三个。子系列有三个。n 每个定时每个定时/ /计数器既可以对系统时钟计数实现定计数器既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能,通过时,也可以对外部信号计数实现计数功能,通过编程设定初始值来实现。编程设定初始值来实现。n 每个定时每个定时/ /计数器都有多种工作方式通过编程可计数器都有多种工作方式通过编程可设定工作于某种方式。设定工作于某种方式。n 每一个定时每一个定时/ /计数器定时计数时间到时产生溢出计数器定时计数时间到时产生溢出,使相应的溢出位置位,溢出可通过查询或中断,使相应的溢出位

39、置位,溢出可通过查询或中断方式处理。方式处理。5.2.2 5.2.2 定时定时/ /计数器的结构计数器的结构 定时定时/ /计数器的实质是加计数器的实质是加1 1计数器(计数器(1616位),由高位),由高8 8位和位和低低8 8位两个寄存器组成。位两个寄存器组成。TMODTMOD是定时是定时/ /计数器的工作方式寄计数器的工作方式寄存器,确定工作方式和功能;存器,确定工作方式和功能;TCONTCON是控制寄存器,控制是控制寄存器,控制T0T0、T1T1的启动和停止及设置溢出标志。的启动和停止及设置溢出标志。 5.2.3 5.2.3 定时定时/ /计数器的控制寄存器计数器的控制寄存器 80C5

40、1 80C51单片机定时单片机定时/ /计数器的工作由两个特殊功计数器的工作由两个特殊功能寄存器控制。能寄存器控制。TMODTMOD用于设置其工作方式;用于设置其工作方式;TCONTCON用用于控制其启动和中断申请。于控制其启动和中断申请。1 1、工作方式寄存器、工作方式寄存器TMODTMOD 工作方式寄存器工作方式寄存器TMODTMOD用于设置定时用于设置定时/ /计数器的计数器的工作方式,低四位用于工作方式,低四位用于T0T0,高四位用于,高四位用于T1T1。其格式。其格式如下:如下:TMOD M0 M1C / GATE M0 M1C / GATETTT1T0 GATE GATE 门控位。

41、门控位。 GATE = 0 GATE = 0 启动不受启动不受 /INT0/INT0或或 /INT1/INT1的控制;的控制; GATE = 1 GATE = 1 启动受启动受 /INT0 /INT0 或或 /INT1 /INT1 的控制。的控制。 C/TC/T 外部计数器外部计数器 / / 定时器方式选择位定时器方式选择位 C/T = 0 C/T = 0 定时方式;定时方式; C /T = 1 C /T = 1 计数方式。计数方式。 M1M0 M1M0 工作模式选择位(编程可决定四种工工作模式选择位(编程可决定四种工作模式)作模式)。 定时定时 / / 计数器的四种工作模式计数器的四种工作模

42、式 M1 M0 M1 M0 模式模式 说明说明 0 0 0 130 0 0 13位定时位定时/ /计数器计数器 高八位高八位THTH(7 07 0)+ + 低五位低五位TLTL( 4 04 0) 0 1 1 160 1 1 16位定时位定时/ /计数器计数器 THTH(7 07 0)+ TL+ TL(7 07 0) 1 0 2 81 0 2 8位计数初值自动重装的定时位计数初值自动重装的定时/ /计数器计数器 TLTL(7 07 0) THTH(7 07 0) 1 1 3 T01 1 3 T0运行为两个独立的运行为两个独立的8 8位定时位定时/ /计数计数, ,而而T1T1停止工作。停止工作。

43、 2 2、定时、定时 / / 计数器控制寄存器计数器控制寄存器TCON TCON TCONTCONTF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0 能否启动定时能否启动定时 / / 计数器工作与计数器工作与GATEGATE有关,分两种情况:有关,分两种情况: GATE = 0 GATE = 0 时,若时,若TRi = 1TRi = 1,开启,开启TiTi计数工作;计数工作;(i = 0(i = 0或或1 1) 若若TRi = 0TRi = 0,停止,停止TiTi计数。计数。 GATE = 1 GATE = 1 时,若时,若TRi = 1 TRi

44、= 1 且且/INTi = 1/INTi = 1时开启时开启TiTi计数;计数; 若若TRi = 1 TRi = 1 且且/INTi = 0/INTi = 0时不能开启时不能开启TiTi计数。计数。 若若TRi = 0TRi = 0, 停止停止TiTi计数。计数。 TR0 TR0 定时定时 / / 计数器计数器0 0运行控制位。运行控制位。 软件置位,软件复位。软件置位,软件复位。 TR1 TR1 定时定时 / / 计数器计数器1 1运行控制位。(用法与运行控制位。(用法与TR1TR1类似)类似) C/T = 0 C/T = 0 定时;定时; C/T = 1 C/T = 1 对对外计数。外计数

45、。定时:机器周期定时:机器周期Tcy = 12 / fosc Tcy = 12 / fosc 波形等间隔,次数已定,时间确定波形等间隔,次数已定,时间确定即对机器周期进行计数。即对机器周期进行计数。 左图定时时间为左图定时时间为 N N* *TcyTcyN N个机器周期个机器周期 Tcy计数:脉冲不等间隔。计数:脉冲不等间隔。 每个下降沿计数一次每个下降沿计数一次 确认一次负跳变需两个机器周期,确认一次负跳变需两个机器周期, 所以,计数频率最高为所以,计数频率最高为fosc / 24fosc / 24。 5.2.4 5.2.4 定时定时/ /计数器的工作方式计数器的工作方式1 1、方式、方式0

46、 0 方式方式0 0为为1313位计数位计数,由,由TL0TL0的低的低5 5位(高位(高3 3位未用)和位未用)和TH0TH0的的8 8位组成。位组成。TL0TL0的低的低5 5位溢出时向位溢出时向TH0TH0进位,进位,TH0TH0溢出时,置溢出时,置位位TCONTCON中的中的TF0TF0标志,向标志,向CPUCPU发出中断请求。发出中断请求。n方式方式0 0 下下T1T1、T0T0的等效逻辑结构的等效逻辑结构 TLi(5位)THi(8位)TFi中断控制BAC/T=0振荡器1/12&1TiTRiGATEINTiC/T=104 07计数寄存器计数寄存器TLi TLi 低低5 5位位 + T

47、Hi8+ THi8位位n计数初值计算的公式为:计数初值计算的公式为:定时器模式时有定时器模式时有:N:Nt/ Tcy t/ Tcy 定时器的初值还可以采用计数个数直接取补法获得定时器的初值还可以采用计数个数直接取补法获得。计数模式时,计数脉冲是计数模式时,计数脉冲是T0T0引脚上的外部脉冲。引脚上的外部脉冲。13X=2 -Nn门控位门控位GATEGATE的作用:的作用:当当GATE=0GATE=0时,经反相后使或门输出为时,经反相后使或门输出为1 1,此时仅由,此时仅由TR0TR0控制控制与门的开启,与门输出与门的开启,与门输出1 1时,控制开关接通,计数开始;时,控制开关接通,计数开始;当当

48、GATE=1GATE=1时时,由外中断引脚信号控制或门的输出,此时控制,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和与门的开启由外中断引脚信号和TR0TR0共同控制。共同控制。当当TR0=1TR0=1时,时,外中断引脚信号引脚的外中断引脚信号引脚的高电平启动计数高电平启动计数,外中断引脚信号,外中断引脚信号引脚的引脚的低电平停止计数低电平停止计数。这种方式常用来测量外中断引脚这种方式常用来测量外中断引脚上正脉冲的宽度。上正脉冲的宽度。 16X=2 -N2 2、方式、方式1 1 方式方式1 1的计数位数是的计数位数是1616位,由位,由TL0TL0作为低作为低8 8位、位

49、、TH0TH0作作为高为高8 8位,组成了位,组成了1616位加位加1 1计数器计数器 。计数个数与计数初值的关系为:计数个数与计数初值的关系为: 与模式与模式0 0相似。相似。与模式与模式0 0的区别:计数位数不同。的区别:计数位数不同。TFi中断TLi(8位)THi(8位)07 07控制BAC/T=0振荡器1/12&1TiTRiGATEINTiC/T=1n方式方式1 1 下下T1T1、T0T0的等效逻辑结构的等效逻辑结构THiTHi(高(高8 8位)位)+ TLi+ TLi(低(低8 8位)位) 8X=2 -N3 3、方式、方式2 2 方式方式2 2为自动重装初值的为自动重装初值的8 8位

50、计数方式。位计数方式。 工作方式工作方式2 2特别适合于用作较精确的脉冲信号发生器特别适合于用作较精确的脉冲信号发生器。 计数个数与计数初值的关系为计数个数与计数初值的关系为: 与模式与模式0 0、1 1的区别:的区别:1 1)计数位数不同;)计数位数不同; 2 2)初值自动重装。)初值自动重装。 TFi中断TLi(8位)THi(8位)控制BAC/T=0振荡器1/12&1TiTRiGATEINTiC/T=1n方式方式2 2 下下T1T1、T0T0的等效逻辑结构的等效逻辑结构 4 4、方式、方式3 3 方式方式3 3只适用于定时只适用于定时/ /计数器计数器T0T0,定时器,定时器T1T1处于方

51、式处于方式3 3时相当时相当于于TR1=0TR1=0,停止计数。,停止计数。 工作方式工作方式3 3将将T0T0分成为两个独立的分成为两个独立的8 8位计数器位计数器TL0TL0和和TH0TH0。方式方式3 3适用于要求增加一个额外的适用于要求增加一个额外的8 8位定时器的应用场合。位定时器的应用场合。 T0T0定时定时/ /计数,而计数,而T1T1停止计数,但可作波特率发生器。停止计数,但可作波特率发生器。T0T0分成两独立定时分成两独立定时/ /计数器计数器TL0TL0和和TH0TH0,。,。TL0TL0使用使用C/TC/T、GATEGATE、TR0TR0、/INT0/INT0、TF0TF

52、0可作定时可作定时/ /计数。计数。TH0TH0使用使用TR1TR1、TF1TF1控制。控制。 因此,只能用于定时。因此,只能用于定时。TF0TF0中断控制BAC/T=0振荡器振荡器1/121/12&1T0T0TR0TR0GATEGATEINT0INT0C/T=1TL0TL0(8(8位位) )荡器振振1/121/12TH0TH0TF1中断(a a)TL0TL0可作可作8 8位定时位定时/ /计数器计数器(b b)TH0TH0只能作只能作8 8位定时器位定时器TR1TR1n方式方式3 3 下下T1T1、T0T0的等效逻辑结构的等效逻辑结构方式方式3 3时,时,T1T1可设为模式可设为模式0 0、

53、1 1、2 2的定时的定时/ /计数,用在任何不需要计数,用在任何不需要中断控制的场合,典型应用是用作串行通信的波特率发生器。中断控制的场合,典型应用是用作串行通信的波特率发生器。 振荡器振荡器1/121/12TL1TL1(5(5位位) )TH1TH1(8(8位位)串行口C/T=0C/T=0C/T=1C/T=1T1(P3.5)振荡器振荡器1/121/12TL1(8位)TH1(8位)串行口C/T=0C/T=1T1(P3.5)TLi(8位)THi(8位)振荡器振荡器1/121/12C/T=0C/T=1T1(P3.5)串行口(a) T0(a) T0模式模式3 3时时T1T1模式模式0 0(b) T0

54、(b) T0模式模式3 3时时T1T1模式模式1 1(c) T0(c) T0模式模式3 3时时T1T1模式模式2 25.2.5 5.2.5 定时定时/ /计数器的初始化编程及应用计数器的初始化编程及应用1 1、MCS-51MCS-51单片机定时单片机定时/ /计数器初始化编程步骤计数器初始化编程步骤n 根据要求选择方式,确定方式控制字,写入方式控制根据要求选择方式,确定方式控制字,写入方式控制 寄存器寄存器TMODTMOD。n 根据要求计算定时根据要求计算定时/ /计数器的计数值,再由计数值求得计数器的计数值,再由计数值求得 初值,写入初值寄存器。初值,写入初值寄存器。n 根据需要开放定时根据

55、需要开放定时/ /计数器中断(后面须编写中断服务计数器中断(后面须编写中断服务 程序)。程序)。n 设置定时设置定时/ /计数器控制寄存器计数器控制寄存器TCONTCON的值,启动定时的值,启动定时/ /计计 数器开始工作。数器开始工作。n 等待定时等待定时/ /计数的时间到,到则执行中断服务程序;如计数的时间到,到则执行中断服务程序;如 用查询处理,则编写查询程序判断溢出标志,溢出标用查询处理,则编写查询程序判断溢出标志,溢出标 志等于志等于1 1,则进行相应处理。,则进行相应处理。 2 2、编程前需确定的参数:、编程前需确定的参数:(1 1)定时)定时/ /计数器计数器 T0T0、T1T1

56、选择其一,选择其一,(2 2)工作方式)工作方式 C /TC /T及及GATAGATA,(3 3)计数初值)计数初值 加加1 1计数、计数、1616位。位。 计数用计数用 :初值:初值X=MX=MN N;M=2M=21313=8192=8192(模式(模式0 0) M=2M=21616=65536=65536(模式(模式1 1) M=2M=28 8=256 =256 (模式(模式2 2、模式式、模式式3 3)定时用定时用: :初值初值X=MN =M t/TcyX=MN =M t/Tcy(t t为所要求的为所要求的定时时间,定时时间,TcyTcy为机器周期)为机器周期) (4 4)工作模式)工作

57、模式 M1 M1、M0 M0 5.2.5 5.2.5 定时定时/ /计数器的初始化编程及应用计数器的初始化编程及应用()()计算计数初值计算计数初值 欲产生欲产生500s500s的等宽正方波脉冲,只的等宽正方波脉冲,只需在需在P1.0P1.0端以端以250us250us为周期交替输出高低电平即可实现,为此为周期交替输出高低电平即可实现,为此定时时间应为定时时间应为250s250s。使用。使用12MHz12MHz晶振,则一个机器周期为晶振,则一个机器周期为1s1s。方式。方式0 0为为1313位计数结构。设待求的计数初值为位计数结构。设待求的计数初值为X X,则,则N=2N=21313一一X X

58、250s/ 1s=250250s/ 1s=250 求解得:求解得:X=7942X=7942。二进制数表示为。二进制数表示为1111100000110B1111100000110B。十六。十六进制表示,高进制表示,高8 8位为位为0F8H0F8H,低,低5 5位为位为06H06H。其中高。其中高8 8位放入位放入TH1TH1,即即TH1=OF8HTH1=OF8H;低;低5 5位放入位放入TL1TL1,即,即TL1TL106H06H。 例例5-3 5-3 设单片机晶振频率为设单片机晶振频率为12MHz,12MHz,使用定时器使用定时器1 1以以方式方式0 0产生周期为产生周期为500s500s的等

59、宽正方波连续脉冲,的等宽正方波连续脉冲,并由并由P1.0P1.0输出。以查询方式完成。输出。以查询方式完成。 1 1、 方式方式0 0的应用的应用3 3、定时、定时/ /计数器应用举例计数器应用举例 5.2.5 5.2.5 定时定时/ /计数器的初始化编程及应用计数器的初始化编程及应用()()TMODTMOD寄存器初始化寄存器初始化 为把定时器为把定时器计数器计数器1 1设定为方式设定为方式0 0,则,则M1M0=00M1M0=00;为;为实现定时功能,应使实现定时功能,应使C C=0=0。定时器。定时器计数器计数器0 0不用,有关位设定为不用,有关位设定为0 0。因此。因此TMODTMOD寄

60、存器应初始化为寄存器应初始化为00H00H。()由定时器控制寄存器()由定时器控制寄存器TCONTCON中的中的TR1TR1位控制定时的启动和停止。位控制定时的启动和停止。 TR1=1TR1=1启动,启动,TR1=0TR1=0停止。停止。()程序设计()程序设计MOV MOV TMOD,TMOD,#00H#00H ; ;设置设置T1T1为工作方式为工作方式0 0MOVMOVTH1,TH1,#0F8H#0F8H ; ;设置计数初值设置计数初值MOVMOVTL1,TL1,#06H#06HMOVMOVIE,IE,#00H#00H ; ;禁止中断禁止中断 SETBSETBTR1TR1 ; ;启动定时期

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论