- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机及接口技术2.4(定时计数器)概要1
§2.4 定时器/计数器 * * * * * 定 时 器 / 计 数 器 1. 定时器/计数器的基本组成 CPU 定时/计数器T1 TCON(88H) TMOD(89H) TH1(8DH) TL1(8BH) 定时/计数器T0 TH0(8CH) TL0(8AH) T1(P3.5) T0(P3.4) 中断 启动 定 时 器 / 计 数 器 1)方式寄存器TMOD:设置T0、T1的工作方式 2)控制寄存器TCON:启动T0、T1工作,并且当T0或T1溢出时,TCON的TF0或TF1位自动硬件置1,同时给CPU发中断请求信号。 3)定时/计数寄存器TH1、TL1、TH0、TL0 4)T1、T2引脚 5)INT1(平)、INT0(平)引脚 2. 定时器/计数器的原理 1)定时工作方式:每过一个机器周期(12个时钟周期),定时/计数器计数1次(即加1),直到计满溢出为止。计数频率fCOUNT=fOSC/12 定 时 器 / 计 数 器 12分频 fOSC C/T(平)=0 C/T(平)=1 Ti TRi + INTi(平) GATE TLi THi TFi 中断请求 定时/计数器 3)通过指令用软件方法给定时器/计数器设置某种工作方式,之后定时器/计数器独立计数,计满溢出,发出中断请求。 4)定时器初始化:1)将工作方式控制字写入方式寄存器TMOD;2)将工作状态控制字写入控制寄存器TCON。 2)计数工作方式:通过引脚T0和T1对外部信号计数。计数器在每个机器周期的S5P2期间采样T0或T1引脚的输入电平。若前一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1(所以计数一次需要两个机器周期,外部事件的最高计数频率为振荡频率的1/24)。 定 时 器 / 计 数 器 3. 定时器/计数器的方式寄存器TMOD (89H) D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T(平) M1 M0 GATE C/T(平) M1 M0 定时器1 定时器0 定 时 器 / 计 数 器 1) TMOD各位的含义 a. GATE:门控位。 当GATE=0,只要软件控制位TR0或TR1置1即可启动定时器开始工作;当GATE=1,只有INT0(平)和INT1(平)引脚为高电平,且TR0或TR1置1时,才能启动相应的定时器工作 M1 M0 工作方式 ? 0 0 方式0 13位定时/计数器 0 1 方式1 16位定时/计数器 1 0 方式2 自动再装入的8位定时/计数器 ,TH仅用于保存初始值 1 1 方式3 定时器0:分成两个8位定时/计数器 定时器1:工作于方式2,作为波特率发生器 c. M0、M1:方式选择位 定 时 器 / 计 数 器 ?b. C/T(平):功能选择位 C/T(平)=0,作为定时器使用; C/T(平)=1,作为计数器使用。 THi(0-7) TLi(0-4) TH TL ? 2) 方式0:13位定时/计数器 ?TH的8位和TL的低5位 定 时 器 / 计 数 器 定时器初始值设置举例: 如:用定时/计数器T0定时2ms,时钟频率 FOSC=12MHz,工作于方式0,求定时初值。 解:计数一次的时间为: 12/FOSC=12/(12*106)=1*10-6s 2ms的计数次数为: 2*10-3/10-6=2000=7D0H=0111 1101 0000B 因为方式0为13位,所以定时初始值为: m=213- 7D0H=10 0000 0000 0000B-0111 1101 0000B =1 1000 0011 0000B 将m代入TH的8位和TL的低5位,则计数器的初始值为: 1100 0001 0001 0000B=C1 10H 所以TH0的初值为C1H,TL0的初值为10H 定 时 器 / 计 数 器 因方式1的定时初值在代入时容易出错,建议在可选择的情况下不选用方式0。 THi(8) TLi(8) 方式1 3) 方式1:16位定时/计数器 定时器初始值设置: 其中x:定时时间 定 时 器 / 计 数 器 TH0=F8H,TL0=30H 如上例,FOSC=12MHz,x=2ms 则定时器自加1的次数: =2000=0111 1101 0000B 定时器初始值: 1 0000 0000 0000 0000B – 0111 1101 0000B = 1111 1000
文档评论(0)