资源预览内容
第1页 / 共111页
第2页 / 共111页
第3页 / 共111页
第4页 / 共111页
第5页 / 共111页
第6页 / 共111页
第7页 / 共111页
第8页 / 共111页
第9页 / 共111页
第10页 / 共111页
亲,该文档总共111页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,00:58,单片机原理与接口技术,第7章 MCS-51单片机 定时/计数器和串行接口,2,00:58,(1) 了解定时/计数器的结构和工作原理。 (2) 熟悉定时/计数器的控制寄存器。 (3) 掌握定时/计数器的应用编程。 (4) 了解串行通信接口的结构和工作原理。 (5) 熟悉串行通信接口的控制寄存器。 (6) 掌握串行通信的应用编程。,本章教学要求,3,00:58,本 章 目 录,7.1 定时/计数器 7.1.1 定时/计数器的结构与原理 7.1.2 定时/计数器的工作方式 7.1.3 定时/计数器对输入信号的要求 7.1.4 定时/计数器的应用 7.2 串行通信接口 7.2.1 串行通信基础知识 7.2.2 MCS-51串行通信接口 7.2.3 串行通信接口的应用 习题与思考题,4,00:58,7.1 定时/计数器,MCS-51单片机内有2个16位可编程的定时/计数器,即定时器0(T0)和定时器1(T1)。两个定时/计数器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等应用。,5,00:58,7.1.1 定时/计数器的结构与原理,T0和T1受特殊功能寄存器TMOD和TCON控制。可由软件设置为定时或计数工作方式。,1定时/计数器T0、T1结构,-T0、T1结构,6,00:58,2加1计数器,T0、T1都是16位加1计数器,TH0、TL0构成定时/计数器T0加1计数器的高8位和低8位。 加1计数器的初值可以通过程序进行设定,设定不同的初值,就可以获得不同的计数值或定时时间。,7.1.1 定时/计数器的结构与原理,-加1计数器,7,00:58,3定时控制寄存器(TCON),TF0、TF1:计数溢出标志位。TF0=1或TF1=1是计数溢出;TF0=0或TF1=0是计数未满。 TR0、TR1:启/停控制位。TR0=1或TR1=1,使T0或T1启动计数;TR0=0或TR1=0,使T0或T1停止计数。,7.1.1 定时/计数器的结构与原理,-TCON,8,00:58,4工作方式控制寄存器(TMOD),GATE:门控信号。当GATE=0时,TRx=1即可启动定时器工作; 当GATE=1时,要求同时有TRx=1和INTx=1才可启动定时器工作(x是1、2)。 C/T:定时/计数器选择位。 C/T =1,为计数器工作方式; C/T =0,为定时器工作方式。,7.1.1 定时/计数器的结构与原理,M1、M0: 定时/计数器工作模式选择位 M1M0=00 工作方式0(13位方式) M1M0=01 工作方式1(16位方式) M1M0=10 工作方式2(8位自动再装入方式) M1M0=11 工作方式3(T0为2个8位方式),-TMOD,9,00:58,5T0、T1定时功能和计数功能的选择,通过选择控制C/T实现定时器或计数器的功能选择。 当C/T=0时,选择定时器功能; 当C/T=1时,选择计数器功能。,7.1.1 定时/计数器的结构与原理,-定时/计数功能选择,10,00:58,对单片机内部机器周期产生的脉冲进行计数,计数器每个机器周期自动加1。如果单片机的晶振频率为12MHz,则计数频率为1MHz,或者说计数器每加1,可实现1s的计时。,7.1.1 定时/计数器的结构与原理,定时器功能( C/T =0):,-定时器功能,11,00:58,对外部事件产生的脉冲进行计数。对于MCS-51单片机来说,P3.4和P3.5两个信号引脚分别是T0和T1计数器的计数脉冲信号输入端,当该引脚输入脉冲发生负跳变时,加1计数器自动加1。,7.1.1 定时/计数器的结构与原理,计数器功能( C/T =1):,-计数器功能,12,00:58,7.1.2 定时/计数器的工作方式,定时/计数器T0、T1可以有四种不同的工作方式:方式0、方式1、方式2 和 方式3 4种工作方式由TMOD中的M1、M0两位决定,见表7-3所示。,-四种工作方式,13,00:58,当TMOD中M1M0=00时,选定方式0 (13位状态)进行工作。C/T=1时,图中电子开关S1切至下端,13位定时/计数器处于计数器状态,加法计数器对T0引脚上的外部输入脉冲计数。计数值:N=8192-x。x是由TH0、TL0设定的初值。x=8191时为最小计数值l,x=0时为最大计数值8192,即计数范围为18192(213)。,7.1.2 定时/计数器的工作方式,1方式0,-方式0,13位计数,14,00:58,C/T=0时,图中电子开关S1切至上端,加法计数器对机器周期计数,13位定时/计数器处于定时器状态。定时时间:Td=(8192-x)Tcy。如果晶振频率fosc=12MHz,即机器周期为1s,则定时范围为1s8192s。,7.1.2 定时/计数器的工作方式,-方式0,13位定时,1方式0,15,00:58,无论是计数器状态还是计时器状态,随着加法计数的增大,TL0的低5位溢出后自动向TH0进位,TH0溢出后,将溢出标志位TF0置位,并向CPU发出中断请求。,7.1.2 定时/计数器的工作方式,-方式0计数溢出置位TF0,1方式0,16,00:58,7.1.2 定时/计数器的工作方式,-启动方式,17,00:58,当TMOD中M1M0=01时,选定方式1 (16位状态)进行工作。,7.1.2 定时/计数器的工作方式,-方式1,16位定时/计数,2方式1,当作为计数器使用时,计数范围是165536(216); 当作为定时器使用时,定时器的定时时间为:Td=(216-Count)Tcy。如果晶振频率fosc=12MHz,则定时范围为:165536s。,18,00:58,方式0和方式1具有共同的特点,即当加法计数器发生溢出后,自动处于0状态,如果要实现循环计数或周期定时,就需要程序不断反复给计数器赋初值,这就影响了计数或定时精度,并给程序设计增添了麻烦。而方式2具有初值自动重新加载功能,其逻辑结构如图7-5所示。,7.1.2 定时/计数器的工作方式,-方式2,自动重载初值,3方式2,19,00:58,当M1M0=10时,定时/计数器选定方式2进行工作。该方式下,16位计数器被分为两个8位寄存器TL0和TH0,其中TL0作为计数器,TH0作为计数器TL0的初值预置寄存器,并始终保持为初值常数。当TL0计数溢出时,系统将TF0置位,并向CPU申请中断,同时将TH0的内容重新装入TL0,继续计数。,7.1.2 定时/计数器的工作方式,-方式2,自动重载初值,20,00:58,4方式3,7.1.2 定时/计数器的工作方式,-方式3,在前述方式0、1、2 三种工作方式中,T0和T1两个定时/计数器具有相同的功能。 在方式3下,T0和T1的功能完全不同。 当M1M0=11时: T0定时/计数器处于方式3工作模式。 T1定时/计数器只能工作在方式0、1、2下。,21,00:58,4方式3,7.1.2 定时/计数器的工作方式,-方式3时T0的结构,1) T0的方式3工作模式 在方式3下,T0被拆成两个独立的8位计数器TL0和TH0。 TL0既可以计数使用,又可以定时使用,构成了1个8位的定时/计数器(TL0)。T0的控制位和引脚信号全归TL0使用,其功能和操作与方式0或方式1完全相同,而且工作逻辑结构也极其类似。 TH0只能作为1个8位定时器使用(不能用做外部计数方式)。而且由于T0的控制位已被TL0独占,因此只好借用定时/计数器T1的控制位TR1和TF1,以计数溢出去置位TF1,还占用T1的中断源。而定时的启动和停止则受TR1的状态控制。 由于TL0既能做定时器使用,也能做计数器使用,而TH0只能做定时器使用,因此在工作方式3下,定时/计数器T0可以构成两个独立的定时器或1个定时器、1个计数器。,22,00:58,1) T0的方式3工作模式 T0为方式3工作模式时可以构成两个独立的定时器或1个定时器、1个计数器。,7.1.2 定时/计数器的工作方式,-方式3时T0的结构,23,00:58,2) T0在方式3时T1的工作模式,7.1.2 定时/计数器的工作方式,-方式3时T1的工作模式,如果定时/计数器T0已工作在方式3下,则定时/计数器T1只能工作在方式0、方式1或方式2下。此时由于T1的运行控制位TR1及计数溢出标志位TF1已被定时/计数器T0借用而没有计数溢出标志位可供使用,因此只能把计数溢出直接送给串行口,作为串行口的波特率发生器使用,以确定串行通信的速率。 当作为波特率发生器使用时,只需要设置好工作方式,便可自动运行。如要停止工作,只需送入一个把T1设置为方式3的方式控制字就可以了。因为定时/计数器T1不能在方式3下使用,如果硬把它设置为方式3,则停止工作。,24,00:58,2) T0在方式3时T1的工作模式,7.1.2 定时/计数器的工作方式,-方式3时T1的工作模式,如果定时/计数器T0已工作在方式3下,则定时/计数器T1只能工作在方式0、方式1或方式2下。,25,00:58,7.1.3 定时/计数器对输入信号的要求,定时/计数器的作用是用来精确地确定某一段时间间隔(作为定时器用)或累计外部输入的脉冲个数(作为计数器用)。当用作定时器时,在其输入端输入周期固定的脉冲,根据定时/计数器中累计的脉冲个数,即可计算出所定时间的长度。 当MCS-5l内部的定时/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲位,计数器增l,因此定时/计数器的输入脉冲的周期与机器周期一样,为时钟振荡频率的l/12。当采用12MHz频率的晶振时,计数速率为1MHz,输入脉冲的周期间隔为1s。由于定时的精度决定于输入脉冲的周期,因此当需要高分辨率的定时时,应尽量选用频率较高的晶振。,定时器作用,-定时器作用,26,00:58,当定时/计数器用作计数器时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生由1至0的跳变(即负跳变)时,计数器的值增l。 由于确认一次负跳变需要用2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24,例如,选用6MHz频率的晶振,允许输入的脉冲频率为250kHz,如果选用12MHz频率的晶振,则可输入500kHz的外部脉冲。 对于外部输入信号的占空比并没有什么限制,但为了确保某一给定的电平在变化之前能被采样一次,则这一电平至少要保持一个机器周期。,7.1.3 定时/计数器对输入信号的要求,-计数器作用,计数器作用,27,00:58,7.1.4 定时/计数器的应用,(1)初始化步骤 1) 设置工作方式 2) 计算加1计数器的计数初值Count,并将计数初值Count送入TH、TL中 3) 启动计数器工作,即将TRx置1 4) 若采用中断方式,则应设置T0、T1及CPU开中断,1定时/计数器初始化,-初始化步骤,28,00:58,(2)计数方式初始化,假设T0工作于计数方式1,计数值N = 1,即每当T0引脚输入一个计数脉冲就使加1计数器产生溢出,通常可以使用这种方法扩展外中断。 为了使加1计数器每加一次1就溢出,加1计数器的初值Count=0FFFFH=216-1,其中16为工作方式1时加1计数器的位数,1为计数值x。 现用n表示加1计数器的位数,用x表示计数值,则计数初值Count=2n-x,式中,n = 13,16,8和8,分别对应工作方式0,1,2和3。,7.1.4 定时/计数器的应用,-计数器初始化,29,00:58,例7-1 定时/计数器T0工作于计数方式,计数值x=1,允许中断,分别使用工作方式1、方式0和方式2。进行初始化编程。,7.1.4 定时/计数器的应用,-计数器初始化,例7-1,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号