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
前へ
次へ
ホームページトップへ戻る