使用UART功能时,我遇到了开关盒的问题。我收到数据并将其存储到eeprom中。我想调用switch语句来查看发送的内容。我读了eeprom,信息是正确的,但我无法阅读正确的信息。它总是以错误为基础(默认情况)。我正在使用Hi-tech C编译器。
unsigned char tempVal;
tempVal = eeprom_read(cmdByteAddr);
switch(tempVal){
//Get temperature
case 30:
writeByte('T');
break;
//Get temp high
case 31:
writeByte('T');
writeByte('H');
break;
//Get temp low
case 32:
writeByte('T');
writeByte('L');
break;
//Get humidity
case 41:
writeByte('H');
break;
//Get humidity high
case 42:
writeByte('H');
writeByte('H');
break;
//Get humidity low
case 43:
writeByte('H');
writeByte('L');
break;
//Error
default:
writeByte('E');
writeByte(eeprom_read(cmdByteAddr));
break;
}
答案 0 :(得分:1)
eeprom_read()
返回的值不是您的情况之一。 switch()
正常运行。使用相同的切换变量调整代码以显示更有意义的错误,而不是调用eeprom_read()
。
default:
writeByte('E');
writeByte(tempVal);
break; // Not sure why you want `break` here.
如果结果仍不理想,请尝试unsigned tempVal
。有时,编译器会对子int
大小的数据感到困惑,尽管不应该这样。您可能需要writeUnsigned(tempVal)
或其等价物。
您可能还想打印cmdByteAddr
。也许它超出了EE范围。