12F675 の I/Oポートを増やす

入力ポートを1本増やしたい


PIC12F675を入手しました。 早速アマチュア無線のキーヤー用プログラムを書き、試作機を製作しました。
内部RC発振を使用したのでVdd+とVssを除いた6本のピンがI/Oとして使用できます。しかしどうしてももう1本入力ポートが必要になりました。

解 決

A/Dポートに図のような回路を組みスイッチ2個を設けて、スイッチ操作によるAN1の入力電圧を検出してI/Oを合計7本にすることができました。

 スイッチON検出部分のプログラム
 ADSW_IN MOVLW B'00000101' ;ADCON0 の設定
MOVWF ADCON0
CALL DLY50U ;50μ秒遅延
BSF ADCON0,GO
 ADWAIT BTFSC ADCON0,G0_DONE ;アナログ入力電圧の取得
GOTO ADWAIT
MOVF ADRESH,0 ;取得値を
MOVWF SWITCH ;SWITCH レジスタに入れる
RETURN
;
 MAIN CALL ADSW_IN :スイッチ1(SW1) ON 検出
MOVLW 100
SUBWF SWITCH,0
BTFSS STATUS,C ;OFF ならシフト
GOTO SUB_R1 ;ONならサブルーチン1へ(終ってMAINへ)
;
CALL ADSW_IN :スイッチ2(SW2) ON 検出
MOVLW 155
SUBWF SWITCH,0
BTFSC STATUS,C ;OFF ならシフト
GOTO SUB_R2 ;ONならサブルーチン2へ(終ってMAINへ)
;
BTFSS DOT_PADDLE ;短点パドル入力検出
GOTO SUB_R3 ;ONならサブルーチン3へ(終ってMAINへ)
;
BTFSS DASH_PADDLE ;長点パドル入力検出
GOTO SUB_R4 ;ON ならサブルーチン4へ(終ってMAINへ)
;
GOTO MAIN
         (実際にはスイッチSW1とSW2の入力検出は3回繰返しています。)

   PIC12F675のピン6(AN1)のアナログ/デジタル変換実測値 Dは
       スイッチ1がONのとき   D= 85
       スイッチ入力が無いとき  D=125
       スイッチ2がONのとき   D=170   となりました。 

   4.7KΩx4本の抵抗値のばらつきや再現性、安定性を考慮して
       100−D が 正 なら スイッチSW1はON
       155−D が 負 なら スイッチSW2はON としました。
                                            2003.2.24

追 記
A/D ポートに複数のスイッチを入れる方法としてマイクロチップ社のウエブサイトのデータシートDS40040B があるのを見つけました。
一つのポートへ多数のスイッチを入れるアイデア(ハードウエア)が紹介されています。 
ソフトウエアは自分で考えなさいといったところです。
                                            2003.7.19

製作したキーヤをお見せします。 ここ をクリックしてください。
                                            2003.9.24

PIC目次へ    トップページへ