用delay编译延时1ms的程序是不是这样写:
void delay_ms(int i)
{
int j;
for(i=0;i0;j--);
}
请问是不是这样的?总不可能随便定义delay()是多少秒的吧
void delay1ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
下个单片机小精灵来算,这是1ms的延时函数:在51单片机12MHz晶振的情况下
请问怎么分析是1ms呢?这个程序不是表示1*142*2=284us嘛?
追答c语言里不是那么算的,编译的时候转汇编了用汇编才算的出,不用纠结这个的精确延时的话也都用定时器,大致的延时的话用软件去算就行了