标题: 51单片机延时问题 [打印本页]

作者: STC89C51    时间: 2016-8-26 01:25
标题: 51单片机延时问题
请教各位大神,为什么51延时程序不能写成:
void delay()
{
       unsigned char a;
       for(a=0;a<=80000;a++);
}
非得写成:
void delay(unsigned i)
{
       unsigned char a,b,c;
       for(a=0;a<i;a++)
           for(b=0;b<130;b++)
               for(c=0;c<250;c++);
}
否则,程序就无法执行。

作者: engcyh    时间: 2016-8-26 02:46
刚入门的吧,因为 char型变量最大值是255,80000这个值太大,int 也只有65535,按你的思路只能用long型变量了
作者: hantp    时间: 2016-8-26 08:12
unsigned char a
最大值是 255 。
作者: rich3524    时间: 2016-8-26 08:32
受教了!!
感謝大大.
作者: zsn8888    时间: 2016-8-26 08:49
C51 unsigned char 范围:0--255
      unsigned int            0--65535
unsigned long int           0--4294967295
随便买本51书都会写数值范围要求的。
作者: chenguangyou    时间: 2016-8-26 09:10
8000大于255
作者: chenguangyou    时间: 2016-8-26 09:10
8000大于255;char最大值255;
作者: STC89C51    时间: 2016-8-26 12:59
hantp 发表于 2016-8-26 08:12
unsigned char a
最大值是 255 。

谢谢,我当时没有考虑到这个,现在想起来这个错误好低级啊1
作者: STC89C51    时间: 2016-8-26 13:00
zsn8888 发表于 2016-8-26 08:49
C51 unsigned char 范围:0--255
      unsigned int            0--65535
unsigned long int            ...

谢谢!
作者: xln001    时间: 2016-8-26 21:03
a<80000,=不了80000,a是char.




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