微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 不同数据类型的延时函数

不同数据类型的延时函数

时间: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.延时函数的结构不同

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top