标题: 谁能帮我解释一下这个单片机程序,函数声明部分看不懂 [打印本页]

作者: woshidage1    时间: 2019-1-26 11:18
标题: 谁能帮我解释一下这个单片机程序,函数声明部分看不懂
  1. #include<reg52.h>
  2. unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//显示数字1-9
  3. void Delay(unsigned int t);//函数声明(就是这里不知道什么)
  4. void main (void)
  5. {
  6.         unsigned char i;//定义一个无符号型局部变量i取值范围0-255
  7.         while(1)
  8.       {
  9.             for(i=0;i<10;i++)
  10.             {
  11.                P2=table[i];    //循环调用表中的数值
  12.                Delay(50000);
  13.             }
  14.      }
  15. }
  16. void Delay(unsigned int t)
  17. {
  18.     while(--t);//这个也不知道是什么东东
  19. }
复制代码

作者: a401309754    时间: 2019-1-26 16:22
函数声明部分就是定义了函数的名字Delay,还有一个无符号整型变量t。假设t=10,while(--t)当t=0时就会不成立,那么--t的这个过程是需要执行时间的,也就实现了延时的功能。
作者: wulin    时间: 2019-1-26 17:04
编译器是从main函数开始编译,main函数里调用了Delay函数,如果不作声明,编译器不知道到哪里找Delay函数。如果把Delay函数放在main函数前面就相当于声明,就不必另外作声明。
作者: HC6800-ES-V2.0    时间: 2019-1-26 20:53
把函数写在main()主函数的前面,就可以不用申明了。
另外:while(--t);的意思,就是一个循环,浪费时间用的,这是个延时函数
作者: woshidage1    时间: 2019-1-27 11:25
谢谢你们啦
作者: 璀璨星芒    时间: 2019-1-27 14:26
定义了一个延时函数
作者: 累不死的狗    时间: 2019-1-27 18:58
我想不明白的是你有啥看不懂的呢,不就是让变量一直自减么,当while里面的判断条件为假时一跳出不就跳出循环了么
作者: 放眼天下    时间: 2019-1-28 10:00
这个函数delay就是一个延时的功能,通过while(i--)的运算来使CPU消耗一段时间达到延时的功能,你想啊,while语句里面非0即真的,所以i只有自减到0的时候才会跳出循环,这就需要时间啊。还有一点,楼主注释的有一点错误了,这个不是显示1-9了,这是10个数,应该是0-9.
作者: 周超然    时间: 2019-1-28 11:05
延时,程序减到0,往下执行
作者: rensilver    时间: 2019-1-28 14:19
while(--t);这个就是用来延时的。
作者: onisac    时间: 2019-1-28 21:26
就是一个延时程序,数数50000下,显示下一个数字;
0 - wait 50000 - 1 - wait 50000 - 2 -wait 50000 - ....




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1