(  @PIC16F84A   APIC16F819   BPIC12F675  )
●LED電飾プログラムをMPASMで作ってみよう

B(PIC12F675)用LED電飾プログラム
基本となる'PIC16F84A'用の基本版プログラムを単純コピーしてから このPICの特性(8ピンなど)に合わせた設定変更、及び、プログラム修正 を段階的に行い、試行動作させながら確認しました。 内部クロック(4MHz)で、内蔵オシレータを使用しました。 点灯の順番( GP0 → GP1 → GP2 → GP4 → GP5 )、これを繰り返す。
・ ・ ・ ・ ・
■標準ヘッダ、定義ファイルの変更 LIST P=PIC16F84A  → P=12F675 INCLUDE "P16F84A.INC"  → P12F675.INC
■コンフィグレーションビットは、このような設定です。 CB = _CPD_OFF ;データEEPROMを(コードプロテクトしない) CB &= _CP_OFF ;プログラムメモリを(コードプロテクトしない) CB &= _BODEN_OFF ;ブラウンアウトリセットを(使わない) CB &= _MCLRE_OFF ;MCLRリセットを(使わない)、GP3ピンが入力設定になる CB &= _PWRTE_ON ;パワーアップタイマーを(使う) CB &= _WDT_OFF ;ウォッチドックタイマを(使わない) CB &= _INTRC_OSC_NOCLKOUT ;発振回路(INTOSCモード)内部発信器を使う(4MHz) __CONFIG CB ;コンフィグレーションビットにCBを書き込む
■汎用レジスタの開始アドレスの変更  'OC' → '20'
■デジタルI/Oモード設定の追加 CLRF ANSEL ;ANSELレジスタ←0 (デジタルI/Oモードにする) (GP0〜4)
■コンパレータの電源オフ設定の追加 MOVLW B'00000111' ;Wレジスタ ← CM0〜2 コンパレータは電源オフする MOVWF CMCON ;CMCOMレジスタ ← Wレジスタ
■ポートを取扱うレジスタの変更  TRISA、TRISBレジスタ→TRISIOレジスタ  PORTA、PORTBポート→GPIOポート
■LED出力パターンデータの変更 使用する出力ピン(GP0,GP1,GP2,GP4,GP5)に合わせてデータを作りました。
■GP3ピンを使用しなかったのは・・・ MCLR端子(GP3ピン)によるリセットはしないので、GP3ピンとして設定しました が、入力のみ使用(出力回路がない)できるので、出力ピンとして使えなかったです。
・ ・ ・ ・ ・
●配線図です。( Ver 3.0 )


・ ・ ・ ・ ・
●プログラムです。 → 12F675LED01.ASM
●感想・・・ このPIC(12F675)は、PIC16F84Aの半分サイズでピン数が8本になり これに合わせたプログラム修正が必要となりましたが、内蔵オシレータも使えて便利です 私が使用するのには、これで十分満足できます。 小型になり基板に搭載するのに都合良いので、LED電飾系に適したPICな感じです。
・ ・ ・ ・ ・
●12F683(12F675と同じ8ピン構成)も動かしてみる 12F675と同じ8ピン構成なのですが、プログラムメモリが2Kに拡張され、CCP 機能の追加など強化されているPIC(12F683)を動かしてみることにしました。 12F675用LED電飾プログラムを、そのままで使用しましたら、エラーが発生しま したので、このエラー分を取り除きました。また、PIC Programmerの実行時もエラーにな りましたので、PIC Programmerを最新版にバージョンUPしましたら、動作OKです。
■Windows7(32bit)のパソコンでMPLAB IDEを起動したら・・・  ロゴ画面が一瞬だけ表示されて、すぐに終了してしまう事象がありました。  これは、ユーザ名(ユーザ・アカウント)に2バイト文字(漢字など)を使用しているの  が原因らしいので、TMP変数の変数値を変更したら、MPLAB IDEを起動することができま  した。  (手順)   ・コントロール パネル→・システムとセキュリティ→・システム→   ・システムの詳細設定→・環境変数                ↓   ・変数のTMPをクリックして、ユーザー変数の編集画面で変数値を下記内容に修正し    てOKボタンを押す。    変数値:C:\WINDOWS\TEMP
■標準ヘッダ、定義ファイルの変更 LIST P=12F675  → P=12F683 INCLUDE P12F675.INC → P12F683.INC
■コンフィグレーションビット設定項目がエラーになったので削除しました。  (削除対象) CB &= _BODEN_OFF
■CMCOMレジスタ名がエラーになったので変更しました。 MOVWF CMCON → MOVWF CMCON0
■PIC Programmerを実行したらエラーになったので最新版にバージョンUPしました。  ・エラーメーセッジ    実行時エラー'6' オーバーフローしました。  (最新版)    PIC Programmer V4 6.72.9 AE-PGM877 V6.72
●プログラムです。 → 12F683LED01.ASM
●感想・・・ データメモリでのSFRの番地もPIC16F84AとPIC16F819の16Fシリ ーズと同じようですので、取り扱いやすい感じがします。
・ ・ ・ ・ ・



(  @PIC16F84A   APIC16F819   BPIC12F675  )