5.4 定时/计数器编程方法

更新于 2026年10月10日 版权声明
5.4 定时/计数器编程方法

5.4.1 定时/计数器中断法

定时/计数器中断法,是执行完整个中断处理过程的方法。

1.中断法初始化编程基本步骤

第一步,根据定时时间或计数要求,确定计数初值。

第二步,预置定时或者计数的初值到THx和TLx。

第三步,确定工作方式,写控制字到TMOD。

第四步,根据需求开放定时/计数器的中断。

第五步,启动定时/计数器。

2.中断法初始化编程举例

例5 单片机主频为6MHz,要求定时器0用于定时、软件启动、工作方式为方式0、定时时间为10ms,试完成初始化工作。

第一步,计数初值=8 192-10 000/2=3 192。

第二步,将3 192转化为二进制为 1100011 11000,如图5-11所示。

图示

图5-11 16位内存单元值

TL0取低5位,高位补0,则有TL0=0x18;

TH0取高8位,不足8位,高位补0,则有TH0=0x63。

第三步,TMOD=0000 0000B=0x00。

第四步,EA=1,ET0=1。

第五步,TR0=1。

例6 单片机主频为6MHz,要求定时器1用于计数、软件启动、工作方式为方式2、计数长度为100,试完成初始化工作。

第一步,计数初值=256-100=156=0x9C。

第二步,TH1=0x9C,TL1=0x9C。

第三步,TMOD=0110 0000B=0x60。(https://www.daowen.com)

第四步,EA=1,ET1=1。

第五步,TR1=1。

3.中断法编程举例

例7 单片机主频为6MHz,要求定时器0用于定时、软件启动、工作方式为方式0、定时时间为10ms,试产生周期为20ms的正方波。

图示

图示

例8 单片机主频为6 MHz,要求定时器1用于计数、软件启动、工作方式为方式2、计数长度为100,计数值满使得P1.0引脚LED灯亮,再计下一个100次后,LED灯灭,依次循环。

图示

图示

5.4.2 定时/计数器查询法

定时/计数器查询法,只查询TF0或TF1是否发生溢出为1,而不执行完整个中断处理过程的方法。

1.查询法初始化编程基本步骤

与中断法的不同之处在于不需要开放定时/计数器的中断,只有四步。

第一步,根据定时时间或计数要求,确定计数初值。

第二步,预置定时或者计数的初值到THx和TLx。

第三步,确定工作方式,写控制字到TMOD。

第四步,启动定时/计数器。

2.查询法编程举例

例9 单片机主频为6MHz,要求定时器0用于定时、软件启动、工作方式为方式0、定时时间为10ms,试产生周期为20ms的正方波,采用查询法。

图示

例10 单片机主频为6MHz,要求定时器1用于计数、软件启动、工作方式为方式2、计数长度为100,计数值满使得P1.0引脚LED灯亮,再计下一个100次后,LED灯灭,依次循环,采用查询法。

图示

图示

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)