男うちごはん

エイ!っいと適当に作る料理の紹介
男うちごはん のつもりが状況変化!
食育になりそうな事項のup

キーボード送出データ 回路図その3のアセンブラその2

2018年06月21日 08時34分41秒 | PIC16F88

コールサイン等のデータを削除してあるので、このままでは動作しません。良く見て変更してください

もっと賢い方法はあると思います。

電源投入時に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

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

キーボード送出データ 回路図その3のアセンブラその1

2018年06月21日 08時24分15秒 | PIC16F88

これで、IC-7851単体(単体か?)でRTTY(PSK)通信が楽に出来ます

無駄にタイマが入っているとこがあります。動作しているので削除する気がない!

MM0が文字数を管理してます。MM0=0で送出文字数が無しになるようにしてます

メモリ数を少しでも小さくする工夫はしています。

コールサイン等のデータを削除してあるので、このままでは動作しません。良く見て変更してください

もっと賢い方法はあると思います。

電源投入時に3秒くらいウエイト状態にして、その間にPS/2キーボードが勝手に初期プロトコルやれば~的な

あと、自分が送出しているときは、他のPICは、黙らせています。

あとちこちタイマで逃げてます

お約束:参考にすれば~! 結果の責任は、僕にないからね~!

 

今回は、長いぞーーーーーーーーーーー!

 ということで分割 その1です

;長文の方 裏データ もとい 2個目のPIC16F88
;PS2 定型文の送出だぁ めざせIC-7851接続
;あるPS2ケーブル 茶:5V 赤:DATA 黄:CLK 灰:0V
;PA0?PA3 キー入力 4×4のマトリックスキー
;PA4  入力 キーの2面化
;PB0、PB5、PB6、PB7 マトリックスキーのスキャン 飛んでるけど許す!
;PB1   /DATA      出力
;PB2   /CLK       出力
;PB3="0"データ走出中
;PB4  /書出中        入力

 
 
 list p=PIC16F88
 INCLUDE "p16F88.inc"
 

     __CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _WDT_OFF & _PWRTE_ON & _EXTCLK
 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF 
;    __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
 
 ORG 00h
 ;******
T1 EQU 20h
T2 EQU T1+1
T3 EQU T2+1
T4 EQU T3+1 
T5 EQU T4+1
T6 EQU T5+1 

MMA EQU T6+1
MMB EQU MMA+1
MM0 EQU MMB+1

;********************************
M000 EQU MM0+1
M001 EQU M000+1
M002 EQU M001+1
M003 EQU M002+1
M004 EQU M003+1
M005 EQU M004+1
M006 EQU M005+1
M007 EQU M006+1
M008 EQU M007+1
M009 EQU M008+1
M010 EQU M009+1
M011 EQU M010+1
M012 EQU M011+1
M013 EQU M012+1
M014 EQU M013+1
M015 EQU M014+1
M016 EQU M015+1
M017 EQU M016+1
M018 EQU M017+1
M019 EQU M018+1
M020 EQU M019+1
M021 EQU M020+1
M022 EQU M021+1
M023 EQU M022+1
M024 EQU M023+1
M025 EQU M024+1
M026 EQU M025+1
M027 EQU M026+1
M028 EQU M027+1
M029 EQU M028+1
M030 EQU M029+1
M031 EQU M030+1
M032 EQU M031+1
M033 EQU M032+1
M034 EQU M033+1
M035 EQU M034+1
M036 EQU M035+1
M037 EQU M036+1
M038 EQU M037+1
M039 EQU M038+1
M040 EQU M039+1
M041 EQU M040+1
M042 EQU M041+1
M043 EQU M042+1
M044 EQU M043+1
M045 EQU M044+1
M046 EQU M045+1
M047 EQU M046+1
M048 EQU M047+1
M049 EQU M048+1
M050 EQU M049+1
M051 EQU M050+1
M052 EQU M051+1
M053 EQU M052+1
M054 EQU M053+1
M055 EQU M054+1
M056 EQU M055+1
M057 EQU M056+1
M058 EQU M057+1
M059 EQU M058+1
M060 EQU M059+1
M061 EQU M060+1
M062 EQU M061+1
M063 EQU M062+1
M064 EQU M063+1
M065 EQU M064+1
M066 EQU M065+1
M067 EQU M066+1
M068 EQU M067+1
M069 EQU M068+1
M070 EQU M069+1
M071 EQU M070+1
M072 EQU M071+1
M073 EQU M072+1
M074 EQU M073+1
M075 EQU M074+1
M076 EQU M075+1
M077 EQU M076+1
M078 EQU M077+1
M079 EQU M078+1
M080 EQU M079+1
M081 EQU M080+1
M082 EQU M081+1
M083 EQU M082+1
M084 EQU M083+1
M085 EQU M084+1
M086 EQU M085+1
M087 EQU M086+1
M088 EQU M087+1
M089 EQU M088+1

;********************************
 MOVLW     B'11101001' 
 MOVWF     PORTB
 BSF     STATUS, RP0
 CLRF     ANSEL
 MOVLW     B'01011111'
 MOVWF     TRISA
 MOVLW     B'00010000' 
 MOVWF     TRISB
 
 BCF     OPTION_REG,NOT_RBPU
 BCF     STATUS, RP0
;*****************************************

;***************************************** 
;***************************************** 
INT
;4×4 16キーマトリックス
;PA0 ROW1
;PA1 ROW2
;PA3 ROW3
;PA4 ROW4
;PB0 COL1
;PB5 COL2
;PB6 COL3
;PB7 COL4

;初期セット
 
 MOVLW     B'11101001' 
 MOVWF     PORTB

;*****************************
;PS/2電源確認と初期ASK待ち
;PA4=”1”待ちと1秒待ち
 BTFSS PORTB,4
 GOTO $-1
 MOVLW H'0F'     ;3秒くらいウエイト
 MOVWF T1
INTT1
 BCF PORTB,3     ;点滅中は、ウエイト
 CALL TIM100M
 BSF PORTB,3
 CALL TIM100M
 DECFSZ T1,1
 GOTO INTT1
 BSF PORTB,3

;*********************************
 GOTO START


;******************************** 
 
 
;***********************************
;書出  スタートbit データ0?6bit 7bitは”0” チェックサム エンドビット
MMTX
 
;*********************************
;書出し確認用
; BTFSS PORTA,3
; GOTO $-1
; BTFSC PORTA,3
; GOTO $-1
;*********************************
 
;******************************
;スペース送出
;スペース先頭なら 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
TX_SP
; BTFSS PORTB,4
; GOTO $-1
; BCF PORTB,3  ;書出LED点灯
; CALL TIM100M0
;**************************************** 
 MOVLW H'29'
 MOVWF MMA
 CALL   MMTX2
 RETURN
;******************************
;一文字送出 
M001_TX
; BTFSS PORTB,4
; GOTO $-1
 BCF PORTB,3  ;書出LED点灯
 CALL TIM100M0
;********************************
 MOVF M001,W
 MOVWF MMA
 CALL   MMTX2
 RETURN
;二文字以降の送出
M002_TX
; BTFSS PORTB,4
; GOTO $-1
 BCF PORTB,3     ;書出LED点灯
 CALL TIM100M0
;****************************
 MOVF M002,W
 MOVWF MMA
 CALL   MMTX2
;M003
 MOVF M003,W
 MOVWF MMA
 CALL   MMTX2 
;M004
 MOVF M004,W
 MOVWF MMA
 CALL   MMTX2 
;M005
 MOVF M005,W
 MOVWF MMA
 CALL   MMTX2
;M006
 MOVF M006,W
 MOVWF MMA
 CALL   MMTX2 
;M007
 MOVF M007,W
 MOVWF MMA
 CALL   MMTX2
;M008
 MOVF M008,W
 MOVWF MMA
 CALL   MMTX2
;M009
 MOVF M009,W
 MOVWF MMA
 CALL   MMTX2 
;M010
 MOVF M010,W
 MOVWF MMA
 CALL   MMTX2 
;************************************
;ここからはENDを検出する
;M011
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M011,W
 MOVWF MMA
 CALL   MMTX2
;M012
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M012,W
 MOVWF MMA
 CALL   MMTX2 
;M013
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M013,W
 MOVWF MMA
 CALL   MMTX2
;M014
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M014,W
 MOVWF MMA
 CALL   MMTX2
;M015
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M015,W
 MOVWF MMA
 CALL   MMTX2 
;M016
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M016,W
 MOVWF MMA
 CALL   MMTX2 
 
 
;M017
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M017,W
 MOVWF MMA
 CALL   MMTX2
;M018
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M018,W
 MOVWF MMA
 CALL   MMTX2 
;M019
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M019,W
 MOVWF MMA
 CALL   MMTX2 
;M020
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M020,W
 MOVWF MMA
 CALL   MMTX2
;M021
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M021,W
 MOVWF MMA
 CALL   MMTX2
;M022
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M022,W
 MOVWF MMA
 CALL   MMTX2 
;M023
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M023,W
 MOVWF MMA
 CALL   MMTX2 
 
;M024
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M024,W
 MOVWF MMA
 CALL   MMTX2
;M025
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M025,W
 MOVWF MMA
 CALL   MMTX2
;M026
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M026,W
 MOVWF MMA
 CALL   MMTX2 
;M027
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M027,W
 MOVWF MMA
 CALL   MMTX2  
;M028
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M028,W
 MOVWF MMA
 CALL   MMTX2
;M029
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M029,W
 MOVWF MMA
 CALL   MMTX2
;M030
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M030,W
 MOVWF MMA
 CALL   MMTX2 
;M031
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M031,W
 MOVWF MMA
 CALL   MMTX2   
 
;M032
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M032,W
 MOVWF MMA
 CALL   MMTX2
;M033
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M033,W
 MOVWF MMA
 CALL   MMTX2 
;M034
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M034,W
 MOVWF MMA
 CALL   MMTX2
 CALL   TIM99
 CALL   TIM99
;M035
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M035,W
 MOVWF MMA
 CALL   MMTX2
 
;M036
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M036,W
 MOVWF MMA
 CALL   MMTX2 
;M037
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M037,W
 MOVWF MMA
 CALL   MMTX2 
 
 
;M038
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M038,W
 MOVWF MMA
 CALL   MMTX2
;M039
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M039,W
 MOVWF MMA
 CALL   MMTX2 
 CALL   TIM99
 CALL   TIM99
;M040
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M040,W
 MOVWF MMA
 CALL   MMTX2
;M041
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M041,W
 MOVWF MMA
 CALL   MMTX2
;M042
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M042,W
 MOVWF MMA
 CALL   MMTX2 
;M043
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M043,W
 MOVWF MMA
 CALL   MMTX2 
 
;M044
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M044,W
 MOVWF MMA
 CALL   MMTX2
;M045
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M045,W
 MOVWF MMA
 CALL   MMTX2
;M046
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M046,W
 MOVWF MMA
 CALL   MMTX2 
;M047
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M047,W
 MOVWF MMA
 CALL   MMTX2  
;M048
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M048,W
 MOVWF MMA
 CALL   MMTX2
;M049
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M049,W
 MOVWF MMA
 CALL   MMTX2
 CALL   TIM99
 CALL   TIM99
;M050
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M050,W
 MOVWF MMA
 CALL   MMTX2 
;M051
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M051,W
 MOVWF MMA
 CALL   MMTX2
 
;M052
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M052,W
 MOVWF MMA
 CALL   MMTX2
;M053
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M053,W
 MOVWF MMA
 CALL   MMTX2 
;M054
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M054,W
 MOVWF MMA
 CALL   MMTX2
;M055
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M055,W
 MOVWF MMA
 CALL   MMTX2
;M056
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M056,W
 MOVWF MMA
 CALL   MMTX2 
;M057
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M057,W
 MOVWF MMA
 CALL   MMTX2 
 
 
;M058
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M058,W
 MOVWF MMA
 CALL   MMTX2
;M059
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M059,W
 MOVWF MMA
 CALL   MMTX2 
;M060
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M060,W
 MOVWF MMA
 CALL   MMTX2
 CALL   TIM99
 CALL   TIM99
;M061
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M061,W
 MOVWF MMA
 CALL   MMTX2
;M062
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M062,W
 MOVWF MMA
 CALL   MMTX2
;M063
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M063,W
 MOVWF MMA
 CALL   MMTX2
 CALL   TIM99
 CALL   TIM99
;M064
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M064,W
 MOVWF MMA
 CALL   MMTX2 
;M065
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M065,W
 MOVWF MMA
 CALL   MMTX2 
 
;M066
 
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M066,W
 MOVWF MMA
 CALL   MMTX2
;M067
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M067,W
 MOVWF MMA
 CALL   MMTX2 
;M068
 GOTO $+2
 GOTO ENP
 MOVF M068,W
 MOVWF MMA
 CALL   MMTX2  
;M069
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M069,W
 MOVWF MMA
 CALL   MMTX2
;M070
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M070,W
 MOVWF MMA
 CALL   MMTX2
;M071
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M071,W
 MOVWF MMA
 CALL   MMTX2 
;M072
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M072,W
 MOVWF MMA
 CALL   MMTX2 
;M073
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M073,W
 MOVWF MMA
 CALL   MMTX2 
;M074
 GOTO $+2
 GOTO ENP
 MOVF M074,W
 MOVWF MMA
 CALL   MMTX2  
;M075
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M075,W
 MOVWF MMA
 CALL   MMTX2
;M076
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M076,W
 MOVWF MMA
 CALL   MMTX2
;M077
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M077,W
 MOVWF MMA
 CALL   MMTX2 
;M078
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M078,W
 MOVWF MMA
 CALL   MMTX2 
;M079
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M079,W
 MOVWF MMA
 CALL   MMTX2
;M080
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M080,W
 MOVWF MMA
 CALL   MMTX2 
;M081
 DECFSZ MM0,F
 GOTO $+2
 GOTO ENP
 MOVF M081,W
 MOVWF MMA
 CALL   MMTX2   
 
;*****************************************
;送出データ終了
ENP
 CALL TX_SP
 RETURN
;*****************************************

 

;**********************************
;書出サブルーチン 逆動作だよ 0が1 PB1=/DATA    PB2=/CLK
MMTX2
 MOVF MMA,W
 MOVWF MMB
 CALL MMTX1
;キーを離す
 CALL   TX_HF0
 MOVF MMB,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
; GOTO START     ;デバック用
 RETURN
;*************************************** 
MMTX1
;***************************************
;CLK=0を確認
 
; BTFSS PORTB,5
; GOTO $-1
;*************************************** 
;スタートビット ”0”
 BSF PORTB,1
 CALL TIM19
 BSF PORTB,2
 CALL TIM40
;0bit
 BCF PORTB,2
 BCF PORTB,1
 BTFSS MMA,0
 BSF PORTB,1
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit1
 BCF PORTB,1
 BTFSS MMA,1
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit2
 BCF PORTB,1
 BTFSS MMA,2
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit3
 BCF PORTB,1
 BTFSS MMA,3
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit4
 BCF PORTB,1
 BTFSS MMA,4
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit5
 BCF PORTB,1
 BTFSS MMA,5
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit6
 BCF PORTB,1
 BTFSS MMA,6
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit7  "0"
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit8 チェツクサム
 BCF PORTB,1
 BTFSS MMA,7
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit9 エンドビッド
 BCF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
 BCF PORTB,2
 CALL   TIM99
 CALL   TIM99
 CALL   TIM99
 RETURN
;************************************
;キーを離したときのF0の送出
TX_HF0 
;***************************************
;CLK=0を確認
; BTFSS PORTB,5
; GOTO $-1
;***************************************
;スタートビット ”0”
 BSF PORTB,1
 CALL TIM19
 BSF PORTB,2
 CALL TIM40
;0bit=”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit1=”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit2=”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit3=”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit4=”1”
 BCF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit5=”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit6=”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit7=”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit8 チェツクサム  =”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit9 ストップビット ”1” 
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
 BCF PORTB,2 
 CALL TIM99
 CALL TIM99
 CALL TIM99
 RETURN
;***********************************

;************************************* 
;クロック判定時のタイマ とりあえず
TIM01
 NOP
 NOP
 NOP
 RETURN
 
 

;******************** 
;書出確認用タイマ
TIMSET
 MOVLW H'69'
 MOVWF T6
LOOPSET
 BTFSS PORTA,3
 GOTO T6END
 DECFSZ T6,1
 GOTO LOOPSET1
 GOTO   TIMSETEND
LOOPSET1
 CALL TIM99
 GOTO LOOPSET
T6END
 MOVLW H'01'
 MOVWF T6
TIMSETEND
 RETURN
 
TIM99   ;1.56mS?
 MOVLW H'B'
 MOVWF T5
TIM991
 CALL TIM100M2
 DECFSZ T5,1
 GOTO TIM991
 RETURN
;*******************************
;タイマ100mS
TIM100M
 CALL TIM100M0
 CALL TIM100M0
 CALL TIM100M0
 RETURN
TIM100M0
 MOVLW H'EB'
 MOVWF T5
TIM100M1
 CALL TIM100M2
 DECFSZ T5,1
 GOTO TIM100M1
 RETURN
TIM100M2
 MOVLW H'EB'     ;1.56mS?
 MOVWF T4
TIM100M3
 DECFSZ T4,1
 GOTO TIM100M3
 RETURN
;********************************
;20μSタイマ 1/2周期
TIM40
 CALL TIM19
 CALL TIM19
 RETURN
 
;19μSタイマ 1/4周期
TIM19
 MOVLW H'1E'
 MOVWF T3
LOOPTIM19
 DECFSZ T3,1
 GOTO LOOPTIM19
 RETURN

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

キーボード送出データ 回路図その2のアセンブラ

2018年06月21日 07時39分38秒 | PIC16F88

PIC16F88のカテゴリーの方へUP

PIC16F84Aによる、キーボードからの10文字分を記憶し、送出する方です。先にUPした方からマルチPICの為に修正してます

これで、IC-7851単体(単体か?)でRTTY(PSK)通信が楽に出来ます

無駄なとこもあります。

1文字は、スタートビット、文字データ、チックサム、エンドビットの11ビット構成、文字データ0~7ビットの7ビット目にチェックサムデータを設定しておいて、送出時に展開してます。つまり、文字データは、0~6ビット以内のものに限ります。

見かけ上、キーを離したデータを1文字毎に送出するようにしてます。つまり、スキャンコード上、キーを離したときに送出するコードが2個  例数字1なら 押す16 離すF0、16 は、OKですが、 DELキー 押すE0,71 離すE0,F0,71は、NG

電源投入時に3秒くらいウエイト状態にして、その間にPS/2キーボードが勝手に初期プロトコルやれば~的な

あと、あとちこちタイマで逃げてます

お約束:参考にすれば~! 結果の責任は、僕にないからね~!

 

 

;LBA.ASM
;PS2バッファ めざせIC-7851接続
;あるPS2ケーブル 茶:5V 赤:DATA 黄:CLK 灰:0V
;PA0="1"電源表示LED 出力
;PA1="0"書出中LED    出力
;PA2="0"読込SW   入力
;PA3="0"書出SW   入力
;PA4="0"外部のPICが書出中 入力 PA4="0"の時、PA1="0"にして何もしない
;PB0  未使用
;PB1   /DATA      出力
;PB2   /CLK       出力
;PB3="0"読込中LED 出力
;PB4  DATA        入力
;PB5  CLK、キーボード側電源確認     入力
 
 
 list p=16F84
 INCLUDE "p16F84A.inc"
 

 
    __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
 
 ORG 00h
 ;******
T1 EQU 0Ch
T2 EQU T1+1
T3 EQU T2+1
T4 EQU T3+1 
T5 EQU T4+1
T6 EQU T5+1 

MMA EQU T6+1
MMB EQU MMA+1
MM0 EQU MMB+1
MM1 EQU MM0+1
MM2 EQU MM1+1
MM3 EQU MM2+1
MM4 EQU MM3+1
MM5 EQU MM4+1
MM6 EQU MM5+1
MM7 EQU MM6+1
MM8 EQU MM7+1 
MM9 EQU MM8+1 
;********************************
 BSF     STATUS, RP0
 MOVLW     B'00011100'
 MOVWF     TRISA
 MOVLW     B'11110000' 
 MOVWF     TRISB
 
 BCF     OPTION_REG,NOT_RBPU
 BCF     STATUS, RP0
;*****************************************
;タイマ調整、サブルーチン確認用
; CALL ALN
; GOTO MMTX
;     GOTO INT  ;スタートへ
; GOTO   CHKTIM100M ;T5=H'EB'で100mS
; GOTO CHKTIM99 ;1.56mS用
 
; CALL TX_HF0  ;F0送出
; GOTO $-1  ;F0送出
; GOTO   CHKTIMSET ;2.6uS/130mS
; GOTO   CHKTIM01  ;NOP 3個で1.5uS
; GOTO   CHKTIM40  ;T3=H'1D'で39uS


;CHKTIMSET
; BSF PORTB,1
; CALL   TIMSET
; BCF PORTB,1
; CALL   TIMSET
; GOTO   CHKTIMSET
;CHKTIM01
; BSF PORTB,3
; CALL   TIM01
; BCF PORTB,3
; CALL   TIM01
; GOTO   CHKTIM01
;CHKTIM40 
; BSF PORTB,3
; CALL   TIM40
; BCF PORTB,3
; CALL   TIM40
; GOTO   CHKTIM40
;CHKTIM100M
; BSF PORTB,3
; CALL   TIM100M
; BCF PORTB,3
; CALL   TIM100M
; GOTO   CHKTIM100M
;CHKTIM99
; BSF PORTB,3
; CALL   TIM99
; BCF PORTB,3
; CALL   TIM99
; GOTO   CHKTIM99
;***************************************** 
;***************************************** 
INT 
;初期セット
 MOVLW     B'0011110'
 MOVWF     PORTA
 MOVLW     B'00001000' 
 MOVWF     PORTB
 CALL     ALN
; GOTO     MMTX ;確認用
;*****************************
;PS/2電源確認と初期ASK待ち
;PA4=”1”待ちと1秒待ち
 BTFSS PORTB,5
 GOTO $-1
 MOVLW H'0F'     ;3秒くらいウエイト
 MOVWF T1
INTT1
 BCF PORTA,0     ;点滅中は、ウエイト
 CALL TIM100M
 BSF PORTA,0
 CALL TIM100M
 DECFSZ T1,1
 GOTO INTT1
 BSF PORTA,0
; GOTO $-1 ;確認用
;*********************************
START
 BTFSS PORTA,4
 GOTO EXTPIC
 BSF PORTA,1  ;書出LED消灯
; BTFSS PORTA,2
; GOTO $-1
; BTFSS PORTA,3
; GOTO START
START1
 BTFSS PORTA,2  ;0で読込
 GOTO MMREED
 BTFSS PORTA,3  ;0で書出し
 GOTO MMTX
 GOTO START
EXTPIC    ;外部のPICが書出中 入力 PA4="0"の時、PA1="0"にして何もしない
 BCF PORTA,1 
 GOTO START
;******************************************
;読込スタート
MMREED
 
 BCF PORTB,3       ;LED点灯
 CALL MRR
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
;MM0
MM0SET
 CALL MRX
 MOVF MMA,W
 MOVWF MM0

;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM0SET     ;再読込
 MOVF MMA,W
 MOVWF MM0     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1

 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 

;MM1
MM1SET
 CALL MRX
 MOVF MMA,W
;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM1SET     ;再読込
 MOVF MMA,W
 MOVWF MM1     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
;MM2
MM2SET
 CALL MRX
 MOVF MMA,W
 ;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM2SET     ;再読込
 MOVF MMA,W
 MOVWF MM2     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
;MM3
MM3SET
 CALL MRX
 MOVF MMA,W
 ;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM3SET     ;再読込
 MOVF MMA,W
 MOVWF MM3     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
 
 
;MM4
MM4SET
 CALL MRX
 MOVF MMA,W
 ;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM4SET     ;再読込
 MOVF MMA,W
 MOVWF MM4     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
 
;MM5
MM5SET
 CALL MRX
 MOVF MMA,W
;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM5SET     ;再読込
 MOVF MMA,W
 MOVWF MM5     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
;MM6
MM6SET
 CALL MRX
 MOVF MMA,W 
 ;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM6SET     ;再読込
 MOVF MMA,W
 MOVWF MM6     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
;MM7
MM7SET
 CALL MRX
 MOVF MMA,W
 ;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM7SET     ;再読込
 MOVF MMA,W
 MOVWF MM7     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
;MM8
MM8SET
 CALL MRX
 MOVF MMA,W
 ;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM8SET     ;再読込
 MOVF MMA,W
 MOVWF MM8     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
;MM9
MM9SET
 CALL MRX
 MOVF MMA,W
;0判定
 ANDLW H'0F'
 MOVWF MMB
 INCF MMB,1
 DECFSZ MMB,1
 GOTO $+3
 CALL TIM100M0
 GOTO MM9SET     ;再読込
 MOVF MMA,W
 MOVWF MM9     ;記憶
;書出確認とタイマ
 CALL TIM99
 BTFSS PORTB,5
 GOTO $-1
 
 BTFSS PORTA,3
 GOTO MMEND     ;書出しへ
 BTFSC PORTB,4
 GOTO $-3
 
;書出10桁終了
 CALL TIM100M0
 BSF PORTB,3     ;LED消灯
 GOTO START
MMEND
 CALL TIM100M0
 BSF PORTB,3     ;LED消灯
 GOTO MMTX

;**********************************
;PS2読み込み データ ⇒ MMAへ保存 0?6bitへコード、7bitへチェックサム
MRX
;スタート
 CLRF MMA
 BTFSC PORTB,5     ;CLK='1'確認
 GOTO $-1
; CALL TIM01
; BTFSC PORTB,4     ;DATA=スタートビット確認
; GOTO MRX
 BTFSS PORTB,5
 GOTO $-1
 CALL TIM01
;ビット0
 BTFSC PORTB,5
 GOTO $-1
 CALL TIM01
 BTFSC PORTB,4
 BSF MMA,0
 CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
 CALL TIM01
;ビット1 
 BTFSC PORTB,5
 GOTO $-1
; CALL TIM01
 BTFSC PORTB,4
 BSF MMA,1
; CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
; CALL TIM01
;ビット2 
 BTFSC PORTB,5
 GOTO $-1
; CALL TIM01
 BTFSC PORTB,4
 BSF MMA,2
; CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
; CALL TIM01
;ビット3 
 BTFSC PORTB,5
 GOTO $-1
; CALL TIM01
 BTFSC PORTB,4
 BSF MMA,3
; CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
; CALL TIM01
;ビット4 
 BTFSC PORTB,5
 GOTO $-1
; CALL TIM01
 BTFSC PORTB,4
 BSF MMA,4
; CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
; CALL TIM01
;ビット5 
 BTFSC PORTB,5
 GOTO $-1
; CALL TIM01
 BTFSC PORTB,4
 BSF MMA,5
; CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
; CALL TIM01
;ビット6 
 BTFSC PORTB,5
 GOTO $-1
; CALL TIM01
 BTFSC PORTB,4
 BSF MMA,6
; CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
; CALL TIM01
;ビット7  データは捨てる 
 BTFSC PORTB,5
 GOTO $-1
 CALL TIM01
; CALL TIM01
; CALL TIM01
; CALL TIM01
 BTFSS PORTB,5
 GOTO $-1
; CALL TIM01
;ビット8 チェックサム bit7へセットする 
 BTFSC PORTB,5
 GOTO $-1
; CALL TIM01
 BTFSC PORTB,4
 BSF MMA,7
; CALL TIM01
 CALL TIM100M
 CALL TIM100M
 RETURN
;***********************************
;メモリリセット
MRR
 CLRF MMA ;データ変換用
 MOVLW H'29' ;スペースコード 
 MOVWF MM0 ;0?6bitへコード、7bitへチェックサム
 MOVWF MM1
 MOVWF MM2
 MOVWF MM3
 MOVWF MM4
 MOVWF MM5
 MOVWF MM6
 MOVWF MM7
 MOVWF MM8
 MOVWF MM9
 RETURN
;***********************************
;書出  スタートbit データ0?6bit 7bitは”0” チェックサム エンドビット
MMTX
 
;*********************************
;書出し確認用
; BTFSS PORTA,3
; GOTO $-1
; BTFSC PORTA,3
; GOTO $-1
;*********************************
 BTFSS PORTB,4
 GOTO $-1
 BCF PORTA,1  ;書出LED点灯
 CALL TIM100M0
;MM0
 MOVF MM0,W
 MOVWF MMA
 CALL   MMTX1
;キーを離す
 CALL   TX_HF0
 MOVF MM0,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
; GOTO START     ;デバック用
;********************************* 
;MM1
 MOVF MM1,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;キーを離す
 CALL   TX_HF0
 MOVF MM1,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M 
;MM2
 MOVF MM2,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;キーを離す
 CALL   TX_HF0
 MOVF MM2,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;MM3
 MOVF MM3,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M 
;キーを離す
 CALL   TX_HF0
 MOVF MM3,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;MM4
 MOVF MM4,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;キーを離す
 CALL   TX_HF0
 MOVF MM4,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;MM5
 MOVF MM5,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M 
;キーを離す
 CALL   TX_HF0
 MOVF MM5,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;MM6
 MOVF MM6,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;キーを離す
 CALL   TX_HF0
 MOVF MM6,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;MM7
 MOVF MM7,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;キーを離す
 CALL   TX_HF0
 MOVF MM7,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;MM8
 MOVF MM8,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;キーを離す
 CALL   TX_HF0
 MOVF MM8,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
;MM9
 MOVF MM9,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M 
;キーを離す
 CALL   TX_HF0
 MOVF MM9,W
 MOVWF MMA
 CALL   MMTX1
; CALL   TIM100M
 
;スペースキーデータ送出
 MOVLW H'29'
 MOVWF MMA
 CALL   MMTX1
;キーを離す
 CALL   TX_HF0
 MOVLW H'29'
 MOVWF MMA
 CALL   MMTX1 
 BCF PORTB,1
 CALL TIM100M0
 BSF PORTA,1         ;書出LED消灯
; GOTO MMTX  ;デバッグ書き出し確認用
 GOTO START
 
    

;**********************************
;書出サブルーチン 逆動作だよ 0が1 PB1=/DATA  PB2=/CLK
MMTX1
;***************************************
;CLK=0を確認
 BTFSS PORTB,5
 GOTO $-1
;*************************************** 
;スタートビット ”0”
 BSF PORTB,1
 CALL TIM19
 BSF PORTB,2
 CALL TIM40
;0bit
 BCF PORTB,2
 BCF PORTB,1
 BTFSS MMA,0
 BSF PORTB,1
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit1
 BCF PORTB,1
 BTFSS MMA,1
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit2
 BCF PORTB,1
 BTFSS MMA,2
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit3
 BCF PORTB,1
 BTFSS MMA,3
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit4
 BCF PORTB,1
 BTFSS MMA,4
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit5
 BCF PORTB,1
 BTFSS MMA,5
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit6
 BCF PORTB,1
 BTFSS MMA,6
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit7  "0"
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit8 チェツクサム
 BCF PORTB,1
 BTFSS MMA,7
 BSF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit9 ストップビット ”1” 
 BCF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
 BCF PORTB,2
 CALL   TIM99
 CALL   TIM99
 CALL   TIM99
 RETURN
;************************************
;キーを離したときのF0の送出
TX_HF0 
;***************************************
;CLK=0を確認
 BTFSS PORTB,5
 GOTO $-1
;***************************************
;スタートビット ”0”
 BSF PORTB,1
 CALL TIM19
 BSF PORTB,2
 CALL TIM40
;0bit  =”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit1  =”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit2  =”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit3  =”0”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit4  =”1”
 BCF PORTB,1
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit5  =”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit6  =”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit7  =”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit8 チェツクサム  =”1”
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
;bit9 ストップビット ”1” 
 BCF PORTB,2
 CALL TIM40
 BSF PORTB,2
 CALL TIM40
 BCF PORTB,2 
 CALL TIM99
 RETURN
;***********************************

ALN  ;ブログ用表示例
 CLRF MMA ;データ変換用
 MOVLW H'1C' ;A
 MOVWF MM0
 MOVLW H'32' ;B
 MOVWF MM1
 MOVLW H'A1' ;C
 MOVWF MM2
 MOVLW H'23' ;D
 MOVWF MM3
 MOVLW H'A4' ;E
 MOVWF MM4
 MOVLW H'AB' ;F
 MOVWF MM5
 MOVLW H'34' ;G
 MOVWF MM6
 MOVLW H'B3' ;H
 MOVWF MM7
 MOVLW H'43' ;I
 MOVWF MM8
 MOVLW H'3B' ;J
 MOVWF MM9
 RETURN
 RETURN
;************************************* 
;クロック判定時のタイマ とりあえず
TIM01
 NOP
 NOP
 NOP
 RETURN
 
 

;******************** 
;書出確認用タイマ
TIMSET
 MOVLW H'69'
 MOVWF T6
LOOPSET
 BTFSS PORTA,3
 GOTO T6END
 DECFSZ T6,1
 GOTO LOOPSET1
 GOTO   TIMSETEND
LOOPSET1
 CALL TIM99
 GOTO LOOPSET
T6END
 MOVLW H'01'
 MOVWF T6
TIMSETEND
 RETURN
 
TIM99   ;1.56mS用
 MOVLW H'B'
 MOVWF T5
TIM991
 CALL TIM100M2
 DECFSZ T5,1
 GOTO TIM991
 RETURN
;*******************************
;タイマ100mS
TIM100M
 CALL TIM100M0
 CALL TIM100M0
 CALL TIM100M0
 RETURN
TIM100M0
 MOVLW H'EB'
 MOVWF T5
TIM100M1
 CALL TIM100M2
 DECFSZ T5,1
 GOTO TIM100M1
 RETURN
TIM100M2
 MOVLW H'EB'     ;1.56mS用
 MOVWF T4
TIM100M3
 DECFSZ T4,1
 GOTO TIM100M3
 RETURN
;********************************
;20μSタイマ 1/2周期
TIM40
 CALL TIM19
 CALL TIM19
 RETURN
 
;19μSタイマ 1/4周期
TIM19
 MOVLW H'1E'
 MOVWF T3
LOOPTIM19
 DECFSZ T3,1
 GOTO LOOPTIM19
 RETURN
;**********************************
END

 

 

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする