返回信息流#define SYSCLK 12000000 //SYSCLK in 12M
void delay_ms(uint ms)
{
uint i;
//定时器0禁止(TR0=0)且没有溢出(TF0=0)
TCON &= ~0x30;
// 当TR0=1时定时器0工作,与/ITN0的逻辑电平无关,定时器0实,16位定时功能,由TOM位(CKCON.3)定义的时钟+1,
TMOD &= ~0x0f;
TMOD |= 0x01;
//定时器使用系统时钟,未分频
CKCON |= 0x04;
for(i=0;i<ms;i++)
{
TR0 = 0;
TH0 = (-SYSCLK/1000) >> 8;
TL0 = -SYSCLK/1000;
TR0 = 1;
while (TF0 == 0);
TF0 = 0;
}
}
请版主手下留情啊!
这是一条镜像帖。来源:北邮人论坛 / circuit / #22008同步于 2013/1/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
TLO问什么是这样?(虽然是C语言,但是是用单片机跑的,应该算此
wzl2011
2013/1/2镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
可以发到嵌入式版的。
你是问为什么TL0这样赋值吧。8051的寄存器都是8位的,如果将一个16位的值赋给寄存器,就只有低8位送进去,高8位直接忽略。
本来SYSCLK/1000结果是一个16位的值,正好就是计数器的初值,低8位直接给TL0,高8位给TH0.