2024.12.18
前へ
次へ
ホームページトップへ戻る


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

前へ
次へ
ホームページトップへ戻る