5.1 定时器编程
定时器编程主要是对定时器进行初始化以设置定时器工作模式,确定计数初值等,使用
C 语言编程和使用汇编编程方法非常类似,以下通过一个例子来分析。
例 5-1:用定时器实现P1 所接LED 每60ms 亮或灭一次,设系统晶振为12M。
参考图 5-1 输入源程序,建立并设置工程,本例使用实验仿真板难以得到理想的结果,
应使用DSB-1A 型实验板进行练习。
分析:要使用单片机的定时器,首先要设置定时器的工作方式,然后给定时器赋初值,
即进行定时器的初始化。这里选择定时器0,工作于定时方式,工作方式1,即16 位定时/
计数的工作方式,不使用门控位。由此可以确定定时器的工作方式字TMOD应为00000001B,
即0x01。定时初值应为65536-60000=5536,由于不能直接给T0 赋值,必须将5536 化为
十六进制即为0x15a0,这样就可以写出初始化程序即:
TMOD=0x01;
TH0=0x15;
TL0=0xa0;
初始化定时器后,要定时器工作,必须将 TR0 置1,程序中用“TR0=1;”来实现。
可以使用中断也可以使用查询的方式来使用定时器,本例使用查询方式,中断方式稍后
介绍。
当定时时间到后,TF0 被置为1,因此,只需要查询TF0 是否等于1 即可得知定时时间
是否到达,程序中用“if(TF0){…}”来判断,如果TF0=0,则条件不满足,大括号中的程
序行不会被执行到,当定时时间到TF1=1 后,条件满足,即执行大括号中的程序行,首先
将TF0 清零,然后重置定时初值,最后是执行规定动作――取反P1.0 的状态。
C 语言编程和使用汇编编程方法非常类似,以下通过一个例子来分析。
例 5-1:用定时器实现P1 所接LED 每60ms 亮或灭一次,设系统晶振为12M。
参考图 5-1 输入源程序,建立并设置工程,本例使用实验仿真板难以得到理想的结果,
应使用DSB-1A 型实验板进行练习。
分析:要使用单片机的定时器,首先要设置定时器的工作方式,然后给定时器赋初值,
即进行定时器的初始化。这里选择定时器0,工作于定时方式,工作方式1,即16 位定时/
计数的工作方式,不使用门控位。由此可以确定定时器的工作方式字TMOD应为00000001B,
即0x01。定时初值应为65536-60000=5536,由于不能直接给T0 赋值,必须将5536 化为
十六进制即为0x15a0,这样就可以写出初始化程序即:
TMOD=0x01;
TH0=0x15;
TL0=0xa0;
初始化定时器后,要定时器工作,必须将 TR0 置1,程序中用“TR0=1;”来实现。
可以使用中断也可以使用查询的方式来使用定时器,本例使用查询方式,中断方式稍后
介绍。
当定时时间到后,TF0 被置为1,因此,只需要查询TF0 是否等于1 即可得知定时时间
是否到达,程序中用“if(TF0){…}”来判断,如果TF0=0,则条件不满足,大括号中的程
序行不会被执行到,当定时时间到TF1=1 后,条件满足,即执行大括号中的程序行,首先
将TF0 清零,然后重置定时初值,最后是执行规定动作――取反P1.0 的状态。