首页 理论教育 单片机控制技术:定时和计数器的初始化

单片机控制技术:定时和计数器的初始化

时间:2023-11-24 理论教育 版权反馈
【摘要】:由于定时器是一种可编程部件,使用前应先确定它的工作方式、计数初值、启停操作等功能,也就是定时器的初始化。解先计算这两个定时器的初值。

单片机控制技术:定时和计数器的初始化

由于定时器是一种可编程部件,使用前应先确定它的工作方式、计数初值、启停操作等功能,也就是定时器的初始化

1.定时/计数器的初始化步骤

①根据定时时间要求或计数要求计算计数器初值。

②填写工作方式控制字送TMOD寄存器。

③送计数初值的高八位和低八位到THi和TLi(i=0或1)寄存器中。

④启动定时(或计数),即将TRi(i=0或1)置位。

注:如果工作于中断方式,还需置位EA(中断总开关)及ETi(允许定时/计数器中断,i=0或1),并编写中断服务程序。

2.定时/计数器计数初值的确定

定时/计数器计数初值的确定与两个因素有关。

①功能:有定时和计数之分。

②工作方式:有方式0、1、2、3之分。工作方式不同,其最大计数值M不同,定时器的最大定时时间也不一样。

·定时功能下的初值:

X=M-N=M-(fosc×t)/12

式中,N=定时时间/机器周期=(fosc×t)/12;模式0时M=213=8192,模式1时M=216=65536,模式2、模式3时M=28=256。

·计数功能下的初值:

X=M-N

式中,N=计数值;模式0时M=213=8192,模式1时M=216=65536,模式2、模式3时M=28=256。

例7-1 编写初始化程序,要求设置定时器T1为定时功能,定时50ms,选择工作方式1,允许中断,软启动(设晶振频率为6MHz)。

解 定时初值为

X=M-(fosc×t)/12=65536-(6×50×1000)/12=40536=0x9E58

初始化程序如下:(www.xing528.com)

TMOD=0x10; //确定T1工作方式、功能及启动方式

TH1=0x9E; //定时器初值高8位置入TH1

TL1=0x58; //定时器初值低8位置入TL1

TR1=1; //定时器启动

EA=1; //开总中断

ET1=1; //开定时器T1中断

例7-2 编写定时器初始化程序,要求T1作定时器使用,工作于方式1,定时时间10ms;T0作计数器使用,工作于方式2,计数值为1,即外界发生一次事件就溢出(设晶体振荡频率为12MHz)。

解 先计算这两个定时器的初值。对于T1,工作于定时功能,方式1,其初值为

X=M-(fosc×t)/12=65536-(12×10×1000)/12=55536=0xD8F0。

对于T0,工作于计数功能,方式2,其初值为

X=M-N=256-1=255=0xFF

初始化程序如下:

TMOD=0x16;

TH0=0xFF;

TL0=0xFF;

TH1=0xD8;

TL1=0xF0;

TR0=1;

TR1=1;

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈