蓄光テープに文字を描くライントレーサですが,
- LANのためのシリアル送受信
- モータ2個のPWM処理
- ライントレース処理
今回は,
LANのためのシリアル送受信
まず重要な点ですが,
リスト1 シリアル送受信処理
waitrx1
movlw 0x55 ; (87clk - 2)
subwf TMR0, 1
waitrx0
btfsc TMR0, 7
goto waitrx0
movf rxphase, 0
addwf rxphase, 0
incf rxphase, 1
addwf PCL, 1
; 0:start
btfsc PORTA, PORTA_RX
clrf rxphase
retlw 0
nop
retlw 0
nop
; 3:bit0
clrf rxwork
retlw 0
btfsc PORTA, PORTA_RX
bsf rxwork, 0
retlw 0
nop
; 6:bit1
retlw 0
nop
btfsc PORTA, PORTA_RX
bsf rxwork, 1
retlw 0
nop
; 9:bit2
retlw 0
nop
btfsc PORTA, PORTA_RX
bsf rxwork, 2
retlw 0
nop
; 12:bit3
retlw 0
nop
btfsc PORTA, PORTA_RX
bsf rxwork, 3
retlw 0
nop
; 15:bit4
retlw 0
nop
btfsc PORTA, PORTA_RX
bsf rxwork, 4
retlw 0
nop
; 18:bit5
retlw 0
nop
btfsc PORTA, PORTA_RX
bsf rxwork, 5
retlw 0
nop
; 21:bit6
retlw 0
nop
btfsc PORTA, PORTA_RX
bsf rxwork, 6
retlw 0
nop
; 24:bit7
retlw 0
nop
btfsc PORTA, PORTA_RX
bsf rxwork, 7
retlw 0
nop
; 27:stop
movf rxwork, 0
movwf rxdata
clrf rxphase
retlw 0
ソフトウェアで処理する場合,
ここで注意しないといけないのが,