【发布时间】:2012-09-28 08:14:12
【问题描述】:
我正在为 AVR ATmega32-A 微控制器编写代码。我正在使用如下所示的开关盒。
unsigned char Command;
unsigned int Param;
void runCom(void){
switch(Command){
case(NO_COM):
Command = 0;
break;
case(INF):
printf("\r\n\r\n");
printf("university\r\n");
printf("sweden\r\n");
printf("Ver. 1.0A\r\n");
Command = 0;
break;
case (DB):
Command = 0;
break;
case(CLEARM):
Command = 0;
break;
default:
Command = 0;
break;
}
}
上面的代码正在运行,但现在我想在该开关中再添加一个案例,如下所示。
unsigned char Command, Command1;
unsigned int Param;
void runCom(void){
switch(Command){
case(NO_COM):
Command = 0;
break;
case(INF):
printf("\r\n\r\n");
printf("university\r\n");
printf("sweden\r\n");
printf("Ver. 1.0A\r\n");
Command = 0;
break;
case (DB):
Command = 0;
break;
case(ADC):
printf("ADC Value",ReadAd());
printf("Enter Amplification stage");
switch(Command1){
case(stage1):
PORTC=0x00;
DDRC=0xC0;
printf("ADC Value",ReadAd());
Command1 = 0;
break;
case(stage2):
PORTC=0x00;
DDRC=0x03;
printf("ADC Value",ReadAd());
Command1 = 0;
break;
}
Command = 0;
break;
case(MEM):
Command = 0;
break;
case(CLEARM):
Command = 0;
break;
default:
Command = 0;
break;
}
}
我收到类似
的错误 undefind symbol 'ADC'
undefind symbol 'stage1'
undefind symbol 'stage2'
然后我就这样声明了
unsigned char Command, ADC, Command1, stage1, stage2;
unsigned int Param;
现在我遇到了类似的错误
constant integral expression required at line case(ADC)
constant integral expression required at line case(stage1)
constant integral expression required at line case(stage2)
所以请任何人建议我如何克服这个错误。我没有在任何地方声明 WGP、WGF、INF,但我没有得到“WGF、WGP、INF 的未定义符号。为什么这个错误只发生在 ADC 上。我已经放弃了与以前使用的相同的 switch case 规则。任何建议表示赞赏.
提前致谢。
【问题讨论】:
-
这是在 www.avrfreaks.net 上提出的同一问题的交叉帖子。
标签: c embedded switch-statement avr