- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7章定时计数器全解
第七章 单片机的定时计数器 本章的主要内容 ★ 定时计数器结构和工作原理 ★ 定时计数器的控制寄存器 ★ 定时计数器的应用编程 通常实现定时/计数有3种主要方法: 软件定时,即让机器执行一个程序段,这段程序本身没有具体的执行目的,只是为了磨时间。执行这段程序所需要的时间就是延时时间。这种程序前面已设计过。这种方法定时占用CPU执行时间,降低了CPU利用率。 数字电路硬件定时:采用小规模集成电路器件如555,外接定时部件(电阻和电容)构成。这样的定时电路简单,但要改变定时范围,必须改变电阻和电容,这种定时电路在硬件连接好以后,修改不方便。 可编程定时/计数器是为方便微型计算机系统的设计和应用而研制的,它是硬件定时,又很容易地通过软件来确定和改变它的定时值,通过初始化编程,能够满足各种不同的定时和计数要求,因而在嵌入式系统的设计和应用中得到广泛的应用。 51系列单片机片内有二个十六位定时/计数器:定时器0(T0)和定时器1(T1)。 ★ 两个定时器都有定时或事件计数的功能,由 软件选择是定时工作方式还是计数工作方式 ★ 定时/计数器实际上是16位加1计数器。 T0由2个8位持殊功能寄存器TH0和TL0构成, T1由2个8位持殊功能寄存TH1和TL1构成。 ★T0和T1受特殊功能寄存器TMOD和TCON控制。 1. 定时工作方式 ★ 设置为定时工作方式时,定时器计数的脉冲是由51单片机片内振荡器经12分频后产生的。 ★每经过一个机器周期定时器(T0或T1)的数值加1直至计数满产生溢出。 如:当8051采用12MHz晶体时,每个机器周期为1μs,计5 个机器周期即为5 μs,即定时5 μs 。 ★ 由于检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。 ★ 虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。 ★ GATE:门控信号 GATE=0,TRx=1时即可启动定时器工作 ;(x=1或0) GATE=1,TRx=1 INTx=1才可启动定时器工作。 ★ C/T:定时器/计数器选择位 C/T=1,为计数器方式; C/T=0,为定时器方式。 ★ M1 M0 工作模式选择位 M1M0=00 工作方式0(13位方式)。 M1M0=01 工作方式1(16位方式)。 M1M0=10 工作方式2(8位自动再装入方式)。 M1M0=11 工作方式3(T0为2个8位方式)。 ★TF0:T0溢出中断请求标志。 TF0=1,T0有溢出中断请求。 TF0=0,T0无溢出中断请求。 ★TR0:T0运行控制位。 TR0=1,启动T0工作。 TR0=0,停止T0工作。 void main(void){ TMOD=0x10; /*T1工作在定时方式1*/ P1=0x01; /*第一只LED亮*/ TH1=0x3c;TL1=0xb0;/*预置计数初值*/ EA=1;ET1=1; /*CPU开中断,允许T1中*/ TR1=1; /*启动T1开始定时*/ do{ }while(1); } /*等待中断*/ ORG 0000H MAIN:CLR P1.7 SETB P1.0 MOV TMOD,#61H MOV TH1,#0FBH MOV TL1,#0FBH SETB TR1 LOOP1:CPL P1.7 LOOP2:MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 LOOP3: JBC TF0,LOOP4 SJMP LOOP3 LOOP4:CPL P1.0 JBC TF1,LOOP1 AJMP LOOP2 END 方法2:T0每隔100ms中断一次,利用软件对T0的中断次数进行计数,中断10次即实现了1秒的定时。 ORG 0000H AJMP MAIN ORG 000BH
文档评论(0)