日本ニューティーシー株式会社



  • HOME
  • Customer Center
  • よくある質問

 

検索 : 4,652
タイトル [AVR ソース関連] ポート(GPIO) I/O 制御を容易にする方法
お名前 administrato… 11-09-28 14:46

こんにちは。8051 などではビット制御する関数ありましたが、AVRではそのような関数あまりないため、ご不便じるかけました。えば8051では P1.0 = 1; のようにすれば、ポ 1 0ビットを1使うことができたのです。非常便利でした

 

ところが、そのようにすると、ヘキサコドがきくなり、ICCAVRではそのような関数ありません。自主的製作して使わなければなりません。それで、下記のようにって使ったりします下記はビット制御入出力関連定義です。 関数にして使こともできますが、下記のようにディファイン(define)文章にして使えば便利くなります。関数らなくてもからです。
関数時間かれることになるでしょう。ご参考ください


-
下記1- 

#define sbi(port, bit)       (port) |= (1 << (bit))
#define cbi(port, bit)       (port) &= ~(1 << (bit))

- 下記2-
#define      OUTPORT       PORTC

#define      BIT_4            0x10
#define      BIT_5            0x20

#define      BIT4(m)      m?(OUTPORT|=BIT_4):(OUTPORT&=~BIT_4)
#define      BIT5(m)      m?(OUTPORT|=BIT_5):(OUTPORT&=~BIT_5)

下記2のようにすると、それなりに便利である場合もあります。しかし、通常下記1にして使います。 入力ける場合


#define        INPORT         PINC 
unsigned char test4, test5;
test4=INPORT&(0x10);
test5=INPORT&(0x20);


このようにすればいいです。ありがとうございます。