关于延时函数 与 机器周期,问题请教。
时间:10-02
整理:3721RD
点击:
void Delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
130*38=4940 个机器周期,就是10ms? 4940个机器周期,应该是 4940us 吧?
void Lcd1602_Delay1ms(uint c) //误差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
200 个机器周期,就是1ms? 200 个机器周期,应该是 200us 吧?
我HC6800ES V2.0的板子,12MHZ的晶振,书上说机器周期是1us呀。
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
130*38=4940 个机器周期,就是10ms? 4940个机器周期,应该是 4940us 吧?
void Lcd1602_Delay1ms(uint c) //误差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
200 个机器周期,就是1ms? 200 个机器周期,应该是 200us 吧?
我HC6800ES V2.0的板子,12MHZ的晶振,书上说机器周期是1us呀。
你要从汇编指令的角度去算时间,不是根据C语言这里循环了几次来算时间的。不同的汇编指令需要的时间是不同的额,你自己去按照这个方向查一下资料。
