器讲中断与定时课件

上传人:枫** 文档编号:568510331 上传时间:2024-07-25 格式:PPT 页数:57 大小:318KB
返回 下载 相关 举报
器讲中断与定时课件_第1页
第1页 / 共57页
器讲中断与定时课件_第2页
第2页 / 共57页
器讲中断与定时课件_第3页
第3页 / 共57页
器讲中断与定时课件_第4页
第4页 / 共57页
器讲中断与定时课件_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《器讲中断与定时课件》由会员分享,可在线阅读,更多相关《器讲中断与定时课件(57页珍藏版)》请在金锄头文库上搜索。

1、单片机的中断系统单片机中断系统l l中断的定义中断的定义l l所所谓谓中中断断,是是指指CPUCPU正正在在处处理理某某些些事事务务的的时时候候,外外部部又又发发生生了了某某一一事事件件,请请求求CPUCPU及及时时处处理理。于于是是,CPUCPU暂暂时时中中断断当当前前的的工工作作,转转而而处处理理所所发发生生的的事事件件。处处理理完完毕毕,再再回回到到原原来来被被中中断断的的地地方方,继续原来的工作。这样的过程,称为中断。继续原来的工作。这样的过程,称为中断。器讲中断与定时课件器讲中断与定时课件中断示意图器讲中断与定时课件器讲中断与定时课件中断源中断源 中断申请中断申请开放中断开放中断保护

2、现场保护现场中断服务中断服务恢复现场恢复现场中断返回中断返回中断涉及的几个环节手机手机铃声响了提醒你去接你准备去接电话一开始你正在看我的视频教程在电脑上暂停我的这个视频教程你开始接电话挂断电话回来继续看我的视频教程AT89S52单片机的中断源及TCON S52 S52系列有系列有6 6个个中断源中断源(比(比S51S51多一个多一个T2T2) 2 2个外部中断请求:个外部中断请求:INT0INT0,INT1INT1 3 3个片内定时器个片内定时器/ /计数器计数器T0T0和和T1T1中断请求:中断请求: TF0TF0,TF1TF1,(TF2TF2) 1 1个串行口中断请求:个串行口中断请求:T

3、I/RITI/RI定时器控制寄存器TCON (88H)TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0TCONTCONTF0/TF1TF0/TF1:定时器定时器0/0/定时器定时器1 1溢出中断申请标志位:溢出中断申请标志位: =0 =0:定时器未溢出;:定时器未溢出; =1 =1:定时器溢出申请中断,进中断后自动清零。定时器溢出申请中断,进中断后自动清零。TR0/TR1TR0/TR1:定时器运行启停控制位:定时器运行启停控制位: =0 =0:定时器停止运行;:定时器停止运行; =1 =1:定时器启动运行。定时器启动运行。TCONT

4、CON:TimerTimer控制寄存器控制寄存器,是管理定时器工作的,是管理定时器工作的SFRSFR(其中低(其中低4 4位管外部中断)位管外部中断)定时器控制寄存器TCON (88H)TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0TCONTCONIE0/IE1IE0/IE1:外部中断申请标志位:外部中断申请标志位: =0 =0:没有外部中断申请;:没有外部中断申请; =1 =1:有外部中断申请。有外部中断申请。IT0/IT1IT0/IT1:外部中断请求的触发方式选择位:外部中断请求的触发方式选择位: =0=0:在:在INT0/I

5、NT1INT0/INT1端申请中断的信号端申请中断的信号低电平低电平触发触发; ; =1 =1:在在INT0/INT1INT0/INT1端申请中断的信号端申请中断的信号负跳变负跳变触发触发. .TCONTCON:TimerTimer控制寄存器控制寄存器,低低4 4位管理外部中断位管理外部中断在在CPUCPU已经开放了外部中断允许的前提下:已经开放了外部中断允许的前提下:在在INT0INT0/ /INT1INT1引脚输入一个引脚输入一个负脉冲负脉冲或或低电平低电平, TCONTCON寄存器中的寄存器中的IE0/IE1IE0/IE1标志位自动变标志位自动变“1”“1”,检测到检测到IE0/IE1I

6、E0/IE1变变“1”“1”后后, ,将产生指令:将产生指令:执行中断服务程序执行中断服务程序, ,并将并将IE0/IE1IE0/IE1标志位自动清标志位自动清“0”,“0”,以备下次申请以备下次申请。外部中断(INT0,INT1)申请过程TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0TCONTCON EAEA ET2 ES ET1 EX1 ET0 EX0 ET2 ES ET1 EX1 ET0 EX0IEIE中断允许寄存器中断允许寄存器IE IE (0A8H)(0A8H) EX0/EX1/ET1/ET0/ES EX0/EX1/ET

7、1/ET0/ES 位位: 分别是分别是INT0/1INT0/1,Timer0/1Timer0/1,串行口,串行口的中断允的中断允 许控制位许控制位: : =0 =0 时禁止中断;时禁止中断; =1=1 时时允许允许中断。中断。ET2ET2:T2T2中断允许控制位(仅中断允许控制位(仅5252系列系列有)有) =0 =0 时禁止中断;时禁止中断; =1=1 时时允许允许中断。中断。EAEA:总的中断允许控制位(总开关):总的中断允许控制位(总开关): =0 =0 时禁止全部中断;时禁止全部中断;=1=1 时时允许允许中断。中断。中断系统硬件结构注注: :各中断允许控制位各中断允许控制位=0,=0

8、,开关断开开关断开; =1,=1,开关接通开关接通IE0IE0EX0EX0TF0TF0IE1IE1TF1TF1TITIESESET1ET1EX1EX1ET0ET0外部中断外部中断 请求请求0 0外部中断外部中断 请求请求1 1内部内部 定时器定时器0 0内部内部 定时器定时器1 1内部内部 串行口串行口T TR RRIRIIEIE寄存器寄存器 EA EA位位IPIP寄存器寄存器各单路开关各单路开关 总开关总开关中断源标志中断源标志位查询机构位查询机构高中断级高中断级中断请求中断请求低中断级低中断级中断请求中断请求中断入口中断入口中断源中断源标志位标志位INT0INT0INT1INT1中断入口中

9、断入口中断源中断源标志位标志位 PT2 PS PT1PT2 PS PT1 PX1 PX1 PT0 PX0PT0 PX0IPIPPX0/PX1PX0/PX1:INTINT0/10/1优先级控制位:优先级控制位: =0=0 时属时属低低优先级;优先级; =1=1 时属时属高高优先级。优先级。PT0/PT1/PT2PT0/PT1/PT2:T0/1/2T0/1/2中断优先级控制位:中断优先级控制位: =0 =0 时属低优先级;时属低优先级; =1=1 时属时属高高优先级。优先级。PS1PS1:串行口中断优先级控制位:串行口中断优先级控制位: =0 =0 时属时属低低优先级;优先级; =1=1 时属时属

10、高高优先级。优先级。中断优先级控制寄存器中断优先级控制寄存器IP IP (0B8H)(0B8H)【例】PX1=1;外中断INT1被设置成高优先级PT0=0;定时器T0被设置成低优先级总线方式IP=0x04;/IP=00000100将PX1设为1PT0设为0;对对同时发生同时发生多个中断申请时:多个中断申请时:不同优先级的中断同时申请不同优先级的中断同时申请( (很难遇到很难遇到) ) 先高后低先高后低相同优先级的中断同时申请相同优先级的中断同时申请( (很难遇到很难遇到) ) 按序执行按序执行正处理低优先级中断又接到高级别中断正处理低优先级中断又接到高级别中断 高打断低高打断低正处理高优先级中

11、断又接到低级别中断正处理高优先级中断又接到低级别中断 高不理低高不理低中断优先级处理原则单片机的中断矢量与优先级中断矢量中断矢量: 单片机的单片机的 6 6 个中断源分别对应有各个中断源分别对应有各自的自的中断服务程序入口地址中断服务程序入口地址中断矢量中断矢量000BH000BHTF0TF0定时定时/ /计数器计数器0(T0)0(T0)002BH002BHTF2TF2定时定时/ /计数器计数器2(T2)2(T2)0023H0023HRI/TIRI/TI串行口接收串行口接收/ /发送发送001BH001BHTF1TF1定时定时/ /计数器计数器1(T1)1(T1)0013H0013HIE1IE

12、1外部中断外部中断1( INT1)1( INT1)0003H0003HIE0IE0外部中断外部中断0( INT0)0( INT0)中断优先级中断优先级中断矢量中断矢量申请标志申请标志中中 断断 源源最高优先级最高优先级最低优先级最低优先级5interruptm修饰符修饰符interruptmC51中断函数必须通过它进行修饰。在中断函数必须通过它进行修饰。在C51程序设计中,当函数定义时用了程序设计中,当函数定义时用了interruptm修饰符,修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按段和尾段,并按51系统中断的处

13、理方式自动把它安排在程系统中断的处理方式自动把它安排在程序存储器中的相应位置。序存储器中的相应位置。在该修饰符中,在该修饰符中,m的取值为的取值为031,对应的中断情况如下:,对应的中断情况如下:0外部中断外部中断01定时定时/计数器计数器T02外部中断外部中断13定时定时/计数器计数器T14串行口中断串行口中断5定时定时/计数器计数器T2其它值预留。其它值预留。器讲中断与定时课件器讲中断与定时课件C51编译器从绝对地址编译器从绝对地址8m+3处产生一个中断向量,其中处产生一个中断向量,其中m为中断号,也即为中断号,也即interrupt后面的数字。该向量包含一后面的数字。该向量包含一个到中断

14、函数入口地址的绝对跳转。个到中断函数入口地址的绝对跳转。器讲中断与定时课件器讲中断与定时课件【例】编写一个用于统计外中断【例】编写一个用于统计外中断0的中断次数的中的中断次数的中断服务程序断服务程序intx;voidint0()interrupt0using1x+;usingn修饰符修饰符修饰符修饰符usingn用于指定本函数内部使用的工作寄存用于指定本函数内部使用的工作寄存器组,其中器组,其中n的取值为的取值为03,表示寄存器组号。,表示寄存器组号。可以省略可以省略省略后系统自动选择省略后系统自动选择器讲中断与定时课件器讲中断与定时课件中断函数注意如下:中断函数注意如下:(1)中断函数不能进

15、行参数传递,如果中断函数中包含中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。任何参数声明都将导致编译出错。(2)中断函数没有返回值,如果企图定义一个返回值将中断函数没有返回值,如果企图定义一个返回值将得不到正确的结果,建议在定义中断函数时将其定义为得不到正确的结果,建议在定义中断函数时将其定义为void类型,以明确说明没有返回值。类型,以明确说明没有返回值。器讲中断与定时课件器讲中断与定时课件单片机的定时/计数器定时器计数器的概念l l一、计数的概念一、计数的概念一、计数的概念一、计数的概念选票:画选票:画选票:画选票:画“ “正正正正” ”。这就是计数,生活中计数

16、的例子处处可见。比如。这就是计数,生活中计数的例子处处可见。比如。这就是计数,生活中计数的例子处处可见。比如。这就是计数,生活中计数的例子处处可见。比如一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。落下,盆的容量是有限的,过一段时间之后,

17、水就会逐渐变满。5151单单单单片机中有两个计数器,分别称之为片机中有两个计数器,分别称之为片机中有两个计数器,分别称之为片机中有两个计数器,分别称之为T0T0和和和和T1T1,这两个计数器分别是由两,这两个计数器分别是由两,这两个计数器分别是由两,这两个计数器分别是由两个个个个8 8位的位的位的位的RAMRAM单元组成的,即每个计数器都是单元组成的,即每个计数器都是单元组成的,即每个计数器都是单元组成的,即每个计数器都是1616位的计数器,最大的位的计数器,最大的位的计数器,最大的位的计数器,最大的计数量是计数量是计数量是计数量是6553665536。二、定时二、定时二、定时二、定时计数器是

18、如何作为定时器来用的呢?比如一个闹钟,将它定时在计数器是如何作为定时器来用的呢?比如一个闹钟,将它定时在计数器是如何作为定时器来用的呢?比如一个闹钟,将它定时在计数器是如何作为定时器来用的呢?比如一个闹钟,将它定时在1 1个小时后响闹,我们也能说成是秒针走了(个小时后响闹,我们也能说成是秒针走了(个小时后响闹,我们也能说成是秒针走了(个小时后响闹,我们也能说成是秒针走了(36003600)次,所以时间就转)次,所以时间就转)次,所以时间就转)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时化为秒针走的次数的

19、,也就是计数的次数了,可见,计数的次数和时化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间十分相关。那么它们的关系是什么呢?也就是秒针每一次走动间之间十分相关。那么它们的关系是什么呢?也就是秒针每一次走动间之间十分相关。那么它们的关系是什么呢?也就是秒针每一次走动间之间十分相关。那么它们的关系是什么呢?也就是秒针每一次走动的时间要正好是的时间要正好是的时间要正好是的时间要正好是1 1秒。秒。秒。秒。只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,只要计

20、数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是同一个东西,只不过计数器是记录的外单片机中的定时器和计数器是同一个东西,只不过计数器是记录的外单片机中的定时器和计数器是同一个东西,只不过计数器是记录的外单片机中的定时器和计数器是同一个东西,只不过计数器是记录的外部的触发脉冲,而定时器则是由单片机供给一个非常稳定的计数源。部的触发脉冲,而定时器则是由单片机供给一个非常稳定的计数源。部的触发脉冲,而定时器则是由单片机供给一个非常稳定的计数源。部的触发脉冲,而定时器则是由单片机供给一个非常稳定的计数源。供给定时器的是计数源是机器周期供给定时器的是计数源是机器周期供给定时

21、器的是计数源是机器周期供给定时器的是计数源是机器周期器讲中断与定时课件器讲中断与定时课件l l也就是由单片机的晶体震荡器经过也就是由单片机的晶体震荡器经过也就是由单片机的晶体震荡器经过也就是由单片机的晶体震荡器经过1212分频后获得的一个脉分频后获得的一个脉分频后获得的一个脉分频后获得的一个脉冲源(机器周期)。晶振的频率是很准确的,所以这个计冲源(机器周期)。晶振的频率是很准确的,所以这个计冲源(机器周期)。晶振的频率是很准确的,所以这个计冲源(机器周期)。晶振的频率是很准确的,所以这个计数脉冲的时间间隔也很准。一个数脉冲的时间间隔也很准。一个数脉冲的时间间隔也很准。一个数脉冲的时间间隔也很准

22、。一个12M12M的晶振,它供给给计的晶振,它供给给计的晶振,它供给给计的晶振,它供给给计数器的脉冲时间间隔是数器的脉冲时间间隔是数器的脉冲时间间隔是数器的脉冲时间间隔是1 1微秒。计数脉冲的间隔与晶振有微秒。计数脉冲的间隔与晶振有微秒。计数脉冲的间隔与晶振有微秒。计数脉冲的间隔与晶振有关,关,关,关,12M12M的晶振,计数脉冲的间隔是的晶振,计数脉冲的间隔是的晶振,计数脉冲的间隔是的晶振,计数脉冲的间隔是1 1微秒。微秒。微秒。微秒。这是逻辑图,可以看到这是逻辑图,可以看到T1是一个单刀双掷开关,说明定一个定时是一个单刀双掷开关,说明定一个定时/计数器计数器同一时刻要么作定时用,要么作计数

23、用,不能同时用;同一时刻要么作定时用,要么作计数用,不能同时用;接通接通T1引脚时作为外部计数用。(引脚时作为外部计数用。(T0的引脚是的引脚是P3.4,T1的引脚是的引脚是P3.5)。)。器讲中断与定时课件器讲中断与定时课件l l比如滴水的例子,当水持续落下,盆中的水逐渐变满,最终会有一滴比如滴水的例子,当水持续落下,盆中的水逐渐变满,最终会有一滴水使得盆中的水全满了。这个时候如果再有一滴水落下,水会漫出来,水使得盆中的水全满了。这个时候如果再有一滴水落下,水会漫出来,用术语来讲就是用术语来讲就是“ “溢出溢出” ”,而每一滴水落下,用术语来说就是发出一,而每一滴水落下,用术语来说就是发出一

24、个计数脉冲。个计数脉冲。 水溢出是流到地上,而计数器溢出后就会引发一个定水溢出是流到地上,而计数器溢出后就会引发一个定时中断事件,就象定时的时间一到,闹钟就会响一样。时中断事件,就象定时的时间一到,闹钟就会响一样。l l现在另一个问题是:要有多少个计数脉冲才会产生事件。现在另一个问题是:要有多少个计数脉冲才会产生事件。 l l刚才已研究过,计数器的容量是刚才已研究过,计数器的容量是1616位,也就是最大的计数值到位,也就是最大的计数值到6553665536,因此计数计到,因此计数计到6553665536就会产生溢出。这个没有问题,问题是我们现就会产生溢出。这个没有问题,问题是我们现实生活中,经

25、常会有少于实生活中,经常会有少于6553665536个计数值的要求,如制药厂包装线上,个计数值的要求,如制药厂包装线上,一瓶药片为一瓶药片为100100粒,粒,500500瓶为一箱瓶为一箱 那么怎么样来满足这个要求呢?那么怎么样来满足这个要求呢?l l举例举例 如果是一个空的水盆要如果是一个空的水盆要1 1万滴水滴进去才会满,我在开始滴水之万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要前就先放入一勺水,还需要1000010000滴吗?对了,这时我们就采用预置滴吗?对了,这时我们就采用预置数的办法,我要计数的办法,我要计100100,那我就先放进,那我就先放进6543665436,再

26、来,再来100100个脉冲,不个脉冲,不就到了就到了6553665536了吗。定时也是如此,每个脉冲是了吗。定时也是如此,每个脉冲是1 1微秒,则计满微秒,则计满6553665536个脉冲需时个脉冲需时65.53665.536毫秒,但现在我只要毫秒,但现在我只要1010毫秒,怎么办?毫秒,怎么办?1010个毫秒个毫秒为为1000010000个微秒,所以,只要在计数器里面放进个微秒,所以,只要在计数器里面放进5553655536就可以了。就可以了。溢出的概念和设置任意定时计数的方法溢出的概念和设置任意定时计数的方法器讲中断与定时课件器讲中断与定时课件3 3个个1616位位定时器定时器/ /计数器

27、计数器 ( (5151系列有系列有2 2个个1616位位TimerTimer少一个少一个T2)T2)定时器定时器: :对片内机器时钟对片内机器时钟( (周期方波周期方波) )进行计数进行计数计数器计数器: :对对TxTx引脚输入的负脉冲进行计数引脚输入的负脉冲进行计数与与TimerTimer工作有关的工作有关的特殊功能寄存器:特殊功能寄存器: TCON TCON 和和 TMOD TMODAT89S52单片机的定时器单片机的定时器/计数器计数器单片机定时/计数器内部结构l l单片机定时/计数器内部结构图器讲中断与定时课件器讲中断与定时课件定时器的2个特殊功能寄存器(TCON)TF1 TR1 TF

28、0 TR0 IE1 IT1 IE0 IT0定时器定时器控制控制寄存器寄存器TCON TCON (88H)(88H)TF0/TF1TF0/TF1: : 定时器定时器0/10/1计数溢出标志位。计数溢出标志位。 =1 =1 计数溢出;计数溢出; =0 =0 计数未满计数未满 TF0/TF1TF0/TF1标志位标志位可用于可用于申请中断申请中断或或供供CPUCPU查询查询。 在进入中断服务程序时会自动清零;但在在进入中断服务程序时会自动清零;但在 查询方式时必须软件清零。查询方式时必须软件清零。TR0/TR1TR0/TR1: : 定时器定时器0/10/1运行控制位。运行控制位。 =1 =1 启动计数

29、;启动计数; =0 =0 停止计数停止计数TR0/TR1TR0/TR1:定时器:定时器0/10/1运行控制位运行控制位: TR0/TR1 =0 TR0/TR1 =0 时,时,Timer0/1Timer0/1停止计数停止计数 TR0/TR1 =1 TR0/TR1 =1 时,时,Timer0/1Timer0/1启动计数启动计数定时器T0/T1 中断申请过程 在已经开放在已经开放T0/T1T0/T1中断允许且已被启动的前提下:中断允许且已被启动的前提下: T0/T1T0/T1加满溢出加满溢出时时 TF0/TF1TF0/TF1标志位自动置标志位自动置“1”“1” 检测到检测到TCONTCON中中TF0

30、/TF1TF0/TF1变变“1”“1”后后, ,将产生指令:将产生指令: 执行中断服务程序执行中断服务程序, , TF0/TF1TF0/TF1标志位会自动清标志位会自动清“0”,“0”,以备下次中断申请。以备下次中断申请。 定时定时/ /计数器可按片内计数器可按片内机器周期机器周期定时,也可对由定时,也可对由T0/T1T0/T1引脚输入一个引脚输入一个负脉冲负脉冲进行加法计数进行加法计数TF1 TF1 TR1TR1 TF0 TF0 TR0TR0 IE1 IT1 IE0 IT0IE1 IT1 IE0 IT0TCON TCON (88H)(88H)GATE C / T M1 M0 GATE C /

31、 T M1 M0定时器定时器方式方式寄存器寄存器TMOD TMOD (89H)(89H)T1T1T0T0M1,M0M1,M0:工作方式定义位工作方式定义位 ( ( 定义定义4 4 种方式种方式 ): ):C/T C/T :计数器计数器/ /定时器选择位定时器选择位 = 1 = 1 外部事件外部事件计数器计数器。对。对T0/T1T0/T1引脚的引脚的负脉冲负脉冲计数;计数; = 0 = 0 片内时钟片内时钟定时器定时器。对。对机器周期脉冲机器周期脉冲计数定时计数定时0 00 0:1313位位 定时器定时器几乎不用几乎不用0 10 1:1616位位 定时器定时器经常用到经常用到1 01 0:可自动

32、重装的:可自动重装的 8 8位位 定时器定时器经常用到经常用到1 11 1:T0 T0 分为分为2 2个个8 8位位 Timer Timer;T1 T1 此时不工作此时不工作 几乎不用几乎不用GATE C / T M1 M0 GATE C / T M1 M0T1T0GATEGATE门控位门控位: : TimerTimer可由软件与硬件两者控制可由软件与硬件两者控制 GATE = 0 GATE = 0 普通用法普通用法 Timer Timer的的启启/ /停停由由软件软件对对TRxTRx位写位写“1”/“0”“1”/“0”控制控制定时器定时器方式方式寄存器寄存器TMODTMOD(89H)(89H

33、) GATE = 1 GATE = 1 门控用法门控用法 Timer Timer的的启启/ /停停由由软件软件对对TR0/TR1TR0/TR1位写位写“1”/“0”“1”/“0” 和和在在INT0/INT1INT0/INT1引脚引脚上出现的信号的上出现的信号的高高/ /低低共共同控制同控制l lGATE=0GATE=0时,定时时,定时/ /计数是否工作,只取决于计数是否工作,只取决于TR0TR0是否为是否为1 1。GATE=1GATE=1,只有,只有TR0TR0为为1 1,且且INT0INT0管脚也是高电平,定时管脚也是高电平,定时/ /计数才工作。计数才工作。l l 从电路上看到从电路上看到

34、GATEGATE是一个非门,它与是一个非门,它与INTxINTx组成一个或门,这个或门与组成一个或门,这个或门与TR0TR0又组成一又组成一个与门。当个与门。当GATE=0GATE=0时,则时,则GATE=1(GATE=1(非门非门) ),此时无论,此时无论INT0INT0为高或低,它们相或之后为高或低,它们相或之后必然为必然为1 1,此时只要,此时只要TR0=1TR0=1,则工作,则工作,TR0=0TR0=0则不工作,不受则不工作,不受INT0INT0的影响。当的影响。当GATE=1GATE=1时,时,GATE=0GATE=0,则,则INT0=1INT0=1时,它们相或为时,它们相或为1 1

35、,此时定时器是否工作受,此时定时器是否工作受TR0TR0影响;若影响;若INT0=0INT0=0,则无论,则无论TR0TR0为什么,定时器都不能工作,即当为什么,定时器都不能工作,即当GATE=0GATE=0时,定时器受时,定时器受INT0INT0和和TR0TR0共同的作用。共同的作用。l l所以,所以,GATEGATE位的状态决定定时器运行控制取决于位的状态决定定时器运行控制取决于TR0TR0的一个条件还是的一个条件还是TR0TR0和和INT0INT0引引脚这两个条件。当脚这两个条件。当GATE=1GATE=1时,由于时,由于GATEGATE信号封锁了与门,使引脚信号封锁了与门,使引脚INT

36、0INT0信号无效。而信号无效。而这时候如果这时候如果TR0=1TR0=1,则接通模拟开关,使计数器进行加法计数,即定时,则接通模拟开关,使计数器进行加法计数,即定时/ /计数工作。而计数工作。而TR0=0TR0=0,则断开模拟开关,停止计数,定时,则断开模拟开关,停止计数,定时/ /计数不能工作。计数不能工作。l l当当GATE=0GATE=0时,与门的输出端由时,与门的输出端由TR0TR0和和INT0INT0电平的状态确定,此时如果电平的状态确定,此时如果TR0=1TR0=1,INT0=1INT0=1与门输出为与门输出为1 1,允许定时,允许定时/ /计数器计数,在这计数器计数,在这 种情

37、况下,运行控制由种情况下,运行控制由TR0TR0和和INT0INT0两个条件共同控制,两个条件共同控制,TR0TR0是确定定时是确定定时/ /计数器的运行控制位,由软件置位或清计数器的运行控制位,由软件置位或清“0”“0”。振荡器振荡器 12TLx THx (8位位) (8位位)TFx申请申请中断中断TxTx端端TRxTRx位位GATEGATE位位INTxINTx端端11& &C/T=0C/T=1控制控制 开开关关或门或门与门与门非门非门器讲中断与定时课件器讲中断与定时课件定时器结构与工作方式工作方式工作方式1 1:1616位的定时位的定时/ /计数器计数器振荡器振荡器 12 TLx THx

38、(8位位) (8位位)TFx申请申请中断中断TxTx端端TRxTRx位位GATEGATE位位INTxINTx端端11& &C/T=0C/T=1控制控制 =1开开关接通关接通或门或门与门与门在工作方式1下,计数器的计数值范围是:165536(216)当为定时工作方式1时,定时时间的计算公式为:(216计数初值)晶振周期12或(216计数初值)机器周期其时间单位与晶振周期或机器周期相同。 THx/TLxTHx/TLx赋初值赋初值:THxTHx赋高赋高8 8位,位,TLxTLx赋低赋低8 8位位工作方式工作方式1 1 的编程要点的编程要点: TMODTMOD选方式选方式: 写写“M1,M0”=01“

39、M1,M0”=01 选方式选方式1 1 若不用门控位若不用门控位, ,直接用软件写直接用软件写TRxTRx控制启控制启/ /停停 若使用门控位,先置位若使用门控位,先置位TRxTRx,然后由,然后由INTxINTx端端 的的高高/ /低电平低电平来控制其启来控制其启/ /停停 若要允许若要允许中断中断,还须先置位,还须先置位ETxETx、EAEA等中断等中断 允许控制位,并编写允许控制位,并编写中断服务中断服务程序程序 若不用中断,可若不用中断,可查询查询“计数溢出标志计数溢出标志TFxTFx” 的方式工作,但溢出标志的方式工作,但溢出标志TFxTFx须软件清须软件清0 0工作方式工作方式2

40、2:8 8 位自动重装的定时位自动重装的定时/ /计数器计数器振荡器振荡器 12TLx (8位位)TFx申请申请中断中断TxTx端端TRxTRx位位GATEGATE位位INTxINTx端端11& &C/T=0C/T=1控制控制 =1开关接通开关接通或门或门与门与门THx (8位位)溢溢出出位位门开门开 THx/TLx THx/TLx赋相同初值赋相同初值 在在TLxTLx计数达到计数达到0FF0FFH H 再加再加“1”“1”时,时,TL0TL0 将溢出将溢出, ,进位位进位位直接进入直接进入“TFxTFx”去申请去申请 中断中断, ,同时同时打开三态门打开三态门,使,使THxTHx中的值中的值

41、 自动自动重装重装(Copy)(Copy)进进TLxTLx工作方式工作方式 2 2 的编程:的编程: TMOD TMOD寄存器选方式:寄存器选方式: 写写“M1“M1,M0” = M0” = 1010选中方式选中方式2 2 其他用法与各种方式其他用法与各种方式1 1完全相同完全相同T0T0: 组织成组织成TL0TL0和和TH0TH0两个两个8 8位定时位定时/ /计数器计数器TimerTimer工作方式工作方式 3 3 几乎无用几乎无用T1T1: 不再是不再是定时定时/ /计数器了计数器了 T1T1 的的TR1TR1和和TF1TF1出借给出借给TH0TH0当控制位使用当控制位使用, , 剩下的

42、剩下的TH1/TL1TH1/TL1寄存器只能当作普通寄存寄存器只能当作普通寄存 器用。器用。振荡器振荡器 12TL0 (8位位)TF0申请申请中断中断T0T0端端TR0TR0位位GATEGATE位位INT0INT0端端11& &C/T=0C/T=1控制控制 =1开关接通开关接通或门或门与门与门TH0 (8位位)TF1申请申请中断中断TR1TR1位位控制控制 =1TimerTimer工作方式工作方式 3 3 结构:结构:T0T0成为双成为双 8 8位位Timer Timer T1T1不再有不再有TimerTimer功能功能 TF1TF1,TR1TR1出借给出借给TH0TH0 定时器小结:定时器小

43、结: (2 2个个1616位加法计数器)位加法计数器)运行运行/ /停止停止由由TRxTRx位控制,位控制,( (当当GATE=1GATE=1时:时: 由由TRxTRx位和位和TxTx引脚上的信号共同控制引脚上的信号共同控制) )工作方式工作方式由由TMODTMOD决定决定; ; 计数计数/ /定时定时由由C/TC/T位决定位决定 工作方式工作方式0 0(1313位)位) 永远不用永远不用 工作方式工作方式3 3(T0T0拆为双拆为双8 8位)位) 几乎几乎无用无用 工作方式工作方式1 1(1616位)位) 经常用到经常用到 工作方式工作方式2 2(8 8位自动重装)位自动重装) 经常用到经常

44、用到从初值按机器周期或外部脉冲递加,溢出位从初值按机器周期或外部脉冲递加,溢出位 TFxTFx申请中断申请中断;中断允许中断允许由由ETxETx位和位和EAEA位控制,位控制,l l定时器定时器定时器定时器/ /计数器的定时计数器的定时计数器的定时计数器的定时/ /计数范围计数范围计数范围计数范围l l工作方式工作方式0 0:1313位定时位定时/ /计数方式,因此,最多计数方式,因此,最多能计到能计到2 2的的1313次方,也就是次方,也就是81928192次。次。l l工作方式工作方式1 1:1616位定时位定时/ /计数方式,因此,最多计数方式,因此,最多能计到能计到2 2的的1616次

45、方,也就是次方,也就是6553665536次。次。l l工作方式工作方式2 2和工作方式和工作方式3 3,都是,都是8 8位的定时位的定时/ /计数计数方式,因此,最多能计到方式,因此,最多能计到2 2的的8 8次方,也说是次方,也说是256256次。次。l l预置值计算:用最大计数量减去需要的计数次预置值计算:用最大计数量减去需要的计数次数即可。数即可。器讲中断与定时课件器讲中断与定时课件串行口与串行通信串行通信的基本特征是串行通信的基本特征是数据数据逐位顺序逐位顺序进行传送进行传送串行通信的格式及约定(如:同步方式、通讯速串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平率

46、、数据块格式、信号电平等)不同,形成等)不同,形成了多种串行通信的协议与接口标准。了多种串行通信的协议与接口标准。常见的有:常见的有:通用异步收发器通用异步收发器(UART)(UART)本课程介绍的串口本课程介绍的串口通用串行总线(通用串行总线(USBUSB)I2CI2C总线总线CANCAN总线总线SPISPI总线总线RS-232CRS-232C, RS-485,RS422ARS422A标准标准等等等等全双工串行接口全双工串行接口(UART)(UART)数据通信的数据通信的几个术语:几个术语: 并行并行:数据各位:数据各位同时同时进行传送进行传送 串行串行:数据:数据逐位顺序逐位顺序进行传送进

47、行传送全双工全双工:(:(串行通信串行通信) )收收/ /发发可同时可同时进行进行 半双工半双工:(:(串行通信串行通信) )收收/ /发发不可不可同时进行同时进行异步串行通信异步串行通信: :以以字符字符为单位进行传送为单位进行传送 同步串行通信同步串行通信: :以以数据块数据块为单位进行传送为单位进行传送 波特率波特率(bps.)(bps.): :单位时间传送的位数单位时间传送的位数51单片机的串行接口SBUF(发)(发)SBUF(收)(收)发送控制器发送控制器 TI接收控制器接收控制器 RI移位寄存器移位寄存器波波特特率率发发生生器器T1 1A累累加加器器(门门)移位寄存器移位寄存器Rx

48、DTxD去申请中断去申请中断引脚引脚引脚引脚CPU内内部部 SM0 SM1 SM2 REN TB8 RB8 TI RISCONSCON SM0 SM0,SM1SM1:串行口串行口4 4种工作方式的选择位。种工作方式的选择位。 0 0 0 0 方式方式0 0:8 8位移位寄存器位移位寄存器I/O,I/O,波特率波特率固定固定为为 f foscosc/12/12 0 1 0 1 方式方式1 1:8 8位位UARTUART(1 1+8+8+1 1位)位), 波特率波特率可变可变, ,按公式计算按公式计算 1 0 1 0 方式方式2 2:9 9位位UARTUART(1 1+8+1+8+1+1 1位)位

49、), 波特率波特率固定固定= =f fosc osc x1/32x1/32或或1/641/64 1 1 1 1 方式方式3 3:9 9位位UARTUART(1 1+8+1+8+1+1 1位)位), 波特率波特率可变可变,按公式计算,按公式计算 SM2SM2:串行口串行口多机通信多机通信控制位控制位 (作为方式(作为方式2 2、方式、方式3 3的的附加控制位附加控制位)串行口控制寄存器SCON(98H) RI,TIRI,TI:串行口收串行口收/ /发数据申请中断标志位发数据申请中断标志位 1 1 申请中断;申请中断; 0 0 不申请中断不申请中断 TB8TB8:方式方式2 2、3 3中,是要发送

50、的第中,是要发送的第9 9位数据。位数据。 多机通信中多机通信中,TB8=0 ,TB8=0 表示发送的是数据;表示发送的是数据; TB8=1 TB8=1 表示发送的是地址。(奇偶校验)表示发送的是地址。(奇偶校验) RB8RB8:在方式在方式2 2、3 3中,是收到的第中,是收到的第9 9位数据。位数据。 在多机通信中在多机通信中, ,用作区别地址帧用作区别地址帧/ /数据帧的数据帧的 标志。(奇偶校验)标志。(奇偶校验) SM0 SM1 SM2 REN TB8 RB8 TI R1 RENREN:串行口接收允许控制位串行口接收允许控制位 = 1 = 1 表示允许接收;表示允许接收; = 0 =

51、 0 禁止接收。禁止接收。SCONSCONSMOD GF1 GF0 PD 1DL电源控制寄存器 PCON PCON(97H97H)特殊功能寄存器特殊功能寄存器PCONPCON不能按位寻址不能按位寻址 SMODSMOD:在串行口工作方式在串行口工作方式 1 1、2 2、3 3 中,中, 是是波特率加倍位波特率加倍位 =1 =1 时,波特率加倍时,波特率加倍 =0 =0 时,波特率不加倍。时,波特率不加倍。 ( (在在PCONPCON中只有这一个位与串口有关中只有这一个位与串口有关) ) PCONPCON串行口工作方式 0工作方式工作方式0 0:8 8位移位寄存器位移位寄存器I/OI/O方式方式发

52、送:发送:SBUFSBUF中的串行中的串行数据数据由由RxDRxD逐位移出;逐位移出; TxDTxD输出输出移位时钟移位时钟,频率,频率=fosc1/12=fosc1/12; 每送出每送出8 8位数据位数据 TITI就自动置就自动置1 1; 需要用需要用软件清零软件清零 TITI。 接收:串行接收:串行数据数据由由RxDRxD逐位移入逐位移入SBUFSBUF中;中; TxDTxD输出输出移位时钟移位时钟,频率,频率=fosc1/12=fosc1/12; 每接收每接收 8 8位数据位数据RIRI就自动置就自动置1 1; 需要用需要用软件清零软件清零 RIRI。经常配合经常配合“串入并出串入并出”

53、“”“并入串出并入串出”移位移位 寄存器一起使用扩展接口寄存器一起使用扩展接口 74HC164 74HC165 74HC164 74HC165等等我们开发板不涉及这方面我们开发板不涉及这方面 所以不做讲解所以不做讲解工作方式工作方式0 0:8 8位移位寄存器位移位寄存器I/OI/O方式方式常用于串行通讯。除发常用于串行通讯。除发/ /收收8 8位数据外,还位数据外,还 在在D0D0位前有一个位前有一个起始位起始位“0”“0”; 在在D7D7位后有一个位后有一个停止位停止位“1”“1”。方式方式1 1工作时:工作时: 发送端发送端自动添加自动添加一个起始位和一个停止位;一个起始位和一个停止位;

54、接收端接收端自动去掉自动去掉一个起始位和一个停止位。一个起始位和一个停止位。工作方式工作方式1 1: :8 8位位UARTUART( (1 1+8+8+1 1位位) )波特率波特率可变可变 波特率可变波特率可变 用定时器用定时器T1T1作波特率发生器:作波特率发生器: 公式:公式:波特率波特率 = =(2 2SMODSMOD/32/32) T1T1的溢出率的溢出率波特率波特率= =(2(2SMODSMOD/32)/32) T1T1的溢出率的溢出率 溢出率:溢出率:T1T1溢出的频繁程度溢出的频繁程度 即:即:T1T1溢出一次所需时间的倒数。溢出一次所需时间的倒数。 初值初值 X = 2 2n

55、n - - 2 2SMODSMOD fosc fosc3232 波特率波特率 1212 波特率波特率 = =2 2SMODSMOD fosc fosc3232 12(2 12(2n n - - X X) )其中:其中:X X 是定时器初值是定时器初值 初值初值 X = 2 2n n - - 2 2SMODSMOD fosc fosc32 32 波特率波特率 1212 用用T1T1工作于工作于方式方式2 2来产生波特率来产生波特率12001200, 已知晶振频率已知晶振频率= =6MHz6MHz。要求出。要求出T1T1的的初值初值:初值初值 X = 2 28 8 - - 2 20 0 6 6 1

56、0106 63232 1200 1200 1212= 256 - - = 256 - - 13.026 6 10106 6460800460800 243 = 0F3H 结果后面要用到结果后面要用到 常用波特率和常用波特率和T1T1初值查表初值查表串口波特率串口波特率(方式方式1,3)foscSMOD位位(PCON中中)定定时时器器T1C/T方式方式初初值值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F4H6006MHz0020E8H1106MHz00272HRxDRxD引脚为引脚为接收端接收

57、端,TxDTxD引脚为引脚为发送发送端端, ,由波特率由波特率 发生器发生器T1T1控制发送速度控制发送速度, ,不同于方式不同于方式0 0:收:收/ /发都发都 需要由需要由TxDTxD送出移位时钟送出移位时钟。 T1T1作波特率发生器时作波特率发生器时初始化包括初始化包括: : 选选定时器定时器工作方式工作方式2 2(TMOD(TMOD选选8 8位自动重装位自动重装);); 将计算出的将计算出的初值初值X X赋给赋给TH1,TL1TH1,TL1; ; 启动启动T1T1 ( (TR1=1TR1=1);); 注意!注意!对对T1T1不要开中断不要开中断 ! !工作方式工作方式1 1的接收的接收

58、/ /发送发送串行口的初始化包括串行口的初始化包括: : 对对SCONSCON选工作方式选工作方式 对对PCONPCON设波特率加倍位设波特率加倍位“SMODSMOD”(”(缺省值缺省值=0)=0) 如果是接收数据如果是接收数据, ,仍要先置仍要先置“1”“1”RENREN位位 SM0 SM1 SM2 REN TB8 RB8 TI R1SCONSCON SM0 SM0,SM1SM1:串行口工作方式选择位。串行口工作方式选择位。 0 1 0 1 :方式:方式1 1,8 8位位UARTUART(1 1+8+8+1 1位)位) RENREN:串行口串行口接收允许接收允许位。位。 REN=1 REN=

59、1 允许接收允许接收串行口控制寄存器串行口控制寄存器SCONSCON 0 1 0 1 0 0 0 0 TB8TB8,RB8RB8,TITI,RIRI等位由运行中间的情况等位由运行中间的情况 决定,可先写成决定,可先写成 “0” “0” SM2SM2:串行口串行口多机通信多机通信控制位控制位, ,作为方式作为方式2 2、3 3 的的附加控制位附加控制位,此处不用,可写成,此处不用,可写成“0”“0”由于波特率固定由于波特率固定, ,常用于常用于单片机间单片机间通讯。通讯。 数据由数据由8+8+1 1位组成,通常附加的一位位组成,通常附加的一位 (TB8/RB8)(TB8/RB8)用于用于“奇偶校

60、验奇偶校验”。 工作方式工作方式2 2: : 9 9位位UARTUART( (1 1+8+1+8+1+1 1位位) )两种两种波特率波特率 方式方式2 2的波特率的波特率 = fosc = fosc 2 2SMODSMOD/64/64 即即: : f fosc osc 1/32 1/32 或或 f fosc osc 1/64 1/64 两种两种奇偶校验奇偶校验是检验串行通信双方传输的数据正确是检验串行通信双方传输的数据正确与否的与否的一个措施一个措施,并不能保证通信数据的传输一并不能保证通信数据的传输一定正确定正确。 换言之:如果换言之:如果奇偶校验发生错误,表明数据传奇偶校验发生错误,表明数

61、据传输一定出错了;如果奇偶校验没有出错,输一定出错了;如果奇偶校验没有出错,绝不等绝不等于于数据传输完全正确。数据传输完全正确。奇校验:奇校验:8 8位位有效数据连同有效数据连同1 1位位附加位中,附加位中, 二进制二进制“1”“1”的个数的个数为为奇数奇数 偶校验:偶校验:8 8位位有效数据连同有效数据连同1 1位位附加位中,附加位中, 二进制二进制“1”“1”的个数的个数为为偶数偶数约定约定接收接收采用采用奇校验奇校验 若接收到的若接收到的9 9位位数据中数据中“1”“1”的个数为奇数,的个数为奇数, 则表明接收则表明接收正确正确,取出,取出8 8位有效数据即可;位有效数据即可; 若接收到

62、的若接收到的9 9位位数据中数据中“1”“1”的个数为的个数为偶数偶数, 则表明接收则表明接收出错出错!应当进行!应当进行出错处理出错处理。约定约定发送发送采用采用奇校验奇校验 若若发送发送的的8 8位有效数据中位有效数据中“1”“1”的个数为的个数为偶数偶数, 则要则要人为添加人为添加一个附加位一个附加位“1”“1”一起发送;一起发送; 若若发送发送的的8 8位有效数据中位有效数据中“1”“1”的个数为的个数为奇数奇数, 则要则要人为添加人为添加一个附加位一个附加位“0”“0”一起发送。一起发送。采用采用偶校验偶校验时,处理方法与时,处理方法与奇校验奇校验相反相反 回顾:回顾: 程序状态字寄

63、存器程序状态字寄存器PSWPSW中有一个中有一个奇偶状态位奇偶状态位 P PCYACF0RS0OVPRS1PSW.7PSW.0 P P (PSW.0):(PSW.0):奇偶状态位。奇偶状态位。 P=1 P=1 表示目前累加器中表示目前累加器中 “1” “1”的个数为的个数为奇数奇数 P=0 P=0 表示目前累加器中表示目前累加器中 “1” “1”的个数为的个数为偶数偶数CPUCPU随时监视着随时监视着AccAcc的的“1”“1”的个数的个数并自动反映在并自动反映在 P P工作方式工作方式2 2 的的奇偶校验用法奇偶校验用法串口方式串口方式2 2 的的奇偶校验用法:奇偶校验用法: SM0 SM1

64、 SM2 REN TB8 RB8 TI R1SCONSCON串行口控制寄存器串行口控制寄存器SCONSCONTB8 RB8工作方式工作方式3 3: :当当SM0,SM1SM0,SM1为为1111时时, ,串行口工作于方式串行口工作于方式3 3 9 9位位UARTUART( (1 1+8+1+8+1+1 1位位) ) 波特率可变波特率可变 串口方式串口方式3 3和方式和方式2 2唯一的区别是波特率机制不同唯一的区别是波特率机制不同。方式方式2 2的波特率固定为时钟周期的的波特率固定为时钟周期的3232或或6464分频,分频,不可变。此工作方式与其他串行通讯设备连接困不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。难,因此不常用。方式方式3 3的的波特率可变,按前面的公式计算:波特率可变,按前面的公式计算: 波特率波特率= =(2(2SMODSMOD/32)/32) T1T1的溢出率的溢出率 波特率波特率 = =2 2SMODSMOD fosc fosc3232 12(2 12(2n n - - X X) )其中:其中:X X 是定时器初值是定时器初值

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号