コールサイン等のデータを削除してあるので、このままでは動作しません。良く見て変更してください
もっと賢い方法はあると思います。
電源投入時に3秒くらいウエイト状態にして、その間にPS/2キーボードが勝手に初期プロトコルやれば~的な
あと、自分が送出しているときは、他のPICは、黙らせています。
あとちこちタイマで逃げてます。またデバッグ中に試にタイマを入れているのがそのままです。(動作するからいいやってことで)
お約束:参考にすれば~! 結果の責任は、僕にないからね~!
今回は、長いぞーーーーーーーーーーー!
ということで分割 その2です
追記 キーを離したときの動作で F0、キーコード を送出してますが、F0を別に作ってます。(元のを転用したから)、1文字送出のサブルーチンでF0を送出した方が、多少なりとも見栄えがよくなったかも アセンブラを読みこなせばわかるかも
;******************************************************
;*****************************************************
;裏キーボードの表配列
;スペース先頭なら CALL TX_SP CALL M001_TX CALL M002_TX
;一文字送出なら CALL M001_TX
;文字列だけなら CALL M001_TX CALL M002_TX
;長文なら CALL M001_TX CALL M002_TX CALL M001_TX CALL M002_TX
;*****************************************************
;スタート キーマトリックススキャン
START
MOVLW B'11101001'
MOVWF PORTB
START_CHK
; BSF PORTB,3
BTFSC PORTA,4 ;裏キー配列 BTFSC にする 表はBTFSSにする
GOTO START
BTFSC PORTB,4
GOTO START_1 ;基本のPICが書出中?
MOVLW B'10101001'
MOVWF PORTB
CALL TIM100M
CALL TIM100M
GOTO START_CHK
START_1
MOVLW B'11101001'
MOVWF PORTB
CALL TIM99
MOVLW B'11101000'
MOVWF PORTB
;*********************************************************
;マトリックスキー検出 シフトが使えないぞぉ!
;0列目 キー表示1,4,7,0
CALL TIM99
BTFSS PORTA,0
GOTO K01 ;1キー
CALL TIM99
BTFSS PORTA,1
GOTO K02 ;4キー
CALL TIM99
BTFSS PORTA,2
GOTO K03 ;7キー
CALL TIM99
BTFSS PORTA,3
GOTO K04 ;0キー
CALL TIM99
CALL TIM99
MOVLW B'11101001'
MOVWF PORTB
CALL TIM99
;1列目 キー表示2,5,8,F
MOVLW B'11001001'
MOVWF PORTB
CALL TIM99
BTFSS PORTA,0
GOTO K11 ;2キー
BTFSS PORTA,1
GOTO K12 ;5キー
BTFSS PORTA,2
GOTO K13 ;8キー
BTFSS PORTA,3
GOTO GOODSTART ;Fキー 読込開始のSW
MOVLW B'11101001'
MOVWF PORTB
CALL TIM99
;2列目 キー表示3,6,9,E
MOVLW B'10101001'
MOVWF PORTB
CALL TIM99
BTFSS PORTA,0
GOTO K21 ;3キー
BTFSS PORTA,1
GOTO K22 ;6キー
BTFSS PORTA,2
GOTO K23 ;9キー
BTFSS PORTA,3
GOTO GOODSTART ;Eキー 書出開始のSW
MOVLW B'11101001'
MOVWF PORTB
CALL TIM99
;4列目 キー表示 A,B,C,D
MOVLW B'01101001'
MOVWF PORTB
CALL TIM99
BTFSS PORTA,0
GOTO K31 ;Aキー
BTFSS PORTA,1
GOTO K32 ;Bキー
BTFSS PORTA,2
GOTO K33 ;Cキー
BTFSS PORTA,3
GOTO F12OUT ;Dキー F12キー
GOTO START
;**********************************************
;**********************************************
;F12
F12OUT ;Dキー
BCF PORTB,3
CALL TIM99
MOVLW H'DA'
MOVWF MMA
CALL MMTX2
CALL TIM99
MOVLW H'07'
MOVWF MMA
CALL MMTX2
; RETURN
GOTO START
;*****************************
;読込書出開始
GOODSTART ;Eキー、Fキー
CALL TIM100M
CALL TIM100M
GOTO START
;******************************
;********************************************************************************
;::*****************************************************************************
;裏キーデータ
;****************************
;キーボードの表配列
;スペース先頭なら CALL TX_SP CALL M001_TX CALL M002_TX
;一文字送出なら CALL M001_TX
;文字列だけなら CALL M001_TX CALL M002_TX
;長文なら CALL M001_TX CALL M002_TX CALL M001_TX CALL M002_TX
;********************************************
;QRL QRL QRL DE J K
K01 ;1キー
BCF PORTB,3
CALL TIM99
CALL QRL
CALL M001_TX
CALL M002_TX
GOTO START
;******************************
;DE J UR RST599 599 QSL VIR BURO JARL QRA QTH -CITY TOKYO JCC
;RST_QRA_RIG
K02 ;4キー
BCF PORTB,3
CALL TIM99
CALL TX_SP
CALL RST_QRA_RIG
CALL M001_TX
CALL M002_TX
CALL TIM99
CALL TIM99
CALL RST_QRA_RIG_3
CALL M001_TX
CALL M002_TX
GOTO START
;**********************************
;***************************************************
;おはようございます
;MORNING
K03 ;7キー
BCF PORTB,3
CALL TIM99
CALL TX_SP
CALL MORNING
CALL M001_TX
CALL M002_TX
GOTO START
;**********************************
;CQ CQ CQ DE J J J QTH -CTY TOKYO JCC- PSE K
;CQCQ_QTH
K04 ;0キー
BCF PORTB,3
CALL TIM99
CALL CQCQ_QTH
CALL M001_TX
CALL M002_TX
GOTO START
;**********************************************
;*************************************************
;;UR RST599 599 QSL*
K11 ;2キー
BCF PORTB,3
CALL TIM99
CALL TX_SP
CALL UR599
CALL M001_TX
CALL M002_TX
CALL TIM99
GOTO START
;*************************************************
K12 ;5キー
; BCF PORTB,3
; CALL TIM99
; CALL TX_SP
; CALL EVNEING
; CALL M001_TX
; CALL M002_TX
GOTO START
;*************************************************
;こんにちは 昼間
;AFTERNOON
K13 ;8キー
BCF PORTB,3
CALL TIM99
CALL TX_SP
CALL AFTERNOON
CALL M001_TX
CALL M002_TX
GOTO START
;************************************************
;QTH -CTY TOKYO JCC- PSE K
;QTH
K21 ;3キー
BCF PORTB,3
CALL TIM99
CALL TX_SP
CALL QTH
CALL M001_TX
CALL M002_TX
GOTO START
;************************************************
;************************************************
K22 ;6キー
BCF PORTB,3
CALL TIM99
; CALL TX_SP
; CALL
; CALL M001_TX
; CALL M002_TX
GOTO START
;************************************************
;こんばんわ 夜間
K23 ;9キー
BCF PORTB,3
CALL TIM99
CALL TX_SP
CALL EVNEING
CALL OM_599
CALL M001_TX
CALL M002_TX
GOTO START
;************************************
;****************************************
;ありがとうございました
;arigatou
K31 ;Aキー
BCF PORTB,3
CALL TIM99
CALL TX_SP
CALL arigatou
CALL M001_TX
CALL M002_TX
GOTO START
;****************************************
K32 ;Bキー
BCF PORTB,3
CALL TIM99
; CALL
; CALL M001_TX
; CALL M002_TX
GOTO START
;****************************************
K33 ;Cキー
BCF PORTB,3
CALL TIM99
; CALL
; CALL M001_TX
; CALL M002_TX
GOTO START
;****************************************
;***********************************
;************************************************
;DE J K ;表裏共通
MOVLW H'23' ;D
MOVWF M001
MOVLW H'A4' ;E
MOVWF M002
MOVLW H'29' ;sp
MOVWF M003
MOVLW H'3B' ;J
MOVWF M004
MOVLW H'
MOVWF M005
MOVLW H'
MOVWF M006
MOVLW H'
MOVWF M007
MOVLW H'
MOVWF M008
MOVLW H'
MOVWF M009
MOVLW H'29' ;sp
MOVWF M010
;次はM011から
MOVLW H'CD' ;P
MOVWF M011
MOVLW H'9B' ;S
MOVWF M012
MOVLW H'A4' ;E
MOVWF M013
MOVLW H'29' ;sp
MOVWF M014
MOVLW H'C2' ;K
MOVWF M015
MOVLW D'05' ;END
MOVWF MM0
RETURN
;************************************************************************
;DE J UR RST599 599 QSL VIR BURO JARL QRA QTH -CITY TOKYO JCC
RST_QRA_RIG
;4キー
CALL RST599_2 ;次M026から
RST_QRA_RIG_2
MOVLW H'15' ;Q
MOVWF M026
MOVLW H'9B' ;S
MOVWF M027
MOVLW H'CB' ;L
MOVWF M028
MOVLW H'29' ;sp
MOVWF M029
MOVLW H'2A' ;V
MOVWF M030
MOVLW H'43' ;I
MOVWF M031
MOVLW H'AD' ;R
MOVWF M032
MOVLW H'29' ;sp
MOVWF M033
MOVLW H'3B' ;J
MOVWF M034
MOVLW H'1C' ;A
MOVWF M035
MOVLW H'AD' ;R
MOVWF M036
MOVLW H'CB' ;L
MOVWF M037
MOVLW H'29' ;sp
MOVWF M038
MOVLW H'15' ;Q
MOVWF M039
MOVLW H'AD' ;R
MOVWF M040
MOVLW H'1C' ;A
MOVWF M041
MOVLW H'29' ;sp
MOVWF M042
MOVLW H'
MOVWF M043
MOVLW H'
MOVWF M044
MOVLW H'
MOVWF M045
MOVLW H'
MOVWF M046
MOVLW H'
MOVWF M047
MOVLW H'29' ;sp
MOVWF M048
MOVLW H'15' ;Q
MOVWF M049
MOVLW H'2C' ;T
MOVWF M050
MOVLW H'B3' ;H
MOVWF M051
MOVLW H'29' ;sp
MOVWF M052
MOVLW H'
MOVWF M053
MOVLW H'
MOVWF M054
MOVLW H'
MOVWF M055
MOVLW H'CE' ;-
MOVWF M056
MOVLW H'A1' ;C
MOVWF M057
MOVLW H'43' ;i
MOVWF M058
MOVLW H'2C' ;T
MOVWF M059
MOVLW H'B5' ;Y
MOVWF M060
MOVLW H'29' ;sp
MOVWF M061
MOVLW H'2C' ;T
MOVWF M062
MOVLW H'C4' ;O
MOVWF M063
MOVLW H'C2' ;K
MOVWF M064
MOVLW H'B5' ;Y
MOVWF M065
MOVLW H'C4' ;O
MOVWF M066
MOVLW H'29' ;sp
MOVWF M067
MOVLW H'3B' ;J
MOVWF M068
MOVLW H'A1' ;C
MOVWF M069
MOVLW H'A1' ;C
MOVWF M070
MOVLW H'
MOVWF M071
MOVLW H'
MOVWF M072
MOVLW H'
MOVWF M073
MOVLW H'
MOVWF M074
MOVLW D'63' ;END ここがミソです
MOVWF MM0
RETURN
あとは、同様です(たぶん)考えて下さい
END