PICBASICコンパイラ
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第183回]
●PIC18F45K20(3)45K20用のプログラムを作成
前回はPIC18F45K50用に作ったプログラムをそのままPIC18F45K20に書き込んでしまうという乱暴なことをやったのですがそれでも動作したことに気を良くして今回はそのプログラムをPIC18F45K20用に書き直してそれでPIC18F45K20を動かしてみることにしました。
下がそのようにして作成したPIC18F45K20のアセンブラソースプログラムです。
;;;pic p18f45k20 test ;from 45k50test.asm ;24/12/17 ; #include<p18f45k20.inc> ;cpuclock=48MHz HSPLL_CRYSTAL=12MHz ; CONFIG FOSC=HSPLL,PBADEN=OFF ; w=0 f=1 c=0 z=2 ; cntr0=0c cntr2=0d testcntr=3c testcntr2=3d ; org 00 goto start ; org 18 start clrf TRISB clrf TRISC clrf TRISD testloop movf testcntr,w movwf PORTB movwf PORTC movwf PORTD testloop2 call t1ms decfsz testcntr2 goto testloop2 decf testcntr goto testloop ; ;1msec timer t1ms movlw 0a;=10 movwf cntr2 t1ms2 call tm100micros decfsz cntr2 goto t1ms2 return ; tm100micros movlw 0f0;=240 movwf cntr0 tm100micros2 nop nop decfsz cntr0 goto tm100micros2 return ; tm15micros movlw 24;=36 movwf cntr0 goto tm100micros2 ; end ; |
もとのPIC18F45K50用プログラムでは余計なことを書いていたのでそこを省いてすっきりさせましたが、最も肝心なところはCONFIGの記述の変更です。
PIC18F45K50用のソースプログラムリストは[第175回]にあります。
PICのアセンブラプログラムで一番厄介なのがこのCONFIGの記述です。
はっきり言ってクセが悪い。
何とかならないものかと思います。
PICによって全く記述のルールが異なっていたりします。
しかも困ったことにそれが個々のDataSheetには全く記載されていません。
どこにあるかというとMplabをダウンロードしたときに一緒にダウンロードされるMPASM Suiteフォルダの中にあります。
そこにずらりとincファイルがあって、たとえばP18F45K20.incを見るとそこに書いてあります。
しかしそれを見ただけではよくわかりません。
慣れてくるとだんだんわかってきます。
今回記述した
CONFIG FOSC=HSPLL,PBADEN=OFF
はP18F45K20.incの終わり近くのところにあります。
下の部分です。
; Oscillator Selection bits: ; FOSC = LP LP oscillator ; FOSC = XT XT oscillator ; FOSC = HS HS oscillator ; FOSC = RC External RC oscillator, CLKOUT function on RA6 ; FOSC = EC EC oscillator, CLKOUT function on RA6 ; FOSC = ECIO6 EC oscillator, port function on RA6 ; FOSC = HSPLL HS oscillator, PLL enabled (Clock Frequency = 4 x FOSC1) ; FOSC = RCIO6 External RC oscillator, port function on RA6 ; FOSC = INTIO67 Internal oscillator block, port function on RA6 and RA7 ; FOSC = INTIO7 Internal oscillator block, CLKOUT function on RA6, port function on RA7 ; ; PORTB A/D Enable bit: ; PBADEN = OFF PORTB<4:0> pins are configured as digital I/O on Reset ; PBADEN = ON PORTB<4:0> pins are configured as analog input channels on Reset |
なんだかなあと思ってしまいます。
こういうところがPICのアセンブラがわかりにくいと言われる要因のひとつかと。
ま。
それはともかくとしまして、作成したソースプログラムをMPLABに読み込んでProject→Quickbuildとやってエラーが表示されることなく終れば無事HEXファイルが作成されています。
下が作成されたHEXファイルです。
:020000040000FA :040000000CEF00F011 :08001800936A946A956A3C505A :10002000816E826E836E1BEC00F03D2E13EF00F0AC :100030003C060FEF00F00A0E0D6E23EC00F00D2EC3 :100040001DEF00F01200F00E0C6E000000000C2EF0 :0E00500025EF00F01200240E0C6E25EF00F0DC :020000040030CA :03000100061F1FB8 :020005008985EB :060008000FC00FE00F40E5 :00000001FF |
これで準備は整いましたので後はこのHEXファイルをPIC18F45K20に書き込めばよいのですけれど。
その前にもうひとつやっておきたいことがありました。
次回に続きます。
PICBASICコンパイラ[第183回]
2024.12.18 upload
前へ
次へ
ホームページトップへ戻る