是为啥呀
error C216: subscript on non-array or too many dimensions
单片机源程序如下:
#include "lcd1602.h"
#include "TLC2543.h"
#include "math.h"
sbit MD1=P1^6;
sbit MD2=P1^7;
sbit RED_LED=P3^6;
sbit GREEN_LED=P3^7;
bit fflag;
unsigned char fcnt;
float ACRead_f;
unsigned int ACRead;
unsigned char ACRMS[4]={0,0,0,0};
unsigned char i;
unsigned int maxa,mina,max,min;
unsigned char keyval;
unsigned char mode;
unsigned char index;
#define KEYMODE 0X01;
#define KEYSHIFT 0X02;
#define KEYMINUS 0X04;
#define KEYPLUS 0X08;
void panduan()
{
if(ACRead>maxa)
{
GREEN_LED=1;
TR0=1;
fcnt=100;
MD1=1;
MD2=0;
}
else if(ACRead<mina)
{
GREEN_LED=1;
TR0=1;
fcnt=25;
MD1=0;
MD2=1;
}
else
{
RED_LED=1;
GREEN_LED=0;
TR0=0;
MD1=1;
MD2=1;
}
}
unsigned char key_scan()
{
unsigned char temp;
temp=P2|0xf0;
if(temp==0xff) return 0;
//delay1ms(10);
temp=~(P2|0xf0);
while((P2|0xf0)!=0xff);
return temp;
}
void main()
{
TMOD=0X01;
TH0=(0-10000)/256;
TL0=(0-10000)%256;
ET0=1;
EA=1;
TR0=0;
LcdInit();
LcdWriteCom(0x80);LcdWriteData('A');LcdWriteData('C');
max=188;
min=170;
maxa[0]=8;maxa[1]=8;maxa[2]=1;
mina[0]=0;mina[1]=7;mina[2]=1;
while(1)
{
keyval=key_scan();
if(mode==1)
{
if(keyval==KEYMODE) {mode=2;index=0;}
else if(keyval==KEYSHIFT)
{
if(++index>2) index=0;
if(index==0) LcdWriteCom(0x86);
else if(index==1) LcdWriteCom(0x85);
else if(index==2) LcdWriteCom(0x84);
LcdWriteCom(0x0e);
}
else if(keyval==KEYPLUS)
{
if(++maxa[index]>9) maxa[index]=0;
max=maxa[2]*100+maxa[1]*10+maxa[0];
LcdWriteCom(0x84);
LcdwriteData(maxa[2]+0x30);
LcdwriteData(maxa[1]+0x30);
LcdwriteData(maxa[0]+0x30);
}
eles if(keyval==KEYMINUS)
{
if(maxa[index]==0 maxa[index]=9;
else maxa[index]--;
max=maxa[2]*100+maxa[1]*10+maxa[0];
LcdWriteCom(0x84);
}
}
else if(mode==2)
{
if(keyval==KEYMODE) {mode=0;LcdWriteData(0x0c);}
else if(keyval==KEYSHIFT)
{
if(++index>2) index=0;
if(index==0) LcdWriteCom(0x86);
else if(index==1) LcdWriteCom(0x85);
else if(index==2) LcdWriteCom(0x84);
LcdWriteCom(0x0e);
}
else if(keyval==KEYPLUS)
{
if(++mina[index]>9 mina[index]=0;
min=mina[2]*100+mina[1]*10+mina[0];
LcdWriteCom(0x84);
LcdwriteData(mina[2]+0x30);
LcdwriteData(mina[1]+0x30);
LcdwriteData(mina[0]+0x30);
}
else if(keyval==KEYMINUS)
{
if(mina[index]==0) mina[index]=9;
else mina[indax]--;
if(++maxa[index]>9 maxa[index]=0;
min=mina[2]*100+mina[1]*10+mina[0];
LcdWriteCom(0x84);
LcdwriteData(mina[2]+0x30);
LcdwriteData(mina[1]+0x30);
LcdwriteData(mina[0]+0x30);
}
}
else//???è?à2a?£ê?
{
if(keyval==KEYMODE)//?£ê??ü
{
mode=1;
index=0;
//éè????1a±ê
LcdWriteCom(0x84);
LcdWriteCom(0x0e);
}
else
{
ACRead_f=read_DC_TLC2543(0x0);
ACRead_f=ACRead_f*5.0/4095.0*3.1415926535/2.0/sqrt(2)*100.0*51;
ACRead=ACRead_f;
panduan();
ACRMS[5]=ACRead%10;
ACRMS[4]=ACRead/10%10;
ACRMS[3]='.'-'0';
ACRMS[2]=ACRead/100%10;
ACRMS[1]=ACRead/1000%10;
ACRMS[0]=ACRead/10000%10;
LcdWriteCom(0xc0);
for(i=0;i<6;i++)
{LcdWriteData('0'+ACRMS[ i]);}
}
}
}
}
void t0int(void) interrupt 1
{
static i;
TH0=(0-10000)/256;
TL0=(0-10000)%256;
i++;
if(i>fcnt)
{
i=0;RED_LED=!RED_LED;
}
}
|