1)合理选择定时/计数器工作方式。
2)计算定时/计数器的定时初值(按上述公式计算)。
3)编制应用程序。①定时/计数器的初始化,包括定义tmod、写入定时初值、设置中断系统、启动定时/计数器运行等;②正确编制定时/计数器中断服务程序,注意是否需要重装定时初值,若需要连续反复使用原定时时间,且未工作在工作方式2,则应在中断服务程序中重装定时初值。
【例4-6】 试用t1(工作方式2)编制程序,在p10引脚输出周期为400μs的脉冲方波,已知fosc=12mhz。
解:1)计算定时初值。
t1初值=28-200μs/1μs=256-200=56=38h
th1=38h;tl1=38h
2)设置tmod:
3)编制程序如下:
【课堂练习题】
参照以上例题(工作方式2),按下列要求分别修改程序:
1)脉冲方波从p3.0输出;
2)fosc=6mhz;
3)脉冲方波脉宽为100μs;
4)用定时/计数器t0;
【例4-7】 已知晶体振荡频率为12mhz,参见图4-7,要求利用定时器t0,使图中发光二极管(led)秒闪烁。
(www.xing528.com)
图4-7 秒闪烁
解:发光二极管秒闪烁,即每秒一亮一暗,亮500ms,暗500ms。晶体振荡频率为12mhz,则每个机器周期为1μs,t0在工作方式1下的最大定时只能为65ms余。取t0定时50ms,计数10次,即可实现500ms定时。
1)计算定时初值:
t0初值=216-50000μs/1μs
=65536-50000=15536=3cb0h
th0=3ch;tl0=b0h。
2)设置tmod:
3)编制程序如下:
【例4-8】 用单片机定时/计数器设计一个秒表,由p1口连接的led采用bcd码显示,发光二极管亮表示为0,暗表示为1。计满60s后从头开始,依次循环。
解:定时器t0工作于方式1,产生1s的定时,定时器t1工作在方式2,当1s时间到时,由软件复位t1(p35)脚,产生负跳变,再由定时器t1进行计数,计满60次(1min)溢出,再重新开始计数。
按上述设计思路可知:工作方式寄存器tmod的控制字应为61h;定时器1的初值应为
256-60=196=c4h
其源程序可设计如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。