2017-06-08 13 views
-1

私はこれを得ており、迷惑です。誰もが間違いを見ることができますか?それを修正する方法を知っていますか?符号付きから符号なしへの変換を実装するmplab xc8

警告:暗黙的(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

、スニペットを開くには、あなたのコードを貼り付け、:

私に起こって奇妙なことが解決策は、このように8ビットから16ビット動作のためにはまだ十分ではないということですJavaScriptのセクションで左ペインの「Tidy」をクリックし、それをコピーして質問に貼り付けます。 –

+3

警告の行は何ですか?このコードでこの警告を生成するものは何も表示されません。 「再現できません」、または[mcve]の読み取りを提供するように近いはずです。 – Stargateur

+0

'SPI_SCK'、' SPI_MISO'、 '__delay_us'とは何ですか?投稿したコードのどの行に警告が表示されますか? –

答えて

0

私はちょうど今、同様の "問題" を抱えているに署名しました。 私は以下のように解決しました: 値=(符号なしのchar)(値|(x >> i)); 私は基本的にコンパイラはあなたの操作の結果が8ビットのサイズのままであり、符号なしであることを知らないので、それを指定するように頼みます。コードの適切な形式のため

unsigned int mul; 
unsigned char a,b; 
mul=(unsigned int) ((a+CONSTANT_VALUE*2/3)*b); 
関連する問題