单片机第七章_第1页
单片机第七章_第2页
单片机第七章_第3页
单片机第七章_第4页
单片机第七章_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机第七章1第1页,共40页,2022年,5月20日,2点57分,星期二定时/计数器的应用1计数功能:生产线上产品计数。每个产品通过得到一个脉冲信号,计数器记录脉冲个数,当计数值与设定值相等,启动包装机器。检测转速。电机转动一圈发出一个脉冲,计数器记录一秒时间内脉冲个数,显示转速。2定时功能:用于实时控制,定时采样、定时启动等。当前时间与设定时间值相等,执行规定操作。2第2页,共40页,2022年,5月20日,2点57分,星期二定时/计数的方法 实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。也可以采用下面三种方法:软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CP

2、U的利用率。时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。3第3页,共40页,2022年,5月20日,2点57分,星期二7.1 定时/计数器的结构和工作原理 一、定时/计数器的结构 定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄

3、存器,控制T0、T1的启动和停止及设置溢出标志。 4第4页,共40页,2022年,5月20日,2点57分,星期二单片机工作的时间概念振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期。机器周期: 一个机器周期包含 6 个状态周期S1S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。定时概念定时源、初始值、计数方向。容量、溢出。5第5页,共40页,2022年,5月20日,2点57分,星期二二、定时/计数器的工作原理 加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每

4、来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求。如果定时/计数器工作于定时模式,则表示设定时间到;如果工作于计数模式,则表示计数值已满。 可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。 6第6页,共40页,2022年,5月20日,2点57分,星期二设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期T就是定时时间t ,t = NT。设置为计数器模式时,外部脉冲由T0或T1引脚输入到计数器。在每个机器周期

5、的S5P2期间采样T0、T1引脚电平。当某周期采样到高电平输入,而下一周期又采样到低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2 s。 7第7页,共40页,2022年,5月20日,2点57分,星期二 7.2 定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。一、工作方式寄存器TMOD 工作方式寄存器TM

6、OD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。每位意义8第8页,共40页,2022年,5月20日,2点57分,星期二GATE:门控位。GATE0时,用软件启动定时/计数器工作(使TCON中的TR0或TR1为1);GATA1时,由软件和硬件联合启动定时/计数器工作(外部中断引脚为高电平)。可据此测量脉宽。 : 定时/计数模式选择位。为0时选择定时模式;为1时选择计数模式。M1M0:工作方式设置位。定时/计数器有四种工作方式。9第9页,共40页,2022年,5月20日,2点57分,星期二T1停止,也可工作,具体见后10第10页,共40页,2022年,5月20日,2点57分,星

7、期二 二、控制寄存器TCON TCON的低4位用于控制外部中断。TCON的高4位用于控制定时/计数器的启动和中断申请。TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。还需考虑GATE的功能。TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。TR0(TCON.4):T0运行控制位,其功能与TR1类同。11第11

8、页,共40页,2022年,5月20日,2点57分,星期二三、计数寄存器TH、TL定时/计数器的寄存器,高字节TH,低字节TL。计数的初始值保存其中。12第12页,共40页,2022年,5月20日,2点57分,星期二 7.3 定时/计数器的工作方式 一、方式0(已不使用) 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。13第13页,共40页,2022年,5月20日,2点57分,星期二 二、方式1(常用) 方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了1

9、6位加1计数器 。计数个数与计数初值的关系为: 定时器的初值还可以采用计数个数直接取补法获得。如: MOV TH0,#high(5000) TH0=(5000) 8;14第14页,共40页,2022年,5月20日,2点57分,星期二 三、方式2 方式2为自动重装初值的8位计数方式。 工作方式2特别适合精确的时间控制,信号发生器;串口通信。计数个数与计数初值的关系为: 15第15页,共40页,2022年,5月20日,2点57分,星期二 四、方式3(T0对T1有影响)方式3只适用于定时/计数器T0,T1处于方式3时相当于TR1=0,停止计数;但仍可选其它方式工作/串口。T0在方式3时分为两个独立的

10、8位计数器TL0和TH0,TL0正常工作,TH0只能定时,借用TR1和TF1。16第16页,共40页,2022年,5月20日,2点57分,星期二五、80C52具有定时器/计数器T2T2的控制寄存器为T2CON和T2MOD17第17页,共40页,2022年,5月20日,2点57分,星期二 7.4 定时/计数器用于外部中断扩展 利用计数器方式,计数初值设定为满程,将待扩展的外部中断源接到外部计数引脚。当该引脚输入一个下降沿信号时,计数器便加1,并产生溢出中断。外部信号加1计数溢出中断18第18页,共40页,2022年,5月20日,2点57分,星期二 例,利用T0扩展一个外部中断源。设置T0为方式2

11、工作,TH0、TL0的初值均为0FFH,允许中断。其初始化程序如下: TMOD=0 x06 ; 0000 0110置T0为计数器方式2 TL0=0 x0FF ; 计数初值为满程 TH0=0 x0FFTR0=1 ;启动T0工作ET0=1 ;允许T0中断 EA =1 ;CPU开中断19第19页,共40页,2022年,5月20日,2点57分,星期二7.5 定时/计数器应用初始化程序需完成如下准备:1 确定T0和T1的工作方式,对TMOD赋值。2 计算初值,并将其写入TH0、TL0或TH1、TL1。X=2n-N=2n-t/T=2n-tf3 使TR0或TR1置位,启动定时/计数器定时或计数。中断方式时,

12、则对IE赋值,开放中断。注意:T0和T1对号入座。20第20页,共40页,2022年,5月20日,2点57分,星期二应用结合I/O口产生脉冲波形;测量外接信号的频率和(正)脉宽;延时;串行通信等。21第21页,共40页,2022年,5月20日,2点57分,星期二单片机定时/计数器的应用实例22第22页,共40页,2022年,5月20日,2点57分,星期二基础知识初始化步骤:1 确定T0和T1的工作方式,对TMOD赋值。2 计算初值,并写入TH0、TL0或TH1、TL1。X=2n-N=2n-t/T=2n-tf简便方法:取补数:MOV TH0,#high(5000) TH0=(5000) 8;3

13、使TR0或TR1置位,启动定时/计数器工作。中断方式时,需对IE赋值,开放中断。并有中断服务程序。23第23页,共40页,2022年,5月20日,2点57分,星期二应用举例结合I/O口产生方波,结合D/A产生任意脉冲波形;测量外接信号的频率和正脉宽;延时;串行通信等。一. 产生方波,可采用中断和查询方式(清除TF )。重点选择定时方式1和2(包括软件扩展)。提示:忽略方式0的例子。24第24页,共40页,2022年,5月20日,2点57分,星期二产生方波信号实例例,从P1.0管脚上输出脉冲波形,高电平持续时间为5ms,低电平持续时间为12ms(设单片机的时钟晶体为12MHz)。 算法:循环结构

14、,先定时5ms,P1.0脚输出高电平;5ms定时到后,从P1.0脚上输出低电平,再定时12ms,12ms定时到后,又回到5ms的定时循环工作。查询方式必须清除标志。初值:N5=5000/1=5000,N12=12000/1=12000。25第25页,共40页,2022年,5月20日,2点57分,星期二查询源程序 ORG 0000H CALL T0init ;调用T0初始化子函数LOOP: SETB P1.0 ;输出高电平 MOV TH0 , #high(-5000) ;T0送定时5ms初值 MOV TL0 , #low(-5000) JNB TF0 ,$ ;等5ms的定时到 CLR TF0 ;

15、时间到清TF0标志位 CLR P1.0 ;将P1.0置为低电平 MOV TH0 , #high(-12000) ;送定时12ms初值 MOV TL0 , #low(-12000) JNB TF0 ,$ ;等待12ms的定时到 CLR TF0 ;时间到清TF0标志位 AJMP LOOPT0init: MOV TMOD , #01H ;T0 方式1 定时 SETB TR0 ;启动T0工作 RET END 开始送高电平,定时5ms时间到清标志送低电平,定时12msYN时间到清标志YN定时初始化26第26页,共40页,2022年,5月20日,2点57分,星期二C51查询源程序#include void

16、 T0init (void) P1_0=1; TMOD=0 x01; / T0 方式1 定时 TH0=0 xec; /给定时器T0送5ms初值 TL0=0 x78; TR0=1; /启动T0工作 void main (void) T0init(); /调用T0初始化子函数 while(1) while(TF0=0); /等5ms的定时到 TF0=0; P1_0=0; TR0=0; TH0=0 xd1; TL0=0 x20; TR0=1; while(TF0=0); /等12ms的定时到 TF0=0; P1_0=1; TR0=0; TH0=0 xec; TL0=0 x78; TR0=1; 27第

17、27页,共40页,2022年,5月20日,2点57分,星期二中断源程序 ORG 0000H AJMP MAIN ORG 001BH AJMP T1PRGMAIN: MOV R0,#1 ;R0=0定时5ms R0=1定时12msT1init: SETB P1.0 ;P1.0位置高 MOV TMOD , #10H ;T1 方式1 定时 MOV TH1 , #0ECH ;给定时器T1送5ms初值 MOV TL1 , #78H SETB ET1 ;允许T1中断 SETB EA ;开中断 SETB TR1 ;启动T1工作 SJMP $ ;等待中断T1PRG:CJNE R0,#0,LP1 SETB P1.

18、0 ;R=0将P1.0置高 MOV TH1, #0ECH ;T1送定时5ms初值 MOV TL1 , #78H MOV R0,#1 ;下一次中断定时12ms AJMP LP2LP1: CLR P1.0 ;R=1将P1.0置为低电平 MOV TH1 , #0D1H ;T1送定时12ms初值 MOV TL1 , #20H MOV R0,#0 ;下一次中断定时5msLP2: RETI END修改定时值中断开始返回主开始5ms定时保存定时值等待送高电平,定时5msNY送高电平,定时5ms28第28页,共40页,2022年,5月20日,2点57分,星期二C51中断源程序#include bit i=0;

19、 /位变量i=0定时5ms i=1定时12msvoid main (void) TMOD=0 x10; / T1 方式1 定时 TH1=0 xec; /给定时器T1送5ms初值 TL1=0 x78; P1_0=1; ET1=1; /允许T1中断 EA=1; /开中断 TR1=1; /启动T1工作 while(1); /等待定时中断void T1PRG(void) interrupt 3 i=i; /位变量取反 if (i) P1_0=0; /产生12ms低电平 TH1=0 xd1; /i=1送定时12ms的初值 TL1=0 x20; else P1_0=1; /产生5ms高电平 TH1=0 x

20、ec; / i=0送定时5ms的初值 TL1=0 x78; 29第29页,共40页,2022年,5月20日,2点57分,星期二二. 测量频率(速率)例,外部信号接到T1(P3.5)管脚,测量其速率,结果保存在30H和31H单元(低高字节)。已知:单片机系统时钟为6MHz,被测信号速率在500-65536/分钟范围内。分析:T0用于定时,产生120ms,测量T1的计数结果,扩大500倍得到每分钟的转速。循环结构。初值:N120=120ms/2us=60000(教材P166的-6000错误)30第30页,共40页,2022年,5月20日,2点57分,星期二源程序 ORG 0000H MOV TMO

21、D , #51H ;T0 模式1定时,T1模式1计数start:MOV TL0 , #low(-60000) ;送定时120ms的初值 MOV TH0 , #high(-60000) MOV TH1,#0 ;T1的计数器清0 MOV TL1,#0 SETB TR0 ;启动T0定时 SETB TR1 ;启动T1计数 JNB TF0 ,$ ;等待T0 120ms的定时到 CLR TF0 ;清除TF0标志位 CLR TR0 ;停止T0定时 CLR TR1 ;停止T1计数 MOV 30H,TL1 ;将低8位放入30H中 MOV 31H,TH1 ;将高8位放入31H中 AJMP start END开始设

22、置定时和计数方式时间到清标志,停止计数YNT1计数清0T0定时120ms启动定时,计数保存计数结果31第31页,共40页,2022年,5月20日,2点57分,星期二C51源程序#include void init (void) TMOD=0 x51; /T0 方式1定时,T1 模式1计数 TL0=-60000; TH0=(-60000) 8; TL1=0; TH1=0; TR0=1; TR1=1; void main (void) unsigned char x, y; init(); /调用初始化子函数 while(1) while(TF0=0); /等待T0 120ms的定时到 TF0=0

23、; /清除TF0标志位 TR0=0; /停止T0定时 TR1=0; /停止T1计数 x=TH1; /将高8位放入x中 y=TL1; /将低8位放入y中 TL0=-60000; TH0=(-60000) 8; TL1=0; /T1的计数器清0 TH1=0; TR0=1; /启动T0工作 TR1=1; /启动T1工作 32第32页,共40页,2022年,5月20日,2点57分,星期二三. 测量正脉冲宽度例,脉冲信号接在单片机的INT0(P3.2)引脚,测其正脉冲宽度,结果以机器周期数的形式存放在单片机RAM中的30H(低8位)和31H(高8位)两个单元中。单片机系统时钟为12MHz。分析:被测信号

24、作为T0的门控信号,T0设置为定时器,初值为0。在INT0为低时取结果并准备下次测量。取数准备 计数 取数准备33第33页,共40页,2022年,5月20日,2点57分,星期二源程序 ORG 0000H MOV TMOD, #09h ;T0方式1定时 GATE=1 MOV TH0 , #0 ;给定时器T0送初值 MOV TL0 , #0 JB P3.2 ,$ ;将检测到的第一个高电平放弃Loop: SETB TR0 ;启动T0工作 JNB P3.2 , $ ;等待下一个高电平来 JB P3.2 ,$ ;等待高电平结束 CLR TR0 ;停止T0计数 MOV 30H,TL0 ;将计数值的低8位放

25、入30H中 MOV 31H,TH0 ;计数值的高8位放入31H中 MOV TH0 , #0 ;给定时器T0送初值 MOV TL0 , #0 AJMP LOOP END开始设置门控定时方式定时清0等待低电平定时清0启动定时保存定时结果等待高,低电平停止定时34第34页,共40页,2022年,5月20日,2点57分,星期二C51源程序#include void main (void) TMOD=0 x09; /T0模式1内部时钟GATE1 TH0 =0; /给定时器T0送初值 TL0=0; while(P3_2 =1); /将检测到的第一个高电平放弃 while(1) TR0=1; /启动T0工作

26、 while(P3_2 =0); /等待下一个高电平来 while(P3_2 =1); /等待高电平结束 TR0=0; /高电平结束,立即停止T0计数 y=TL0; /将计数值的低8位放入y中 x=TH0; /将计数值的高8位放入x中 TH0=0; /给定时器T0送初值 TL0=0; 35第35页,共40页,2022年,5月20日,2点57分,星期二四. 长时间精确定时方法例,在P3.1管脚输出100ms周期的脉冲信号。单片机系统时钟为12MHz。分析:选择方式2,机器周期为1us,一个定时器的最长定时时间为256us。可用硬件定时250us结合软件计数200次的方法扩展设定时间为50ms。36第36页,共40页,2022年,5月20日,2点57分,星期

温馨提示

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

评论

0/150

提交评论