MCS51单片机定时计数器和串行接口.ppt
《MCS51单片机定时计数器和串行接口.ppt》由会员分享,可在线阅读,更多相关《MCS51单片机定时计数器和串行接口.ppt(103页珍藏版)》请在三一办公上搜索。
1、2023/7/7,1,单片机原理与接口技术,太原理工大学,电子工业出版社,第7章 MCS-51单片机定时/计数器和串行接口,制作 张兴忠 修审 牛昱光,2023/7/7,2,1.了解定时/计数器的结构和工作原理;2.熟悉定时/计数器的控制寄存器;3.掌握定时/计数器的应用编程;4.了解串行通信接口的结构和工作原理;5.熟悉串行通信接口的控制寄存器;6.掌握串行通信的应用编程。,本章教学要求,第7章 MCS-51单片机定时/计数器和串行接口,2023/7/7,3,本章目录,7.1 定时/计数器7.1.1 定时/计数器的结构与原理7.1.2 定时/计数器的工作方式7.1.3 定时/计数器对输入信号
2、的要求7.1.4 定时/计数器的应用,第7章 MCS-51单片机定时/计数器和串行接口,7.2 串行通信接口7.2.1 串行通信基础知识7.2.2 MCS-51串行通信接口7.2.3 串行通信接口的应用习题与思考题,2023/7/7,4,7.1 定时/计数器,MCS-51单片机内有2个16位可编程的定时/计数器,即定时器0(T0)和定时器1(T1)。两个定时/计数器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等应用。,2023/7/7,5,7.1.1 定时/计数器的结构与原理,T0和T1受特殊功能寄存器TMOD和TCON控制。可由软件设置为定时或计数工作方式。,1定时/
3、计数器T0、T1结构,-T0、T1结构,2023/7/7,6,2加1计数器,T0、T1都是16位加1计数器,TH0、TL0构成定时/计数器T0加1计数器的高8位和低8位。加1计数器的初值可以通过程序进行设定,设定不同的初值,就可以获得不同的计数值或定时时间。,7.1.1 定时/计数器的结构与原理,-加1计数器,2023/7/7,7,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
4、定时/计数器的结构与原理,-TCON,2023/7/7,8,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位方式),-TMO
5、D,2023/7/7,9,5T0、T1定时功能和计数功能的选择,通过选择控制C/T实现定时器或计数器的功能选择。当C/T=0时,选择定时器功能;当C/T=1时,选择计数器功能。,7.1.1 定时/计数器的结构与原理,-定时和计数功能选择,2023/7/7,10,对单片机内部机器周期产生的脉冲进行计数,计数器每个机器周期自动加1。如果单片机的晶振频率为12MHz,则计数频率为1MHz,或者说计数器每加1,可实现1s的计时。,7.1.1 定时/计数器的结构与原理,定时功能(C/T=0):,-定时功能选择,2023/7/7,11,对外部事件产生的脉冲进行计数。对于MCS-51单片机来说,P3.4和P
6、3.5两个信号引脚分别是T0和T1计数器的计数脉冲信号输入端,当该引脚输入脉冲发生负跳变时,加1计数器自动加1。,7.1.1 定时/计数器的结构与原理,计数功能(C/T=1):,-计数功能选择,2023/7/7,12,7.1.2 定时/计数器的工作方式,定时/计数器T0、T1可以有四种不同的工作方式:方式0、方式1、方式2和方式3 4种工作方式由TMOD中的M1、M0两位决定,见表7-3所示。,-四种工作方式,2023/7/7,13,当TMOD中M1M0=00时,选定方式0进行工作,13位状态。C/T=1时,图中电子开关S1切至下端,13位定时/计数器处于计数器状态,加法计数器对T0引脚上的外
7、部输入脉冲计数。计数值:N=8192-x。x是由TH0、TL0设定的初值。x=8191时为最小计数值l,x=0时为最大计数值8192,即计数范围为18192(213)。,7.1.2 定时/计数器的工作方式,1方式0,-13位状态,2023/7/7,14,C/T=0时,图中电子开关S1切至上端,加法计数器对机器周期计数,13位定时/计数器处于定时器状态。定时时间:Td=(8192-x)Tcy。如果晶振频率fosc=12MHz,即机器周期为1s,则定时范围为1s8192s。,7.1.2 定时/计数器的工作方式,1方式0,-13位状态,2023/7/7,15,无论是计数器状态还是计时器状态,随着加法
8、计数的增大,TL0的低5位溢出后自动向TH0进位,TH0溢出后,将溢出标志位TF0置位,并向CPU发出中断请求。,7.1.2 定时/计数器的工作方式,1方式0,-13位状态,2023/7/7,16,7.1.2 定时/计数器的工作方式,-启动方式,2023/7/7,17,2方式1,当M1M0=01时,定时/计数器选定方式1进行工作(16位状态)。,7.1.2 定时/计数器的工作方式,-16位状态,2023/7/7,18,当作为计数器使用时,计数范围是165536(216);当作为定时器使用时,定时器的定时时间为:Td=(216-Count)Tcy。如果晶振频率fosc=12MHz,则定时范围为:
9、165536s。,7.1.2 定时/计数器的工作方式,-定时与计数范围,2023/7/7,19,3方式2,方式0和方式1具有共同的特点,即当加法计数器发生溢出后,自动处于0状态,如果要实现循环计数或周期定时,就需要程序不断反复给计数器赋初值,这就影响了计数或定时精度,并给程序设计增添了麻烦。而方式2具有初值自动重新加载功能,其逻辑结构如图7-5所示。,7.1.2 定时/计数器的工作方式,-=-初值自动重新加载,2023/7/7,20,3方式2,7.1.2 定时/计数器的工作方式,-=-初值自动重新加载,2023/7/7,21,当M1M0=10时,定时/计数器选定方式2进行工作。该方式下,16位
10、计数器被分为两个8位寄存器TL0和TH0,其中TL0作为计数器,TH0作为计数器TL0的初值预置寄存器,并始终保持为初值常数。当TL0计数溢出时,系统将TF0置位,并向CPU申请中断,同时将TH0的内容重新装入TL0,继续计数。,7.1.2 定时/计数器的工作方式,-方式2特性,2023/7/7,22,4方式3,当M1M0=11时,T0定时/计数器处于方式3,7.1.2 定时/计数器的工作方式,-方式3结构,在方式3下,T0被拆成两个独立的8位计数器TL0和TH0。其中TL0既可以计数使用,又可以定时使用,构成了1个8位的定时/计数器(TL0),T0的控制位和引脚信号全归TL0使用,其功能和操
11、作与方式0或方式1完全相同,而且工作逻辑结构也极其类似。,2023/7/7,23,(1)T0的方式3工作模式,7.1.2 定时/计数器的工作方式,-方式3工作模式,2023/7/7,24,(2)T0在方式3时T1的工作模式,7.1.2 定时/计数器的工作方式,-方式3时T1的工作模式,2023/7/7,25,当作为波特率发生器使用时,只需设置好工作方式,便可自动运行。如要停止工作,只需送入一个把T1设置为方式3的方式控制字就可以了。,7.1.2 定时/计数器的工作方式,-方式3时T1的工作模式,2023/7/7,26,7.1.3 定时/计数器对输入信号的要求,定时/计数器的作用是用来精确地确定
12、某一段时间间隔(作为定时器用)或累计外部输入的脉冲个数(作为计数器用)。当用作定时器时,在其输入端输入周期固定的脉冲,根据定时/计数器中累计的脉冲个数,即可计算出所定时间的长度。,定时器使用,-定时器使用,2023/7/7,27,7.1.3 定时/计数器对输入信号的要求,当MCS-5l内部的定时/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲位,计数器增l,因此定时/计数器的输入脉冲的周期与机器周期一样,为时钟振荡频率的l/12。当采用12MHz频率的晶振时,计数速率为1MHz,输入脉冲的周期间隔为1s。由于定时的精度决定于输入脉冲的周期,因此当需要高分辨
13、率的定时时,应尽量选用频率较高的晶振。,定时器使用,-定时器使用,2023/7/7,28,当定时/计数器用作计数器时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生由1至0的跳变(即负跳变)时,计数器的值增l。,计数器使用,7.1.3 定时/计数器对输入信号的要求,-计数器使用,2023/7/7,29,由于确认一次负跳变需要用2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24,例如,选用6MHz频率的晶振,允许输入的脉冲频率为250kHz,如果选用12MHz频率的晶振,则可输入500kHz的外部脉冲。对于外部输入信号的占空比并没有什么限制,但为了确保某一
14、给定的电平在变化之前能被采样一次,则这一电平至少要保持一个机器周期。,计数器使用,7.1.3 定时/计数器对输入信号的要求,-计数器使用,2023/7/7,30,7.1.4 定时/计数器的应用,(1)初始化步骤1)设置工作方式;2)计算加1计数器的计数初值Count,并将计数初值Count送入TH、TL中;3)启动计数器工作,即将TRx置1。4)若采用中断方式,则应设置T0、T1及CPU开中断。,1定时/计数器初始化,-初始化,2023/7/7,31,(2)计数方式初始化,假设T0工作于计数方式1,现用n表示加1计数器的位数,用x表示计数值,则计数初值Count=2n-x,式中,n=13、16
15、、8、8,分别对应工作方式0、1、2、3。,7.1.4 定时/计数器的应用,-计数器初始化,2023/7/7,32,例7-1 定时/计数器T0工作于计数方式,计数值x=1,允许中断,分别使用工作方式1、方式0和方式2。进行初始化编程。,7.1.4 定时/计数器的应用,-计数器初始化应用,2023/7/7,33,1)假设T1定时/计数器闲置不用,可设控制寄存器TMOD的高4位为0000,即TMOD74=0000B。2)T0定时/计数器工作于计数方式,可确定T0的GATE=0,C/T=1,即TMOD32=01B。,7.1.4 定时/计数器的应用,-计数器初始化应用,2023/7/7,34,3)T0
16、工作于方式1时,应确定M1M0=01,即TMOD10=01B。则TMOD=0000,0101B=05H。计数器位数n=16,计数器初值Count=216-1=FFFFH,即TH0=FFH,TL0=FFH。,7.1.4 定时/计数器的应用,-计数器初始化应用,2023/7/7,35,4)T0工作于方式0时,应确定M1M0=00,即TMOD10=00B。则TMOD=0000,0100B=04H。计数器位数n=13,计数器初值 Count=213-1=1111,1111,1,1111B,即TH0=FFH(高8位FFH送入TH0中),TL0=1FH(低5位1FH送入TL0中)。,7.1.4 定时/计数
17、器的应用,-计数器初始化应用,2023/7/7,36,5)T0工作于方式2时,应确定M1M0=10,即TMOD10=10B。则TMOD=0000,0110B=06H。计数器位数n=8,计数器初值Count=28-1=FFH,即TH0=FFH,TL0=FFH。,7.1.4 定时/计数器的应用,-计数器初始化应用,2023/7/7,37,按照前面分析,初始化程序如下。1)T0工作于方式1的初始化程序。MOV TMOD,#05H;设置T0工作于计数方式1MOV TH0,#0FFH;加1计数器高8位TH0赋初值FFHMOV TL0,#0FFH;加1计数器低8位TL0赋初值FFHSETB ET0;T0开
18、中断SETB EA;CPU开中断SETB TR0;启动T0计数,7.1.4 定时/计数器的应用,-计数器初始化应用,2023/7/7,38,#include sbit ET0=IE1;/*定义CPU中断控制字IE第1位为ET0*/sbit EA=IE7;/*定义CPU中断控制字IE第7位为EA*/sbit TR0=TCON4;/*定义TCON第4位为TR0*/TMOD=0 x05;/*设置T0工作于计数方式1*/TH0=0 xff;/*加1计数器高8位TH0赋初值FFH*/TL0=0 xff;/*加1计数器低8位TL0赋初值FFH*/ET0=1;/*T0开中断*/EA=1;/*CPU开中断*/
19、TR0=1;/*启动T0*/,7.1.4 定时/计数器的应用,-计数器初始化应用,C语言初始化程序段,2023/7/7,39,2)T0工作于方式0的初始化程序。汇编语言初始化程序段:MOVTMOD,#04H;设置T0工作于计数方式0MOVTH0,#FFH;加1计数器高8位TH0赋初值FFHMOVTL0,#1FH;加1计数器低8位TL0赋初值1FHSETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0,7.1.4 定时/计数器的应用,-计数器初始化应用,2023/7/7,40,3)T0工作于方式2的初始化程序。汇编语言初始化程序段:MOVTMOD,#06H;设置T0工作于计
20、数方式2MOVTL0,#0FFH;计数器TL1赋初值FFHMOVTH0,#0FFH;重装寄存器TH1赋初值FFHSETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0,7.1.4 定时/计数器的应用,-计数器初始化应用,2023/7/7,41,(3)定时方式初始化,若系统主频fosc=6MHz,则机器周期Tcy=2s,即计数器加一次1所用时间为2s,若计数器加100次产生溢出(计数值N=100),则定时时间为200s,即定时器定时时间Td=NTcy。计数值N与计数器初值Count的关系是N=2n-Count,所以定时时间Td=(2n-Count)Tcy。计数初值Count
21、=2n-Td/Tcy。式中,n=13、16、8、8,分别对应方式0、1、2、3。,7.1.4 定时/计数器的应用,-定时器初始化,2023/7/7,42,1)假设T1定时/计数器闲置不用,可设控制寄存器TMOD的高4位为0000,即TMOD74=0000B。2)T0工作于定时方式,可确定T0的GATE=0,C/T=0,即TMOD32=00B。,例7-2 T0工作于定时方式1,定时时间Td=2ms,系统主频fosc=8MHz,允许中断,对T0进行初始化编程。,7.1.4 定时/计数器的应用,-定时器初始化应用,2023/7/7,43,3)T0工作于方式1时,应确定M1M0=01,即TMOD10=
22、01B。则TMOD=0000,0001B=01H。4)系统主频fosc=8MHz,时钟周期Tcp=1/8s,系统机器周期Tcy=12Tcp=12/8=1.5s,计数器位数n=16,定时时间Td=2ms=2000s,计数初值Count=2n-Td/Tcy=216-2000/1.5=64203=FACBH 即TH0=FAH,TL0=CBH。,7.1.4 定时/计数器的应用,-定时器初始化应用,2023/7/7,44,汇编语言初始化程序段:MOVTMOD,#01H;设置T0工作于定时方式1MOVTH0,#FAH;加1计数器高8位TH0赋初值FAHMOVTL0,#CBH;加1计数器低8位TL0赋初值C
23、BHSETBET0;T0开中断SETBEA;CPU开中断SETBTR0;启动T0开始定时,7.1.4 定时/计数器的应用,-定时器初始化应用,2023/7/7,45,1)假设T0定时/计数器闲置不用,可设控制寄存器TMOD的低4位为0000,即TMOD30=0000B。2)T1工作于定时方式,可确定T1的GATE=0,C/T=0,即TMOD76=00B。,例7-3 T1工作于定时方式2,定时时间Td=500s,系统主频fosc=6MHz,不允许中断。对T1进行初始化编程。,7.1.4 定时/计数器的应用,-定时器初始化应用,2023/7/7,46,3)T1工作于方式2时,应确定M1M0=10,
24、即TMOD54=10B。则TMOD=0010,0000B=20H。4)系统主频fosc=6MHz,时钟周期Tcp=1/6s,Tcy=12Tcp=12/6=2s,计数器位数n=8,定时时间Td=500s,计数初值Count=2n-Td/Tcy=28-500/2=6=06H,即TH0=06H,TL0=06H。,7.1.4 定时/计数器的应用,-定时器初始化应用,2023/7/7,47,汇编语言初始化程序段:MOV TMOD,#20H;设置T1工作于计数方式2MOV TL1,#06H;计数器TL1赋初值06HMOV TH1,#06H;重装寄存器TH1赋初值06HCLR ET1;T1关中断SETB T
25、R1;启动T1,7.1.4 定时/计数器的应用,-定时器初始化应用,2023/7/7,48,C语言初始化程序段:#include sbit ET1=IE3;/*定义CPU中断控制字IE第3位为ET1*/sbit TR1=TCON6;/*定义TCON第6位为TR1*/TMOD=0 x20;/*设置T1为定时方式2*/TL1=0 x06;/*计数器TL1赋初值06H*/TH1=0 x06;/*重装寄存器TH1赋初值06H*/ET1=0;/*T1关中断*/TR1=1;/*启动T1*/,7.1.4 定时/计数器的应用,-定时器初始化应用,2023/7/7,49,2定时/计数器应用实例,分析:周期为2m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 定时 计数器 串行 接口

链接地址:https://www.31ppt.com/p-5439683.html