定时器计数器的应用

定时器计数器的应用

ID:42750686

大小:365.02 KB

页数:24页

时间:2019-09-21

定时器计数器的应用_第1页
定时器计数器的应用_第2页
定时器计数器的应用_第3页
定时器计数器的应用_第4页
定时器计数器的应用_第5页
资源描述:

《定时器计数器的应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、6.3定时器/计数器的应用6.3.1初始化初始化的内容如下:(1)根据设计需要先确定定时器/计数器的工作模式及工作方式,然后将相应的控制字送入TMOD寄存器中。(2)计算出计数初始值并写入TH0、TL0、TH1、TL1中。(3)通过对中断优先级寄存器IP和中断允许寄存器IE的设置,确定计数器的中断优先级和是否开放中断。(4)给定时器控制寄存器TCON送命令字,控制定时器/计数器的启动和停止。6.3.2初值的计算定时器/计数器T0、T1不论是工作在计数器模式还是定时器模式下,都是加1计数器,因而写入计数器的初始值和实际计数值并不相同

2、,两者的换算关系如下:设实际计数值为C,计数最大值为M,计数初始值为X,则X=M-C。其中计数最大值在不同工作方式下的值不同,具体如下:(1)工作方式0:M=213=8192。(2)工作方式1:M=216=65536。(3)工作方式2:M=28=256。(4)工作方式3:M=28=256。这样,在计数器模式和定时器模式下,计数初值都是X=M-C(十六进制数)。定时器模式下对应的定时时间为T=C·T机=(M-X)T机式中,T机为单片机的机器周期(T机为晶振时钟周期的12倍)。6.3.3应用举例[例6.1]单片机晶振fosc=6MHz

3、,利用定时器T1定时中断方法产生周期为4ms的方波,并由P1.0端输出。时间常数2ms对应的计数初值X为T机=12/fosc=(12/6)×10-6s=2μsX=M-T/T机=213-2×10-3/(2×10-6)=7192转化为十六进制为X=1C18H=11100000011000B主程序及中断服务程序如下:ORG0000HAJMPINITZ;转主程序NOPORG001BH;T1中断入口MOVTL1,#18H;中断服务程序送定时初值MOVTH1,#0E0HCPLP1.0;R1.0取反RETI;中断返回ORG0052HINITZ:

4、MOVSP,#15H;建立堆栈指针MOVTMOD,#00H;设置T1工作方式MOVTL1,#18H;置T1初值MOVTH1,#0E0HSETBEA;CPU开中断SETBET1;允许T1中断SETBTR1;启动T1AD1:MOVA,#00HAJMPAD1[例6.2]单片机晶振fosc=12MHZ,利用定时器T0、T1产生周期为200ms的方波,并由P1.0端输出。方法1:由要求可知,只要使P1.0每隔100ms取反一次即得周期为200ms的方波信号。这样就需要一个100ms的定时器。当fosc=12MHZ时,T0(或T1)在工作方式

5、1下的最大定时时间为65.536ms,所以一个定时器不能满足需要,采用T0、T1各定时50ms,顺序定时的方法可达到100ms的要求,因而我们选T0、T1为定时器模式,工作在方式1下,启/停控制由TR0、TR1完成。GATE=0,这样TMOD的控制字为11H。对应50ms计数初值X为即TL0=TL1=0B0H,TH0=TH1=3CH。T0、T1顺序定时可采用中断方法实现,也可采用查询方式实现,这里假定CPU不做其它工作,采用查询法编写程序如下:ORG0052HSTI:MOVTMOD,#11H;设置T0、T1为定时器,方式1工作AD

6、1:MOVTL0,#0B0H;送T0初值MOVTH0,#3CHSETBTR0;启动T0进行50ms定时AD2:JBCTF0,AD3;查询TF0是否溢出SJMPAD2AD3:CLRTR0;停止T0定时CLRTF0MOVTL1,#0B0H;送T1定时初值(50ms)MOVTH1,#3CHSETBTR1;启动T1AD4:JBCTF1,AD5STMPAD4AD5:CLRTR1;停止T1CLRTF1;清溢出标志CPLP1.0;P1.0取反AJMPAD1方法2:用一个定时器T0(或T1),通过软件控制完成。即将定时器T0定时50ms,定时器溢

7、出两次,P1.0被取反一次。ORG0052HMOVR7,#02HSTI:MOVTM0D,#01H;设置T0、T1为定时器,方式1工作AD1:MOVTL0,#0B0H;送T0初值MOVTH0,#3CHSETBTR0;启动T0进行50ms定时AD2:JBCTF0,AD3;查询TF0是否溢出SJMPAD2AD3:DJNZR7,AD1CLRTR0;停止T0定时CPLP1.0;P1.0取反MOVR7,#02HAJMPAD1[例6.3]单片机晶振fosc=12MHZ,利用定时器/计数器测量某一外部脉冲信号频率,要求连续测量五次,取其平均值作为

8、实测值。主程序及中断服务程序如下:ORG0000HAJMPMAINTORG000BHAJMPINTZ1ORG0100HMAINT:MOVSP,#15HMOVTMOD,#16HMOVTH0,#0F5HMOVTL0,#0F5HMOVR2,#05HMOV

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。