--------------------------------------------------------------------- // シミュレータ機能のテスト3(USART入出力) #include <xc.h> #include "skUARTlib.h" // コンフィギュレーション1の設定 #pragma config FOSC = INTOSC // 内部クロック使用する(INTOSC) #pragma config WDTE = OFF // ウオッチドッグタイマー無し(OFF) #pragma config PWRTE = ON // 電源ONから64ms後にプログラムを開始する(ON) #pragma config MCLRE = OFF // 外部リセット信号は使用せずにデジタル入力(RA3)ピンとする(OFF) #pragma config CP = OFF // プログラムメモリーを保護しない(OFF) #pragma config CPD = OFF // データメモリーを保護しない(OFF) #pragma config BOREN = ON // 電源電圧降下常時監視機能ON(ON) #pragma config CLKOUTEN = OFF // CLKOUTピンをRA4ピンで使用する(OFF) #pragma config IESO = OFF // 外部・内部クロックの切替えでの起動はなし(OFF) #pragma config FCMEN = OFF // 外部クロック監視しない(OFF) // コンフィギュレーション2の設定 #pragma config WRT = OFF // Flashメモリーを保護しない(OFF) #pragma config PLLEN = OFF // 動作クロックを32MHzでは動作させない(OFF) #pragma config STVREN = ON // スタックがオーバフローやアンダーフローしたらリセットをする(ON) #pragma config BORV = HI // 電源電圧降下常時監視電圧(2.5V)設定(HI) #pragma config LVP = OFF // 低電圧プログラミング機能使用しない(OFF) // 割り込み処理(受信しないならこの関数は不要) void interrupt InterFunction( void ) { InterUART() ; // USART関連の割り込み処理 } // メインの処理 void main() { char dt[4] ; OSCCON = 0b01110010 ; // 内部クロックは8MHzとする ANSELA = 0b00000000 ; // アナログは使用しない(すべてデジタルI/Oに割当てる) TRISA = 0b00100000 ; // 2(RX:RA5)番ピンは入力、その他は出力に割当てる(RA3は入力専用) PORTA = 0b00000000 ; // 出力ピンの初期化(全てLOWにする) InitUART(2,3,51) ; // USARTの初期化(RX=2 TX=3 9600bps) dt[0] = 0 ; while(1) { if (UART_Available() != 0) { // データを受信しているか調べる dt[0] = UART_Read() ; // 1バイトデータを受信する UART_Send(dt,1) ; // 1バイトデータを送信する } } } ---------------------------------------------------------------------このプログラムにはUSART通信の為の「skUARTlib.c」「skUARTlib.h」が必要ですが、
「Categories:」のパネル内で"Simulator"を選択します。
右のパネルの「Option categories:」で"Uart1 IO Options"を選択します。
「Enable Uart1 IO」 □ にチェックを入れて、「Output」の項目を"Window"にします。
設定をしたら[OK]ボタンをクリックします。
メモ帳等で下記の様に書き込みます、"0D 0A"は16進数で"CR LF"の改行です。 (----線は書かない文字のみ、念の為) --------------------------------------------------------------------- wait 0 ms "12F1822" 0D 0A "USART" 0D 0A wait 3 sec --------------------------------------------------------------------- 作成したらプロジェクトフォルダに保存します、ここでは"uart.txt"としました。 繰り返す場合は3秒後に繰り返しますが、時間は正確でないです。 "HELP"に1行辺り260文字を超えない様にとか書いて有るような気がします。
上画面の様に設定したら[Generate SCL file]ボタンをクリックし名前を付けて保存します。
Label | 英字からはじまる英数字で任意にラベル名を設定します。 |
Reg/Var | 空欄をクリックするとメニューが表示されます、レジスター(RCREG)を選択します。 |
Trigger | USARTをシミュレートする時は、"Message"にします。 "RCREG"が読み込まれる時ににデータファイルから順番にセットされます。 |
PC Value | プログラムの行番号か関数名を入力します。(但し、"Trigger"が"PC= "の時) |
Width | "PC= "の時使用するみたいだが使い方不明? |
Data Filename | クリックすると[開く]ウインドウが表示されるので、Aのデータファイル名を指定します。 |
Wap | Yes:データファイルを最後まで読出すと、最初から繰り返してデータをセット。 No :繰り返さないで最後のデータを使い続けます。 |
Format | ここの型式に応じてデータファイルの数値を書きます。 Pkt:Hex or Raw packet format (used with UART receive register) |
Comments | 適当に説明用のコメントを入力する、しなくてもOK |
--------------------------------------------------------------------- // // C:\Users\user\Documents\Electrical circuit\PIC\12F1822\test.X\USART.scl // Generated by Stimulus MPLAB X // Wed Jul 16 17:32:36 JST 2014 // configuration for "pic12f1822" is // shared variable RCREG; ← この行をコメントにする。 end configuration; testbench for "pic12f1822" is begin // Register Injection (message-based) process is file data_file_RCREG : text; variable pkt_line_RCREG : line; variable status_RCREG : file_open_status; ・ ・ ・ --------------------------------------------------------------------- 上記の場所(9行目辺り)をコメントにしたら上書き保存します。 ダウンロードファイルに"USART.scl"が有るのでそれを利用しても良いでしょう。
この様に"12F1822"と"USART"の文字が数秒毎に繰り返されて表示されます。
"RCIE"のビットで"USART割込み受信を有効"にした場合もちゃんと割り込みが発生します。
"MPLAB X V3.50"での注意事項の追記(*1) 2016/12/28
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2016 Shigehiro Kimura All Rights Reserved.