22.1184MHZ z=1时精确延时1ms)
void delay_1ms(uint z)
{
uint x,y;
for(x=z; x>0; x--)
for(y=1696; y>0; y--);
}//你自己设置一下数值 这个延时相对来说 比较精确了 要是要相对精确 那就得用定时器了
定时器T0 工作方式1 晶振频率22.1184MHz
定时器最大定时时间(us):32768
定时器最小定时时间(us):0.5
【1ms精确定时C51代码】
void T0_init(void) //定时器初始化
{
TMOD |= 0x01;
TH0 = 0xf8; //设置定时器计数初值,定时1000us
TL0 = 0x33;
IE |= 0x82; //打开总中断
TR0 = 1; //启动定时器
}
void T0_intservice(void) interrupt 1 //定时器
{
TH0 = 0xf8; //重装载定时器计数初值
TL0 = 0xcc;
//其他处理程序 定时器你会用很明白就看懂了 ;
}
追问1/22.1184M * 12 *1696 *1000=0.92ms约 1ms 是这样算吗
追答en