PIC16f877a开关无法正确读取

时间:2013-12-16 14:31:49

标签: c switch-statement pic mplab

使用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;
}

1 个答案:

答案 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范围。