これは私の最初の投稿ですので、私が間違ったことを許してください:) これが私の状況です。MPLAB と HI-Tech C コンパイラを使用して、PIC16F876 の簡単なデータ転送操作を作成しています。
データと呼ばれる文字があります。データのビットにアクセスし、MSB から始めてポート B0 に送信したいと考えていました。
アセンブリでは、次のようにします。
PORTB,0 = data,7
// MSB を取得してポート B0 に配置するには、すべてのビットに対してこれを行います。
ただし、C では、これはより複雑なようです。私はいくつかの調査を行い、機能する機能を見つけました:
getBit(char data, int bitNumber)
{
return (data & (1 << bitNumber-1)) != 0;
}
それから私はただ使用します:
PORTBbits.RB0 = getBit(data,7);
これは問題ありませんが、面倒で時間がかかるようです。追加の関数が必要な理由がわかりません...私の質問は、レジスタのビットにアクセスする簡単な方法はありませんか? お気に入り:
PORTBbits.RB0 = data,7
とにかくコンパイラがそれをアセンブリに変換するので、なぜそこにないのか理解できませんか??!!!!
前もって感謝します。よろしく、ティム。