数码管显示程序出错
void delay(unsigned int A)
unsigned char code LED[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void main()
{
unsigned int lednum;
lednum=0;
while(1)
{
lednum++;
P0=LED[lednum];
if(lednum==16)
lednum=0
delay(600);
}
}
void delay(unsigned int A)
{
unsigned int x,y;
for(x=A;x>0;x--)
for(y=110;y>0;y--);
}
出错在第三条语句
我的是共阳极的数码显示 但是报错的结果是
warning C258: 'LED': mspace on parameter ignored
error C244: 'LED': can't initialize, bad type or class
那个LED我都换了好几个字符了都是出现这个错误
LED[]数组就16个字节。
你这几条
lednum++;
P0=LED[lednum];
if(lednum==16)
最后一次是LED[16]了。超过数组大小。
我把数组改小了还是不行也
lednum 是uint 而数组是uchar 。不同类型。、不过也可以,不是这问题。,是有些语句没加分号
lednum++;
P0=LED[lednum];
if(lednum==16)
lednum=0 这里就出问题了,LED[llednum]中的lednum 最大只能是15 你怎么能够到16才清零当lednum加到了16的时候应该马上清零 …… void delay(unsigned int A) 这个参数用什么大写A呢?刚开始学就养成这些坏习惯
函数声明没有分号!delay()调用也没有分号。
lednum=0 也没有分号。小伙子,靠谱点、
靠谱点,小伙子
嗯嗯 坏习惯我一定改
找个牛人的程序来看看 ,他怎么写,你就怎么写,他怎么命名,你就怎么命名,平时编程的时候注意一些,别那么随意,这回给你以后造成很大的麻烦……
是的,是因为第16行没加分号
我加了分号也没有用
确实哦,后来只加分好确实不行。
下面是我编译通过的:
#include<reg51.h>
void delay(unsigned int A);
unsigned char code LED[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void main()
{
unsigned int lednum;
lednum=0;
while(1)
{
lednum++;
P0=LED[lednum];
if(lednum==16)
lednum=0;
delay(600);
}
}
void delay(unsigned int A)
{
unsigned int x,y;
for(x=A;x>0;x--)
for(y=110;y>0;y--);
}
你复制试一下在你的编译器可不可以通过
咦……忘了,
除了 lednum=0;
void delay(unsigned int A);
我在这个延时声明后面也加了分号,就是它了