JH7UBCブログ

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

MPLABアセンブラ PIC16F1827 EUSARTテストその2

2024-11-17 19:21:15 | MPLAB アセンブラ
 前の記事では、PIC16F1827のEUSARTの送信をテストしました。
 今回は、文字の受信テストとその文字でLEDを点灯、消灯してみます。

 回路図です。今回もICSPでテストしますが、5Vは、FT-234から供給します。この理由は後でトラブルシューティングで説明します。



 入出力設定、EUSARTの設定は、前の記事(PIC6F1827 EUSARTテストその1)と同じです。

 プログラムです。
 TeraTermから1文字受信し、文字が"1"なら"LED ON"と送信し、LEDを点灯します。文字が"0"なら"LED OFF"と送信し、LEDを消灯します。

---------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; PIC16F1827 EUSART TEST
; 2024.11.17
; JH7UBC Keiji Hata
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
              
              LIST      P=PIC16F1827
              INCLUDE           P16F1827.INC
              
              __CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
     __CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_19 & _LVP_OFF
              
              ERRORLEVEL    -302
              
              CBLOCK             020h
              TEMP
              ENDC

SETUP
;クロック設定
              BANKSEL           OSCCON
              MOVLW              b'01101000'         ;PLLなし、4MHz,Fosc
              MOVWF              OSCCON
;入出力設定
              BANKSEL           ANSELA
              CLRF     ANSELA                            ;AN0-AN4使用しない
              CLRF     ANSELB                            ;AN5-AN11使用しない
              BANKSEL           TRISA
              CLRF     TRISA                 ;PORTAは全て出力(RA5は入力)
              MOVLW              b'000000010'       ;RB1は入力、他は出力
              MOVWF              TRISB
;USART設定
;RX,TX PIN 設定
              BANKSEL           APFCON0
              BCF                     APFCON0,7        ;RXDSEL=0 RX=RB1
              BCF                     APFCON1,0        ;RXCKSEL=0 TX=RB2     
              BANKSEL           TXSTA
              MOVLW              b'00100100'
              MOVWF              TXSTA                ;非同期モード、高速通信モードBRGH=1
;             BANKSEL           RCSTA
              MOVLW              090h
              MOVWF              RCSTA                ;受信可、非同期モード
;             BANKSEL           BAUDCON
              BCF                     BAUDCON,3      ;BRG16=0 BRG 8bit
              MOVLW              019h                    ;019h=25
              MOVWF              SPBRGL                            ;Fosc=4MHz,Baud Rate=9600bps

;PORTA,PORTBクリア
              BANKSEL           LATA
              CLRF     LATA
              CLRF     LATB

MAIN
              CALL     GETCHR
              MOVWF              TEMP                  ;受信した文字をTEMPに格納
              XORLW 031h
              BTFSS   STATUS,Z           ;受信した文字が"1"ならスキップ
              GOTO   NEXT    
              CALL     MSG1
              CALL     LED_ON
              GOTO   MAIN
NEXT
              MOVFW              TEMP
              XORLW 030h
              BTFSS   STATUS,Z           ;受信した文字が"0"ならスキップ
              GOTO   MAIN
              CALL     MSG2
              CALL     LED_OFF
              GOTO   MAIN
              
LED_ON
              BANKSEL           LATA
              BSF                      LATA,1
              RETURN
              
LED_OFF
              BANKSEL LATA
              BCF                     LATA,1
              RETURN

;1文字送信          
SENDCHR
              BANKSEL           TXSTA
              BTFSS   TXSTA,TRMT     ;送信可能かチェック(1:可 0:禁止)
              GOTO   $-1
              MOVWF              TXREG
              RETURN
              
;1文字受信
GETCHR
              BANKSEL           PIR1
              BTFSS   PIR1,RCIF           ;RCIF=1ならスキップ
              GOTO   $-1
              BANKSEL           RCREG
              MOVFW              RCREG
              RETURN

MSG1
              MOVLW              "L"
              CALL     SENDCHR
              MOVLW              "E"
              CALL     SENDCHR
              MOVLW              "D"
              CALL     SENDCHR
              MOVLW              " "
              CALL     SENDCHR
              MOVLW              "O"
              CALL     SENDCHR
              MOVLW              "N"
              CALL     SENDCHR
              MOVLW              0Dh
              CALL     SENDCHR
              MOVLW              0Ah
              CALL     SENDCHR
              RETURN
              
MSG2
              MOVLW              "L"
              CALL     SENDCHR
              MOVLW              "E"
              CALL     SENDCHR
              MOVLW              "D"
              CALL     SENDCHR
              MOVLW              " "
              CALL     SENDCHR
              MOVLW              "O"
              CALL     SENDCHR
              MOVLW              "F"
              CALL     SENDCHR
              MOVLW              "F"
              CALL     SENDCHR
              MOVLW              0Dh
              CALL     SENDCHR
              MOVLW              0Ah
              CALL     SENDCHR
              RETURN

              END
--------------------------------------------------- 

 ブレッドボードです。


TeraTermの画面です。

 トラブルシューティング
 最初、Vdd(5V)をPICKit3から供給していたのですが、TeraTermがFT-234のあるCOMポートを認識しなくなるトラブルがありました。そこで、PICKit3からの電源供給をやめ、VddをFT-234モジュールから供給するようにしたら問題が解決しました。

最新の画像もっと見る

コメントを投稿