请问单片机中的delay()的单位时间是什么?

请问单片机中的delay()的单位时间是什么?按理论应该是us啊,为什么教学视频说是ms?在8段数码管中显示的间隔时间单位确实s?

第1个回答  2012-08-22
那得看delay里面的for语句
第2个回答  2012-08-21
这要看你自己把delay函数写的延时是多久了追问

用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语言里不是那么算的,编译的时候转汇编了用汇编才算的出,不用纠结这个的精确延时的话也都用定时器,大致的延时的话用软件去算就行了