我有一个练习题,要求我将PORTB输入逻辑电平读入一个称为result的单个char变量中。 (在PIC18F252上)。我对此有一些想法,但是我没有答案可以检查,所以我不确定什么是正确的。这是我最初的想法,但是我不知道按位或操作调用PORTB是否会真正检索所有输入级别:

void setup(){
   TRISB = 0xFF; //Set all portB pins as inputs
}

void main(){
   char result;
   result |= PORTB;  //OR the value of the PORTB register into the result variable
}


这样对吗?如果没有人可以帮助我找到更好的方法呢?

最佳答案

经过更多的研究之后,我发现导致问题的原因是错误。
result |= PORTB实际上可以正常工作,但是result应该是unsigned char,而不是问题所述的char。这是因为PORTB和无符号字符都包含8位值(0-255),但是char处理7位值(-128至127)。

08-04 07:11