2011年8月18日木曜日

【メモ】PIC16F88でUSART(受信割り込み)

/* *** */

#include <htc.h>

__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_OFF & BOREN_OFF & LVP_OFF & DEBUG_OFF);

static void interrupt intr(void) {
if (RCIF) {
char t;
RCIF = 0;
TXREG = 'R';
t = RCREG;
RB4 = (t == '0' ? 0 : 1);
}
}

void main(void) {
TRISA = 0b000000;
TRISB = 0b00000100;
ANSEL = 0;
PORTA = 0;
PORTB = 0;

RCIE = 1;
PEIE = 1;
GIE = 1;

TXSTA = 0x20;
RCSTA = 0x90;
SPBRG = 32;

TXREG = 'S';

while(1) {
}
}
/* *** */

とりあえず動作確認だけだから無駄なコードとかあるかも
ハードUSARTなので回路図は省略
とりあえずTXとRXを間違えずに接続してください
あとRB4にLEDを1kΩくらいの抵抗を介してGNDに接続すると
数字の0(アスキーコード49だったかな?)で消灯
それ以外で点灯します
シリアル受信割り込みで処理してるから他の命令を実行中でも動作すると思う

とりあえずメモ程度なので変なバグあっても怒らないでorz
(バグ見っけたらコメント等で教えていただけると)

追記:動作クロックは20MHzです

(includeのあとが表示されない問題を修正 HTMLタグと間違われてたらしい バックスラッシュとかで"<"とかを無効化できたはずなんだけどどうやるんだっけ… 2011/08/19)

0 件のコメント:

コメントを投稿