【摘要】:定时器/计数器在使用之前需要进行初始化,写入控制字和预置初值。此间还提供一种延时子程序方法供对比,不是采用定时器而是采用估算机器周期数的方法来实现。汇编语言的定时器/计数器初始化参考程序如下:2.预置初值的计算例:晶振频率fosc=6MHz,机器周期T=2μs,定时时间Tc=1ms,求预置初值X。
定时器/计数器在使用之前需要进行初始化,写入控制字和预置初值。此间还提供一种延时子程序方法供对比,不是采用定时器而是采用估算机器周期数的方法来实现。
1.初始化的主要步骤
1)对TMOD寄存器写入控制字,以确定工作模式。
2)对THx、TLx预置初值。
3)按需要设置中断方式、中断入口地址,允许中断。
4)启动TRx。
汇编语言的定时器/计数器初始化参考程序如下:
2.预置初值的计算
例:晶振频率fosc=6MHz,机器周期T=2μs,定时时间Tc=1ms,求预置初值X。
(1)模式1
(216-X)×2μs=1000μs(www.xing528.com)
X=216-500=65036=FE0CH
预置值:THx=0FEH,TLx=0CH
(2)模式0
因模式0用了32分频定标器,从二进制化为十六进制时要正确选取数位,得
预置值:THx=11110000B=0F0H(从低第6位算起)
TLx=00001100B=0CH(高3位要补零)
3.延时子程序的时间估算
通常以工作寄存器作计数器,设置1层或多层计数循环和预置初值以达到延时的目的。以R7和R6的两层计数循环为例,预置值分别为248和200,晶振频率6MHz,机器周期2μs,延时子程序的机器周期估算示意图见图3-4。
第(1)层中的(R7-1)指令需两个机器周期,递减到零后共执行(248×2)个机器周期,其余层按同法计算,执行的机器周期总数为:(248×2)+3)×200+3=99803
总延时时间为:99803×2μs=199606μs
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。