发表于:2007-08-16 07:36:00
楼主
#include<reg51.h>
#define V_MOD0 0 /*定时器/计数器0 方式控制字*/
#define V_T0 0x1e0c /*时间常数值*/
main()
{
/*下列语句初始化定时器/计数器0 */
TMOD=V_MOD0;
TL0=V_T0&0xff;
/*下列语句开放CPU中断并启动定时器/计数器0 */
TR0=1;
ET0=1;
EA=1;
/*无限循环等待P1.0引脚上输出方波信号*/
while(1);
}
void timer()(void)interrupt 1 using 3
{
/*重装时间常数值并将P1.0取反后输出*/
TL0=V_T0&0xff;
TH0=V_T0>>8;
P10=~P10;
}
这个CPU的晶振是6兆的,想做一个周期为2毫秒的闪烁指示,输出口P1.0每1毫秒动作一次,我不明白的就是它的时间常数值的设定,是根据什么设定的?
这个示例说1毫秒的延时,要由1000个机器周期来实现,那为什么时间常数值是十六进制的1e0c呢,照我想6兆的CPU要实现1毫秒的话,应该需要500个机器周期的.