定时计数器和串行接口.ppt
《定时计数器和串行接口.ppt》由会员分享,可在线阅读,更多相关《定时计数器和串行接口.ppt(124页珍藏版)》请在三一办公上搜索。
1、第7章 MCS-51单片机定时/计数器和串行接口,(1)了解定时/计数器的结构和工作原理。(2)熟悉定时/计数器的控制寄存器。(3)掌握定时/计数器的应用编程。(4)了解串行通信接口的结构和工作原理。(5)熟悉串行通信接口的控制寄存器。(6)掌握串行通信的应用编程。,本章教学要求,7.1 定时/计数器,在实际的控制系统中常要求有外部实时时钟,以实现定时或延时控制;还要求有外部计数器,以实现对外界事件进行计数。比如,在单片机控制的电力拖动系统中,控制的对象为电动机,为了实现闭环控制,就需要定时地对转速进行采样。,对于定时/计数器来说,不管是独立的定时器芯片还是单片机内的定时器,大都有以下特点:(
2、1)定时/计数器有多种工作方式,可以是计数方式也可以是定时方式。(脉冲内部提供、外部提供)(2)定时/计数器的计数值是可变的,当然对计数的最大值有一定限制,这取决于计数器的位数。计数的最大值也就限制了定时的最大值。(3)可以按照规定的定时或计数值,在定时时间到或者计数终止时,发出中断申请,以便实现定时控制。,7.1.1 定时/计数器的结构及工作原理 MCS-51单片机的定时/计数器(以下简称T/C)的结构如下图所示。由图可见,T/C的核心是1个加1计数器,它的输入脉冲有两个来源:一个是外部脉冲源计数器,另一个是系统机器周期(时钟振荡器经12分频以后的脉冲信号)定时器。,图7-2 定时/计数器的
3、结构框图,当T/C处于定时方式时,加1计数器在每个机器周期加1,因此,也可以把它看作在累计机器周期。由于一个机器周期包含12个振荡周期,所以它的最高计数速率是振荡频率的1/12。用作计数器时,由于对外部信号的识别需要一个机器周期,而计数器判断的是一次下降沿,所以计数最高速率是振荡频率的1/24。,16位的加1计数器由两个8位的特殊功能寄存器THx或TLx组成(X=0、1)。它们可被程控为不同的组合状态。(13位、16位、两个分开的8位等),从而形成T/C不同的4种工作方式,这只要用指令改变TMOD(工作方式控制寄存器)的相应位即可。,7.1.2 定时/计数器的方式和控制寄存器 MCS-51单片
4、机有2个特殊功能寄存器TMOD和TCON:TMOD用于设置T/C的工作方式;TCON用于控制定时器T0、T1的启动与停止,并包含了定时器的状态。1.定时器工作方式寄存器TMOD 定时器工作方式寄存器TMOD用于选择定时器的工作方式,它的高4位控制定时器T1,低4位控制定时器T0。TMOD中各位的定义如下:,T1,T0,TMOD,89H,其中:T/C功能选择位,当=1时为计数方式;当=0时为定时方式。M1M0:T/C工作方式定义位,其具体定义方式如表所示。,GATE:门控制位,用于控制定时器的启动是否受外部中断源信号的影响。GATE=0时,与外部中断无关,由TCON寄存器中的TRx位控制启动。G
5、ATE=1时,由控制位TRx和引脚 共同控制启动,只有在没有外部中断请求信号的情况下(即外部中断引脚=1时),才允许定时器启动。利用这一功能可以方便地测量外部脉冲高电平的脉宽。,2.定时器控制寄存器TCON TCON控制寄存器各位的定义如下:,D7 D6 D5 D4 D3 D2 D1 D0,TCON,88H,其中:TF0(TF1):为T0(T1)定时器溢出中断标志位。当T0(T1)计数溢出时,由硬件置位,并在允许中断的情况下,发出中断请求信号。当CPU响应中断转向中断服务程序时,由硬件自动将该位清0。TR0(TR1):为T0(T1)运行控制位。当TR0(TR1)=1时启动T0(T1);TR0(
6、TR1)=0时关闭T0(T1)。该位由软件进行设置。,7.1.3 定时/计数器的工作方式 MCS-51单片机的T/C有4种工作方式,分别由TMOD寄存器中的M1、M0两位的二进制编码所决定。1.方式0 当M1M0=00时,T/C设定为工作方式0,构成13位的T/C。其逻辑结构如图所示。在此工作方式下,T/C构成一个13位的计数器,由THx的8位和TLx的低5位组成,TLx的高3位未用,满计数值为213。,图73 T/C方式0的逻辑结构图,2.方式1 当M1M0=01时,T/C设定为工作方式1,构成16位定时/计数器,其中THx作为高8位,TLx作为低8位,满计数值为216,其余同方式0类似。其
7、逻辑结构如图所示。,图74 T/C方式1的逻辑结构图,3.方式2 当M1M0=10时,T/C工作在方式2,构成1个自动重装载的T/C,满计数值为28。在方式2中THx和TLx被当作两个8位计数器,计数过程中,THx寄存8位初值并保持不变,由TLx进行8位计数。计数溢出时,除产生溢出中断请求外,还自动将THx中的初值重新装到TLx中去,即重装载。,图75 T/C方式2的逻辑结构图,4.方式3 方式3只适用于定时器T0。当定时器T1处于方式3时相当于TR1=0,停止计数。当T0工作在方式3时,TH0和TL0被拆成2个独立的8位计数器。这时,TL0既可作为定时器使用,也可作为计数器使用,它占用了定时
8、器T0所使用的控制位(C/、GATE、TR0、TF0),其功能和操作与方式0或方式1完全相同;而TH0只能作定时器用,并且占据了定时器T1的两个控制信号TR1和TF1。在这种情况下,定时器T1虽仍可用于方式0、1、2,但不能使用中断方式。,图76 T/C方式3的逻辑结构图,7.1.4 定时/计数器应用举例 由于MCS-51单片机的定时/计数器是可编程的,因此在使用之前需要进行初始化。在编程时主要注意两点:第一要能正确写入控制字;第二能进行计数初值的计算。一般情况下,包括以下几个步骤:(1)确定工作方式,即对TMOD寄存器进行赋值。(2)计算计数初值,并写入寄存器TH0、TL0或TH1、TL1中
9、。(3)根据需要,置位ETx允许T/C中断。(4)置位EA使CPU开中断(需要时)。(5)置位TRx启动计数。,计数初值的计算方法如下:由于定时/计数器是以加1的方式计数,因此同常用的减1计数器的算法不同。在定时方式下:假定时间常数为Tc,定时时间为T,而T=TcTp,则时间常数为,(71),其中Tp为机器周期,即12/晶振频率。应装入定时/计数器的初值为 X=2n-Tc(n为计数器的位数),(72),例1:若晶振频率为6MHz,试计算MCS-51单片机定时/计数器的最小定时时间和最大定时时间。解:先确定机器周期:计算最小定时时间:对于定时器的几种工作方式来说,最小定时时间都是一样的,即Tmi
10、n=TcTp=12s=2s 计算最大定时时间:当T/C工作在方式1下的定时时间最长,则最大定时时间为 Tmax=TcTp=2162s=131072s=131ms,晶振频率,例2:若单片机的晶振频率为6MHz,要求定时/计数器T0产生100ms的定时,试确定计数初值以及TMOD寄存器的内容。解:当晶振频率为6MHz时,产生100ms的定时接近最大值(131ms),故只能采用方式1(16位定时器)。,晶振频率,时间常数为:,计数初值为:,设置TMOD方式字:对于T0来说:M1M0=01、GATE=0。由于T1不用,可任意设置,现取为全0,因此,TMOD寄存器的内容为:TMOD=00000001B=
11、01H 试解释对于T0的寄存器设置。,例3:利用定时/计数器T0通过P1.0引脚输出周期为2ms的方波,设晶振频率为12MHz。试确定计数初值、TMOD内容及编制相应程序。解:若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即可,可采用取反指令CPL来实现。为了提高CPU的效率,可采用定时中断的方式,每1ms产生一次中断,在中断服务程序中将输出信号取反即可。定时器T0的中断入口地址为000BH。计算计数初值:对于定时1ms来说,用定时器方式0(13位定时器)就可实现。,机器周期为:,Tp=1us,时间常数为:,计数初值为:,则其高8位为E0H,低5位为18H,故TH0
12、=E0H,TL0=18H。,确定TMOD方式字:对于定时器T0来说,M1M0=00H、=0、GATE=0。定时器T1不用,取为全0。于是 TMOD=00000000B=00H 程序设计:ORG 000BH;T0中断服务程序入口 LJMP INT;转至INT处 ORG 2000H;主程序 MOV TMOD,00H;置T0为定时方式0 MOV TH0,0E0H;设置计数初值,MOV TL0,18H SETB EA;CPU开中断 SETB ET0;允许T0中断 SETB TR0;启动T0HALT:SJMP HALT;暂停,等待中断INT:CPL P1.0;输出方波 MOV TH0,0E0H;重新装入
13、计数初值 MOV TL0,18H RETI;中断返回,例7-5 设一只发光二极管LED和8051的P1.0脚相连。当P1.0脚是高电平时,LED发亮;当P1.0脚是低电平时,LED熄灭。编制程序用定时器来实现发光二极管LED的闪烁功能,设置LED每1s闪烁一次。已知单片机系统主频为12MHz。,-应用实例,设计思想:定时/计数器的最长定时是65.536ms,无法实现1s的定时。可以采用软件计数器来进行设计。定义一个软件计数器单元30H,先用定时/计数器T0做一个50ms的定时器,定时时间到后将软件计数器中的值加1,如果软件计数器计到了20(1s),取反P1.0,并清除软件计数器中的值,否则直接
14、返回。则完成了20次定时中断才取反一次P1.0,实现定时时间2050=1000ms=1s的定时。定时/计数器T0采用工作方式1(16位定时器),其初值为:21650ms/1s=6553650000=15536=3CB0H,-应用实例,程序如下:ORG0000HAJMPSTART;转入主程序ORG000BH;定时/计数器T0的中断服务程序入口地址AJMPTIME0;跳转到真正的定时器中断服务程序处ORG0030HSTART:MOVSP,#60H;设置堆栈指针MOVP1,#00H;关发光二极管LED(使其灭)MOV30H,#00H;软件计数器预清0MOVTMOD,#01H;定时/计数器T0工作于方
15、式1MOVTH0,#3CH;设置定时/计数器的初值MOVTL0,#0B0HSETBEA;开总中断允许SETBET0;开定时/计数器T0中断允许SETBTR0;启动定时/计数器T0LOOP:JMPLOOP;循环等待,-应用实例,TIME0:INC30H;中断程序MOVA,30HCJNEA,#14H,RET0;与20比较,不等转RET0MOV30H,#00HCPLP1.0RET0:MOVTH0,#3CH;重设定时初值,启动MOVTL0,#0B0HRETI,-应用实例,尽管MCS-51为用户只提供了两个外部中断源,但用户可以根据实际需求,进行多于两个外部中断请求的扩展,其中有很多扩展方法。在此重点介
16、绍利用定时器中断作为外部中断的扩展。MCS-51有两个定时/计数器T0、T1,若选择它们以计数器方式工作,当引脚T0或T1上发生负跳变时,T0或T1计数器则加1。利用这个特性,借用引脚T0或T1作为外部中断请求输入线,若设定计数初值为满量程,计数器加1,就会产生溢出中断请求,TF0或TF1变成了外部中断请求标志位,T0或T1的中断入口地址被扩展成了外部中断源的入口地址。值得注意的是,当使用定时器作为外部中断时,定时器以前的功能将失效,除非用软件对它进行复用。,3采用定时/计数器扩展外部中断,-扩展外部中断,将定时器T0引脚作为外部中断源使用的具体做法为,设定相应定时器工作方式为方式2,计数器T
17、H0、TL0初值为0FFH,允许计数器T0中断,则T0的初始始化程序如下:MOV TMOD,06H;将计数器T0设定为;方式2外部计数MOV TL0,#0FFH;设置计数器初值MOV TH0,#0FFH;设置重装计数器初值SETB ET0;允许T0中断SETB EA;CPU开中断SETB TR0;启动T0,-扩展外部中断,#include void main(void)TMOD=0 x66;/*两个定时/计数器都设为方式2 外部计数模式*/TH1=0 xFF;/*设定重装值,TL1不用设置*/TH0=0 xFF;/*设定重装值,TL0不用设置*/TCON=0 x50;/*置位TR1、TR0,开
18、始计数*/IE=0 x9F;/*中断使能*/,-扩展外部中断,/*定时器0中断服务程序*/void timer0_int(void)interrupt 1TF0=0;/*计数溢出标志位清0*/*定时器1中断服务程序*/void timer1_int(void)interrupt 3TF1=0;/*计数溢出标志位清0*/,-扩展外部中断,定时器计数器扩展外部中断实际项目例子,/*强力单片机技术项目交易网作者:王春林*/#include#include#include#include#define UN unsigned charvoid del05s();sbit lsledcs=P37;UN
19、data d0=0;UN data d1=0;UN data d2=0;UN data d3=0;void delay();sbit bm7=bm7;,sfr16 DPTR=0 x82;sbit ACC0=ACC0;sbit ACC1=ACC1;sbit ACC2=ACC2;sbit ACC3=ACC3;sbit ACC4=ACC4;sbit ACC5=ACC5;sbit ACC6=ACC6;sbit ACC7=ACC7;unsigned char bdata bm;sbit bm0=bm0;sbit bm1=bm1;sbit bm2=bm2;sbit bm3=bm3;sbit bm4=bm4
20、;sbit bm5=bm5;sbit bm6=bm6;,UN code ledcode=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,/0-9 0 x88,0 x83,0 xa7,0 xa1,0 x86,0 x8e;void main()/*设为模式1,计数*/TMOD=0 x05;/*初值设定,当设为TH0=0 xff;TL0=0 xff;每按C/T0(K4)一次计数加一,此方法可把计数器作为外部中断使用;当设为TH0=0 xff;TL0=0 xf0;每按C/T0(K4)16次计数加一,(不考虑按键抖动)*/TH0=0
21、 xff;TL0=0 xff;TR0=1;ET0=1;EA=1;while(1)/*显示计数值*/P0=0 xff;P0=ledcoded3;P1=0 xfe;delay();P0=ledcoded2;P1=0 xfd;delay();P0=ledcoded1;P1=0 xfb;delay();P0=ledcoded0;P1=0 xf7;delay();,P1=0 xff;void delay()unsigned int kk=0 xff;do_nop_();kk-;while(kk!=0);void del05s()unsigned int kk=0 xefff;do_nop_();kk-;
22、while(kk!=0);/*定时器0中断*/void time0()interrupt 1 using 1d0+;if(d09)d0=0;d1+;if(d19)d1=0;d2+;if(d29)d2=0;d3+;if(d0=9,习题7-2、7-5、7-7、7-9、7-11,7.2 串行通信接口,7.2.1 串行通信的基本知识 1.并行通信与串行通信 在实际应用中,不但计算机与外部设备之间常常要进行信息交换,而且计算机之间也需要交换信息,所有这些信息的交换均称为“通信”。通信的基本方式分为并行通信和串行通信两种。,并行通信是构成1组数据的各位同时进行传送,例如8位数据或16位数据并行传送。其特点
23、是传输速度快,但当距离较远、位数又多时导致了通信线路复杂且成本高。串行通信是数据一位接一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现通信(如电话线),从而大大地降低了成本,特别适用于远距离通信。缺点是传送速度慢。,图 通信的两种基本方式(a)并行通信;(b)串行通信,串行通信可分为异步传送和同步传送两种基本方式。1)异步传送方式 异步传送的特点是数据在线路上的传送不连续。在传送时,数据是以一个字符为单位进行传送的。它用一个起始位表示字符的开始,用停止位表示字符的结束。异步传送的字符格式如图所示。,一个字符由起始位、数据位、奇偶校验位和停止位4个部分组成。起始位为0占1位;其后接
24、着的就是数据位,它可以是5位、6位、7位或8位,传送时低位在先、高位在后;再后面的1位为奇偶校验位,可要也可以不要;最后是停止位,它用信号1来表示字符的结束,可以是1位、1位半或2位。,图 串行异步传送的字符格式(a)字符格式;(b)有空闲位的字符格式,例如,采用串行异步通信方式传送ASCII码字符5,规定为7位数据位,1位偶校验位,1位停止位,无空闲位。由于5的ASCII码为35H,其对应7位数据位为0110101,如按低位在前、高位在后顺序排列应为1010110。前面加1位起始位,后面配上偶校验位1位0,最后面加1位停止位1,因此传送的字符格式为0101011001,其对应的波形如图所示。
25、,图 传送ASCII码字符5的波形图,在串行异步传送中,CPU与外设之间事先必须约定:字符格式。双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。例如用ASCII码通信,有效数据为7位,加1个奇偶校验位、1个起始位和1个停止位共10位。当然停止位也可大于1位。波特率(Baudrate)。波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位/秒。它与字符的传送速率(字符/秒)之间存在如下关系:波特率=位/字符字符/秒=位/秒 要求发送端与接收端的波特率必须一致。,例如,假设字符传送的速率为120字符/秒,而每1个字符为10位,那么传送的波特率为 10位/字符120字符/秒
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时 计数器 串行 接口
链接地址:https://www.31ppt.com/p-6465054.html