超ローコストPICWRITERの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「PICBASICコンパイラ」からスピンオフ!!
過去記事を参照することなどを考えて該当する過去記事は「PICBASICコンパイラ」のまま連載回もそのままとします。
以後は前回記事からの流れで[第236回]からとします。
「PICBASICコンパイラ」はなるべく早く連載を再開したいと考えています。
PICはローコスト、高機能で種類も豊富なお手軽マイコンですがプログラムを書き込むためのWRITERが必要です。
それをできるだけ安価に作ってしまおうというプロジェクトです。
最終的には製品化を考えています(組立キット、完成品)。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第284回]
●PIC16F54(2)テストプログラム
いつものように簡単なテストプログラムを作りました。
以前PIC16F716用に作ったものをもとに作成しました([第270回])。
;;;pic16f54test from pic16f716test ;25/5/12 ; #include <p16f5x.inc> __CONFIG _WDT_OFF & _RC_OSC ; ; w=0 f=1 c=0 z=2 ; cntr0=10 cntr1=11 cntr2=12 ; org 0 ; movlw 0 tris PORTA tris PORTB ; testloop movf cntr2,w movwf PORTA testloop2 call t1 movf cntr1,w movwf PORTB decfsz cntr1 goto testloop2 decf cntr2 goto testloop ; t1 nop;1 decfsz cntr0;1 goto t1;2 return ; end ; |
PIC16F716と同じで内蔵クロック発振モードはありませんがその代わりにクロック端子に抵抗とコンデンサを接続することでRC発振をCPUクロックにすることができます。
[出典]Microchip Technology Inc.PIC16F5x DataSheet
PIC16F716のところでも書きましたが([第270回])RC発振の場合抵抗とコンデンサの組み合わせによる発振周波数についての具体的な数値は記載されていません。
発振周波数は供給電圧、抵抗値とコンデンサの容量、それと温度によって決まるとだけ書かれています。
[出典]Microchip Technology Inc.PIC16F5x DataSheet
これもPIC16F716のときと同じでPIC16F84を使ったLCD表示回路基板をテストに利用しました。
下はLCDIFの回路図です。
RC発振をクロックとして使う場合にはCONFIGで_RC_OSCを指定します。
さて。
前回の終わりに書きましたが普通PICではI/Oポートの入出力の向きを指定するにはTRISレジスタを使います。
TRISレジスタは大抵はPORTレジスタのバンク違いの同じアドレスにあります。
ところが前回書きましたようにPIC16F54にはレジスタバンクが1つしかなくて見たところTRISレジスタはありません。
じゃあどうやって入出力の設定をするのだろうと思ってDataSheetを読んで見ましたら、なんとtrisなんて見た事もない命令を使うのだそうです。
普通はTRISレジスタのあるバンクに切り換えて
movlw xx
movwf TRISA
とするところをPIC16F54では
movlw xx
tris PORTA
のように書きます。
一体それがどのようにマシンコードに置き換わるのかと思ってアセンブルリストを確認してみました。
0000 00017 org 0 00018 ; 0000 0C00 00019 movlw 0 0001 0005 00020 tris PORTA 0002 0006 00021 tris PORTB 00022 ; 0003 00023 testloop 0003 0212 00024 movf cntr2,w 0004 0025 00025 movwf PORTA 0005 00026 testloop2 0005 090C 00027 call t1 0006 0211 00028 movf cntr1,w 0007 0026 00029 movwf PORTB |
あれ?
PORTA、PORTBはそれぞれアドレス05、06のはずなのですがmovf PORTA、movf PORTBでは25、26になっていますね。
そしてtris命令を使うところではアドレス05、06になっています。
やっぱり別バンクがあるようです。
さすがはMicrochip様。
勝手放第といいますか融通無碍と申しましょうか。
バンク切り換えをするためにはPIC16F627などではSTATUSレジスタの一部のビットを使ってバンクを指定します。
するとそのための仕組みが必要になります。
そこを上のようにすればアセンブラをちょいとひねるだけでソフト的にやってしまうことができます。
なるほど。
納得いたしました。
余計なことを書いていましたら時間がなくなってしまいました。
続きは次回にいたします。
超ローコストPICWRITERの製作[第284回]
2025.5.17 upload
前へ
次へ
ホームページトップへ戻る