🗐 電装工芸日記 - 舞台照明機器の製作とか -

今年は開発案件を進めたい

or 管理画面へ

No.885

Icon of admin
 今更ですが、PIC の開発環境を MPLAB-X に完全移行しています。このところ PIC のソースコードを書いていなかったので取り急ぎの必要がなかったのですが、DMX のスプリッターを増産することになったのでこの際といったところです。
 問題点はアセンブラが MPASM から XC8 になったためソースコードの記述が違うことです。
 以前にも少し書いたのですが、整理したので改めて揚げてみます。

1)ラベル文字の最後に ' : ' をつける
例:
--- MPASM ---
LOOP
 NOP
 GOTO LOOP
--- xc8_asm ---
LOOP:
 NOP
 GOTO LOOP

2)0x以外の数値識別子が異なる
例:
--- MPASM ---
2進数  B'01001111'
8進数  O'72'
10進数 D'34' または .34
16進数 H'4F' または 0x4F
--- xc8_asm ---
2進数  01001111B
8進数  72Q
10進数 34
16進数 04FH または 0x4F

3)cblock は使えないので equ を使用する

4)org の代わりに、psect を使用する
 コードの開始アドレスを指示するのだが、二か所に記述する。これまで ORG を書いた本文の位置と Linker に記述。
例1:
 インデックスの名前を Code_Start としアドレスを 0x0000 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Code_Start,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pStart_Code=0h

例2:
 インデックスの名前を Int_Vec としアドレスを 0x0004 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Int_Vec,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pInt_Vec=4h

例3:
 インデックスの名前を Tables としアドレスを 0x0400 とする場合。
(1) 開始アドレスを与えたいコードの直上に次を記述する。ORG の代わりに用いるものである。
PSECT Tables,class=CODE,delta=2
(2) <project properties ダイアログ> <pic-as Linker> <Custom linker options> に以下を記述する。
-pTables=400h

5)コンフィグ指定は、xc8 の形式とする
MPLABX のメニュー [Production] [Set Configuration Bits] を用いると各項目の設定から以下のようなコードの生成まで出来るので本文の冒頭にコピペする。
例:
; CONFIG1
 CONFIG FOSC = EXTRCCLK    ; Oscillator Selection bits (EXTRC oscillator; CLKO function on RA6/OSC2/CLKO)
 CONFIG WDTE = ON       ; Watchdog Timer Enable bit (WDT enabled)
 CONFIG PWRTE = OFF      ; Power-up Timer Enable bit (PWRT disabled)
 CONFIG MCLRE = ON      ; RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
 CONFIG BOREN = ON      ; Brown-out Reset Enable bit (BOR enabled)
 CONFIG LVP = ON       ; Low-Voltage Programming Enable bit (RB3/PGM pin has PGM function, Low-Voltage Programming enabled)
 CONFIG CPD = OFF       ; Data EE Memory Code Protection bit (Code protection off)
 CONFIG WRT = OFF       ; Flash Program Memory Write Enable bits (Write protection off)
 CONFIG CCPMX = RB0      ; CCP1 Pin Selection bit (CCP1 function on RB0)
 CONFIG CP = OFF       ; Flash Program Memory Code Protection bit (Code protection off)
; CONFIG2
 CONFIG FCMEN = ON      ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor enabled)
 CONFIG IESO = ON       ; Internal External Switchover bit (Internal External Switchover mode enabled)

6)オペランドでの SFR の表記に注意する
 詳細が長すぎるのでここでは割愛


追記
 不思議な現象が発生。
 MPLABXv5.5ではアセンプルが通るのにv6.2ではエラーが出て通らないプロジェクトがある。アセンブラはどちらも同じバージョンのXC8。
 エラーメッセージを見ると書いたソースコードではなく内部的なツールにエラーが起きているとある。
 さて、とこから詰めていきましょうか。

#PIC

■思ってみた

春ですねぇ~。
花粉症の部下は死にそうですが、暖かいってのはいいことです。

編集

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2024年6月
1
2345678
9101112131415
16171819202122
23242526272829
30

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年4月29日(火) 20時16分48秒