我得到了这个,这很烦人。有人能看到错误吗?并知道如何解决它?
警告:(373)隐式签名到无符号转换
unsigned char read_soft_SPI(void) {
unsigned char value = 0;
unsigned char i = 0;
unsigned char x = 0x80;
SPI_SCK = 0;
__delay_us(1);
for (i = 0; i < 8; i++) {
__delay_us(1);
if (SPI_MISO == 1) {
value = value | (x >> i);
}
SPI_SCK = 1;
__delay_us(1);
SPI_SCK = 0;
}
return value;
}
答案 0 :(得分:0)
我刚刚遇到类似问题&#34;。 我解决了如下问题: value =(unsigned char)(value |(x&gt;&gt; i)); 我相信基本上编译器不知道你的操作结果将保持在8位大小并且没有符号,所以它要求你指定它。
发生在我身上的一件奇怪的事情是,解决方案还不足以支持8位到16位操作:
unsigned int mul;
unsigned char a,b;
mul=(unsigned int) ((a+CONSTANT_VALUE*2/3)*b);