PIC講習/Lチカ

概要

今回は、PICを用いてLチカの回路を作ります。
プログラムを利用するので、PICの他にはLEDと抵抗しか使いません。
回路はブレッドボード上に組み立てます。

重要語

VDD

+電位

VSS

-電位

必要語

コンパイル

プログラムを機械語に翻訳すること

IPE

PICkitを操作するソフトウェア

PICkit

PICマイコンとPCを繋ぐ機器

プログラム/回路

以下はLチカのプログラムです。
メモ帳を開き、Lチカ.txtなどの名前を付けて保存してください。
その際、必ずUnicodeまたはUTF-16で保存してください。
Lチカ
  COL.STR.3       #どのバンクからでもアクセス可
    COL.CF.0      #クリアフラグ
    COL.ZF.2      #ゼロフラグ
  COL.TRISA.$0C   #バンク1
  COL.TRISB.$0D   #バンク1
  COL.OSCCON.$19  #バンク1、オシレータ設定
  COL.LATA.$0C    #バンク2
  COL.LATB.$0D    #バンク2
  COL.WAITA_0.$20 #自由に使えるメモリは$20から
  COL.WAITB_0.$21
  COL.WAITB_1.$22
  
  COL.PWC.$8007 #コンフィギュレーションビット
  WCF.$03.%100  #内蔵オシレータ
  COL.PWC.0     #戻す
  
  MBS.1         #バンク1に移動
  CLR.TRISB     #全ピン出力
  MOV.%01101000 #4MHzで内部発振
  MOV.OSCCON.F  #設定する
  MBS.0         #バンク0に戻る
    
  COL.START     #ループ開始
    MBS.2       #バンク2
    BCF.LATB.0  #RB0ピンに0を出力する
    MBS.0
    CAL.WAITA   #1秒待つ
    MBS.2
    BSF.LATB.0  #RB0ピンに1を出力する
    MBS.0
    CAL.WAITA   #1秒待つ
    GOT.START   #戻る(無限にループする)

  COL.WAITA          #1秒待つ関数
    MOV.100          #0.01秒を100回回す
    MOV.WAITA_0.F    #カウンタに代入
    COL.WAITA-LOOP   #ループ開始
      CAL.WAITB      #0.1秒待つ関数を呼ぶ
      DES.WAITA_0.F  #0ならスキップ
      GOT.WAITA-LOOP #戻る
    RET              #関数を抜ける

  COL.WAITB           #9998サイクルかかる
    MOV.38            #263サイクル*38回=9994サイクル
    MOV.WAITB_0.F     #上の命令、最後のRETと合わせて4サイクル
    COL.WAITB_L0      #1つめのループ(1周263サイクル)
      MOV.87          #3サイクル*87回=261サイクル
      MOV.WAITB_1.F   #上の命令と合わせて2サイクル
      COL.WAITB_L1    #2つめのループ(1周3サイクル)
        DES.WAITB_1.F #通常1、スキップ時2サイクル
        GOT.WAITB_L1  #戻る、2サイクル
        NOP           #スキップ時の誤差1サイクル
      DES.WAITB_0.F
      GOT.WAITB_L0    #戻る
    NOP               #誤差1サイクル
    RET               #関数を抜ける(2サイクル)


回路

マイコンの向きなどには注意してください。

コンパイル/プログラム書き込み

この作業は、今後何回も行うことになるので、覚えておいてください。

コンパイル

先ほどファイルを保存したフォルダに、KTPCPICASM.exeのショートカットを作ってください。
そして、ファイルをその上にドラッグ&ドロップしてください。
メッセージが表示されるので、解釈可能なプログラムだったかどうかを判断できます。
うまくいけば、出力完了と表示されます。
このとき、先ほどのファイルのフォルダに、拡張子が.hexのファイルができていると思います。
このファイルに、機械語が含まれています。

IPEの設定

IPEを起動してください。