PIC16F88の使い方?に関する質問(アセンブラ)
現在PICの16F88に書きこむプログラムをアセンブラで書いてます。4番ピンのMCLRをRA5として使いたいのですが、MPLABのWATCHの機能を使って、ポートAの動きを見てみると、ポートAが出力になっているはずなのに、何をしてもポートAの0~4がHにならず、ポートAのRA5はBSF,BCFの命令が利きません。コンフィグの設定が怪しいと思うのですが、自分には理由が分からないので、誰か教えてください。お願いします。(下に書いたプログラムはテスト用に書いたプログラムなので特に目的はありません)
;外部発振,セラロック20MHz使用
LIST P=PIC16F88
INCLUDE P16F88.INC
__CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
BSF STATUS,RP0
MOVLW B'000000'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,RP0
MAIN
CLRF PORTA
MOVLW B'11111111'
MOVWF PORTA
MOVWF PORTB
BSF PORTA,0
BCF PORTA,0
BSF PORTA,1
BCF PORTA,1
BSF PORTA,2
BCF PORTA,2
BSF PORTA,3
BCF PORTA,3
BSF PORTA,4
BCF PORTA,4
BSF PORTA,5
BCF PORTA,5
GOTO MAIN
END
お礼
ご回答ありがとうございます。 結果からご報告します。 問題は取り合えず解決しました。 CCSでしたら byte cBuf[14]; read_configuration_memory(cBuf, sizeof(cBufL)); //50us(4MHz) cBuf[3]=0x03 | 0x04; //0x04 - 0x3C write_configuration_memory(cBuf, sizeof(cBuf)); //50ms(4MHz) のように read_configuration_memory および write_configuration_memory により 必要な部分を書き換えて書き戻すことで変更できました。 ただし、書き込みに4HMzClockで50msも要するためそれより短い設定にすると正常に 動作しなかったりウォッチドックが効いてしまいました。 そこでそれまでは #fuses に WDT_SW が無かったため #fuses ***,WDT_SW, WDT1,*** のように WDT1 で4ms としソフトウェア制御で必要な時間を得ることとしました。 ソフトウェア制御のWDT_SW を追加することで write_configuration_memory による長時間処理も問題はなくなるでしょう。 しかし、Flash書き込みだとすると頻繁な書き込みは寿命問題がありますので 結果的には書き換えはやめることにしました。