C语言单片机数组问题

刚刚开始学单片机,之前参加过ACM比赛所以C语言语法是没问题的,但是编出来之后发现不能编译,为什么呢?
//#include "stc.h"
#include <reg52.h>
#define ON 0
#define OFF 1

sbit LEDD[8];

void init()
{
DS1302=OFF;
LEDD[0]=P1^0;
LEDD[1]=P1^1;
LEDD[2]=P1^2;
LEDD[3]=P1^3;
LEDD[4]=P1^4;
LEDD[5]=P1^5;
LEDD[6]=P1^6;
LEDD[7]=P1^7;
}

void main()
{
int iii=0;
init();
while(1)
{
LEDD[iii]=ON;
//Delay(2);
LEDD[iii]=OFF;
iii=(iii+1)%8;
}
}
编译不过,哪位大神能帮看下

第1个回答  2013-07-04
LEDD[0]=P1^0;
LEDD[1]=P1^1;
LEDD[2]=P1^2;
LEDD[3]=P1^3;
LEDD[4]=P1^4;
LEDD[5]=P1^5;
LEDD[6]=P1^6;
LEDD[7]=P1^7;

以上是用sbit 单一 定义的啊 不要用数组
你把编译结构贴出来啊。。。追问

编译大概就是说 LEDD undefined identifered……
就是说sbit类型的不能用数组?

追答

至少我没见过。。。。那就是这个问题了

51提供并口 P1 干嘛不直接用呢?P1=0x xx 不是很方便吗?

追问

不会……今天才刚开始看,谢谢了

第2个回答  2013-07-04
DS1302 你定义了吗 而且LEDD[0]=P1^0;LEDD[1]=P1^1;LEDD[2]=P1^2;
是硬件中做好的 你在这里定义是什么意思呢?追问

我就是想单独控制某个等的亮或者灭,所以定义的LEDD【】,就是控制第n盏灯
DS1302是干嘛用的?上面那个代码我没删完,忽略DS1302吧

追答

1302是时钟芯片 不知道你在哪复制的 单独控制不是用LEDD[2]=P1^2;控制 P1=0x04就可以控制LED[2]亮

追问

例程写的是
#include
sbit LED0=P1^0;
void main()
{
LED0=0;
}
但是我想分别控制8盏等,于是我就自己定义的数组,结果不能编译

追答

像这样sbit LED0=P1^0; 定义8个 在函数外
或者P1&=0<<iii //(iii 0-7范围)
你如果是要流水灯的效果就是这个

追问

好的,谢谢了……

本回答被提问者采纳
相似回答