goo blog サービス終了のお知らせ 

JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

今更、MPLAB アセンブラ #3(ソースリストの作成とbuild)

2023-05-09 21:31:21 | MPLAB アセンブラ
 Projectを作成したら、PICプログラムの本体であるソースリストを作成します。
 今回のPIC16F84Aの動作テストのための回路図です。
 クロックは、10MHzのレゾネータを使っています。
 RA0は10KΩでプルアップしています。RA0はSW OFFで1、ONで0です。
 出力は、RB1で電流制限抵抗330Ωを介してLEDに接続しています。



 RA0に接続されたSWを押したときにRB1に接続したLEDが点灯するというプログラムを作ることにします。

 アセンブラ・ソースリストを作るためにMPLAB IDEのメニューの左端の白紙のアイコンをクリックします。Untitledという新しいウンドウが開きます。
ここにアセンブラで記述したソースファイルを書き込みます。


 今回のプログラムです。これを書き込んで「名前を付けて保存」します。
 今回は、「PIC16F84A.asm」としました。拡張子は、「asm」とします。
*******************************************************************
;PIC16F84A_test

              LIST P=PIC16F84A
              INCLUDE           "P16F84A.INC"

              __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC

              ORG        0    
              BSF         STATUS,RP0       ;BANK1
              CLRF     TRISB                 ;PORTBは全て出力

              MOVLW              B'00001'
              MOVWF              TRISA                 ;RA0は入力、他は出力

              BCF         STATUS,RP0       ;BANK0

MAIN
              BTFSS   PORTA,0                           ;RA0=1なら次の命令をスキップ
              GOTO    LED_ON

LED_OFF
              MOVLW              B'00000000'
              MOVWF              PORTB
              GOTO    MAIN

LED_ON
              MOVLW              B'00000010'
              MOVWF              PORTB
              GOTO    MAIN

              END
**********************************************************************      

 ソースリストを見やすくするためとデバックしやすくするためにソースリストに行番号を入れます。方法は、メニューの「Edit」  の「Properties」を開き、「'ASM' File Types」タグを開き、Line Numbersにチェックを入れ、「OK」をクリックします。      
 

 この状態ではまだbuildできません。Projectの「Source Files」フォルダにasmソースリストを取り込みます。
 方法です。Projectウインドウで、「Source Files」にマウスカーソルを移動し、右クリックし、「Add Files」をクリックします。 開いたウインドウで使用するasmファイル(今回は、PIC16F84A.asm)をクリックし、「開く」をクリックします。



 これで、プロジェクトの中にソースファイルが取り込まれました。



 この状態で、build(アセンブラのソースリストをコンパイルし、PICが実行可能なHEXファイルを生成すること)が可能になります。
 上の図の赤丸印のアイコン「Make」をクリックするとコンパイルが始まります。「Absolute or Relocatable?」が表示されたら「Absolute」を選びます。


 エラーがなければ、Outputウインドウに「BUILD SUCSEEDED」と表示され、build成功です。エラーがだた場合は、ソースリスト修正し、再度Makeを押してbuildします。






今更、MPLAB アセンブラ #2(プロジェクトの作成)

2023-05-09 13:54:29 | MPLAB アセンブラ
 MPLAB IDEでプロジェクトを作成する手順です。

 まず、MPLABを立ち上げます。

 メニューの「Project」をクリックし、プルダウンメニューから「Project Wizard」をクリックします。


 WizardのStep OneでターゲットPICを設定します。今回は、PIC16F84Aを選び、「次へ」をクリックします。

 Step Twoで使用する言語を選びます。今回は内蔵のアセンブラを使いますので、「MPASM」を選び、「次へ」をクリックします。

 Step Threeで、Project名をつけます。「Browse」をクリックして、File名を付けて保存します。今回は、PIC16F84Aとしました。

 「次へ」をクリックし次に進みます。

 Step Fourのダイアログが開きます。ここは何もしないで、「次へ」をクリックします。



 Summaryが表示されますので、「完了」をクリックします。
 これで、Projectが生成されました。



今更、MPLAB アセンブラ #1(MPLABのインストール)

2023-05-09 12:24:49 | MPLAB アセンブラ
 MPLAB IDEは、2013年にバージョンアップが終わり、最終バージョンは8.92です。MICROCHIP社のサイトからはもうダウンロードできないようですが、air variableというサイトのこちらのページから現在でもダウンロードすることができます。

 インストール方法も丁寧に紹介されていますので、それに従ってインストールします。今回はアセンブラを使用し、Cコンパイラを使いませんので、MPLABのインストールが完了すれば、OKです。

 インストールが完了すれば、ディスクトップにMPLAB IDEのアイコンが表示されます。







 
 

今更、MPLAB アセンブラ #0

2023-05-07 21:55:46 | MPLAB アセンブラ
 2013年6月からPICの勉強を始め、間もなく10年になります。ノートは12冊目になりました。
 勉強を始めた当時は、MPLAB IDE とアセンブラの組み合わせで、ターゲットPICは典型的なレジェンドPICのPIC16F84Aでした。

 お金をかけないことと勉強のため、PICライタ(プログラマ)は自作しました。最初に作ったのが、FENG3のRCDライタとJDMライタです。製作記事は私のホームページのこちら

 これらのプログラマとMPLABを使って勉強を進め、2014年5月に「オレンジ電子工作」というサイトのWriter509というプログラマを製作しました。このプログラマの製作記事は、こちら。残念ながら、オレンジ電子工作というサイトは現在は確認できなくなりました。PICの勉強は、PIC16F88と進みました。

 このWriter509は快調に動作し、1年ほど使いましたが、PICの品種がだんだん新しくなってくると適合しなくなってきましたので、2015年6月にe電子工房のPICerFTというプログラマを製作しました。製作記事はこちら。このプログラマは優秀で、現在でも使用できます。またAVRマイコンのプログラミングも可能です。

 しばらくMPLAB+アセンブラでPICの勉強をしていたのですが、2018年10月からIDEをMPLAB Xにして、XC8コンパイラを使ってプログラミングを始めました。また、PICライタはPICKit3を購入し、IDEから直接プログラムをPCに書き込めるようになりました。

 ターゲットPICは、PIC16F1またはPIC12F1シリーズが中心になり、2021年5月からは、MCCを利用するようになりました。これによって細かい設定がほとんどMCCでできるようになり、プログラム本体は簡素化されるようになりました。つまり、PICの内部構造を知らなくともプログラミングができるようになりました。PICのブラックボックス化といってよいでしょう。

 最近、アマチュア無線の友人からPICのアセンブラ・ソースリストの解析の依頼を受けました。そこで、しばらくぶりにアセンブラで書かれたリストを見たので、昔のノートをひっくり返しながら解析しました。次に当該プログラムをMPLABでbuildできないが、原因が分からないという連絡を受けました。

 そこで、パソコンに改めてMPLABをインストールして試してみることにしました。しばらくぶりなので、PIC16F84Aを使ってLEDを点灯させるプログラムを試したのですが、うまくいきません。細かいところを忘れてしまいました。これもノートを見ながらなんとかbuildでき、ブレッドボードでPICの動作を確認することができました。

 久しぶりにMPLABとアセンブラを使ってみると、やはりPICプログラミングの基本はアセンブラだなと実感しました。ただ、最近のPICのように複雑になってくるとXC8コンパイラやMCCの利用も仕方がないと思います。

 備忘録を兼ねて、数回に分けてMPLABのインストールから簡単なプログラムの動作まで、このブログに書いておこうと思います。