6.ウイーク・プルアップ機能について

 

 PIC16F88にはウイーク・プルアップ機能(WPU機能)がポートBの各ポートに備わっています。 この機能を有効にした入力ポートはポートのふらつきを防止する為に、Vddにプルアップされます。(出力ポートに設定すると自動的にWPU機能は無効となる)

ここでは、このWPU機能を使った簡単なプッシュSWの接続方法を解説します。

 

6.1 WPU機能を使ったプッシュSWの接続方法

 通常、市販本で紹介されているプッシュSWのポート接続方法は以下のものですが、WPU機能を使うと、1本の抵抗が省略できます。

 

 

 

 

 

 

 

 

 

 


6.2 コーディング例

では上記の接続における、プログラムによるマイコンの設定を説明します。  設定は「TRISB」,「OPTION」の2つのレジスタを設定するだけのいたってシンプルなものです

;          

;******************************************

;  Initialize Routine

;******************************************

INIT

              BSF                     STATUS,RP0                   ;bank1

;set clock

              MOVLW              070H                                 ;internal clock 8 MHz

四角形吹き出し: TRISBレジスタに01hを書き込み、
PB0を入力に設定する。
              MOVWF              OSCCON                    ;

;initialize PORTs

              MOVLW              030H                                 ;init ports

            MOVWF              TRISA                               ;

              MOVLW              01H                                   ;

四角形吹き出し: OPTIONレジスタのWPUビット(負論理)を“0”にすることでポートBのWPU機能が有効になる。            MOVWF              TRISB                               ;

              BCF                     OPTION_REG,              ;set week-pullup PORTB

;initiaize TMR2

              MOVLW              0FFH                                 ;set FF to TMR2

              MOVWF              PR2                                   ;

四角形吹き出し: PB0−5の場合は問題ないが、ANSELレジスタの初期値はすべてアナログ・モード(1)に設定されるので、PB6(AN5)、PB7(AN6)にPSWを接続する時は、AN5とAN6をIOポートとして割り振るために、対応ビットを“0”に設定しなければ、WPU機能は有効とならない。              BSF                     PIE1,TMR1IE                   ;enable TMR1 interrupt

              BSF                     PIE1,TMR2IE                ;enable TMR2 interrupt

;initiaize ADC

              MOVLW              010H                                 ;set AN4(CDS)

              MOVWF              ANSEL                          ;

;initiaize USRT

              MOVLW              0H                                     ;async,8bit,no-parity,2400bps

              MOVWF              TXSTA                               ;

              MOVLW              .207                                   ;

              MOVWF              SPBRG                              ;

              BCF                     STATUS,RP0                     ;bank0

;Stert TMR2

              CLRF                   TMR2                                ;set zero to TMR2

              MOVLW              01BH                               ;start TMR2 counter ( prescaler 1/4

              MOVWF              T2CON                           ;,postscaler 1:16 (8.2ms))

 

                                         

                                          省略

                                         

 

6.3 後書き

今回はWPU機能を利用したSW接続方法を説明しましたが、上記のイニシャライズ処理で「TRISB」と「OPTION」レジスタの設定が終われば、あとはメイン処理のなかでPB0が0になることを監視し、プッシュSWが押されたことを検知します。  このWPU機能が有効になっているか不安な時は、プッシュSWを押さない状態でテスタを使ってPB0のピンを当たるとVdd電圧がでています。

たかが、1本の抵抗を省略するために、WPU機能を使う必要があるの? と思われるかもしれませんが、マイコンに備わった機能は徹底して利用し、外付け部品を極力省くことがコストダウンや省資源に役立ち、良い設計といえます。