不同数据类型的延时函数
时间:10-02
整理:3721RD
点击:
以下两个延时函数,为什么延时不同呢?
voidint_delay()
{
unsigned int m;
for(m=0;m<36000;m++);
}
voidchar_delay()
{
unsigned char i,j;
for(i=0;i<200;i++)
for(j=0;j<180;j++) ;
}
第一个只有一个for判断,第二个有两个for,设所用晶振为12M,则一个机器周期就是1微秒。而for指令是双周期指令,所以执行一次要2个微秒
执行指令也是要时间的,所以程序越简洁高效越好。
第一个延时比第二个延时很多,不知为什么?好像都执行36000次
你程序的语句数量不一样,及时执行的次数一样但不代表语句的执行次数是一样的,语句的执行也是要时间的
因为你的两个延时函数中变量的数据类型不同,无符号整型数据占两个字节,而无符号字符型数据仅占一个字节,因此对无符号整型数据进行操作花费的时间就要长一些。所以你会看到第一个延时函数的延时时间比第二个的要长。至于为什么第二个函数用了两个for循环,是因为无符号字符型数据它的取值范围只有0-255,为了和第一个函数都执行36000次,只能写成两个for循环,否则超出了它的范围
您將第一個m>36000改為m>30000,第二個程序J>180改為j>150,再調試一下試試看,應該是第二程序延時要比第一個延時長!因為for循環跳轉需要時間。
1.数据类型不同
2.延时函数的结构不同