• 締切済み

PIC12F675 GPIO入出力について

 現在、PIC12F675にてA/D変換、EEP- W/R,TMR0を使ったプログラムを作成しているのですが、GPIOの入出力がおかしくTMR0、GP0~2が正常に動作しません。   ●各PINの使用状況・・・ ・GP0/出力(H/L) ・GP1/出力(H/L) ・GP2/TMR0 ・GP3/入力(S/W) ・GP4/入力(A/D変換) ・GP5/出力(H/L) ●開発環境   ・MPLAB IDE V8.40   ・デイバイス PIC KIT1 MPLAB IDEのファイルレジスタとウォッチのウインドウでデバッグしていて気づいたのですが、SFRアドレス00H~05Hまでの変化がそのままGPポートの変化へとつながっており、GP0がRestricted Memoryicted Memoryが表示され、SIMでRUNさせてみるとプログラムでは「BSF」でGP0を出力してもGPIOの0ビット目は変化しません。 GP2も変化がなくTMR0も動作していない様です。  もちろんBANK1でTRISIOの設定(B'00011000')は行っています。 自己解決を試みましたが万策尽きて投稿させていただきました。 恐れ入りますが何方かご教授いただけましですでしょうか。  

みんなの回答

  • poyo3
  • ベストアンサー率30% (260/857)
回答No.1

原因はなんともですがポートがおかしいのならまずはポートの設定を確かめてみてはどうでしょうか? TRISはもちろんA/D変換をしているのならその設定(チャンネルや基準電圧など)またポートの割り込み設定などとにかくポートに関連した周辺機能が確実に設定されているか確認。 あとはOSCは内部発振を使用しているようなので電源の安定状態なども確認したほうがいいかもしれません。 電源ついででリセットとかも確認したほうがいいかと。(コンフィグの設定が悪い場合もあるかもWDTが動作しているとかMCLRがONになっているとか) あまり根拠はないかもしれませんが内部RC発振の場合は立ち上がりからすぐに動作させるとうまく動かないことが以前ありました。 少しWAITをおくという気休めもあります。(動作電圧が低めの設定で電圧が安定しなかったせいか?) 後はビット処理は16特有のもので連続ビット処理などを行ってもうまく切り替わらないことがあります。 ビット処理はポートを読み出し、必要なビットを書き換えまたポートに戻す関係で連続処理の場合は前の処理が変わる場合があります。 (これも以前に12F675でおこりましたが) 入出力のように部分的に動かないというのでなければ何か全体的に影響を及ぼす部分の誤りではないかなという気はします。 一行づつ目で追っていくほうがいいのかもしれません。 あまり回答でないですけど何かヒントにでもなれば。

関連するQ&A