- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 单片机定时/计数器应用;【任务导入】 方波信号发生器的实现:用定时/计数器实现从P1.2口输出周期为200ms的方波。设系统时钟频率为12MHz。;6.1 定时/计数器的结构及其工作原理; 16位定时/计数器T0、T1均由两个8位计数器组成。T0由两个8位的寄存器TH0、TL0构成,字节地址为8CH、8AH;T1也由两个8位的寄存器TH1、TL1构成,字节地址为8DH、8BH。
由图6-1可知,定时/计数器的核心是16位加法计数器,方式寄存器TMOD用于设定定时/计数器T0、T1的工作方式,控制寄存器TCON用于对定时/计数器的启动、停止进行控制。;2. 定时/计数器的工作原理 ; 加法计数器在使用时应注意两个方面。
第一,由于它是加法计数器,每来一个计数脉冲,加法器中的内容加1位,当由全1加到全0时计满溢出。因而,如果要计N个单位,则首先应向计数器置初值为X,且有:
初值X=最大计数值(满???)M-计数值N
在不同的计数方式下,最大计数值不同。一般来说,在定时/计数器工作于R位计数方式时,它的最大计数值为2R。
第二,当定时/计数器工作于计数方式时,对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数,计数过程如下:在每一个机器周期的S5P2时刻对T0(P3.4)或T1(P3.5)上的信号采样一次,如果上一个机器周期采样到高电平,下一个周期采样到低电平,则计数器在下一个机器周期的S5P2时刻加1计数一次,因而需要两个机器周期才能识别一个计数脉冲,所以外部计数脉冲的频率应小于晶体振荡频率的1/24。;6.2 定时/计数器的工作寄存器; (1) M1、M0为工作方式选择位:用于对T0的四种工作方式和T1的三种工作方式进行选择,工作方式如表6-2所示。; TCON字节地址为88H,用于控制定时/计数器的启动和停止,标志定时器溢出和中断情况。TCON可以按位寻址,其结构如表6-3所示。结合第5章中所学的中断系统,TCON各位含义和功能如表6-4所示。;名 称; 当M1M0组合为00时,定时/计数器工作于方式0,方式0的结构如图6-2所示。在这种方式下加法计数器只用了13位,分别是TL0(或TL1)的低5位和TH0(或TH1)的8位,TL0(或TL1)的高3位未用。计数时,当TL0(或TL1)的低5位计满时向TH0(或TH1)进位,当TH0(或TH1)也计满时则溢出,使TF0(或TF1)置位。如果中断允许,则提出中断请求。另外也可通过查询TF0(或TF1)来判断是否有溢出。由于采用13位的定时\计数方式,因而最大计数值(满值)为213,即8192。如计数值为N,则置入的初值X为X=8192-N。; 假设单片机的机器周期为Tcy,定时产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THx和TLx中的初值分别为: THx=(8192-N)/32 TLx=(8192-N)%32
由于定时/计数器方式为13位计数器,即最多能装载的数为213=8192个。当TLx和THx的初值为0时,最多经过8192个机器周期该计数器就会溢出一次,并向CPU申请中断。; 当M1M0组合为01时,定时/计数器工作于方式1,计数位数是16位,由TH0作为低8位、TH0作为高8位组成了16位加1计数器。方式1的结构如图6-3所示。; 在方式1下,用到加法计数器的16位,TL0(或TL1)作低8位,TH0(或TH1)作高8位。计数时,当TL0(或TL1)计满时向TH0(或TH1)进位,当TH0(或TH1)也计满时则溢出,使TF0(或TF1)置位。同样可通过中断或查询方式来处理溢出信号TF0(或TF1)。由于是16位定时/计数方式,因而最大计数值(满值)为216,即65536。如计数值为N,则置入的初值X为X=65536-N。
假设单片机的机器周期为Tcy,定时产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THx和TLx中的初值分别为
THx=(65536-N)/256 TLx=(65536-N)%256
由于定时/计数器方式为16位计数器,即最多能装载的数为216=65536个。当TLx和THx的初值为0时,最多经过65536个机器周期该计数器就会溢出一次,并向CPU申请中断。; 在定时/计数器的方式0和方式1中,当计数器溢出后,计数器变为0,因此在循环定时或循环计数时就必须用软件反复设置计数初值,这必然影响到定时的精度,同时也给程序设计带来很多麻烦。
定时/计数器方式2则可解决软件反复重装初值带来的问题,在计数
文档评论(0)