goo blog サービス終了のお知らせ 

男うちごはん

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

キーボード送出データ 回路図その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でシェアする

キーボード送出データ 回路図その3

2018年06月20日 09時01分19秒 | PIC16F88

その2と組み合わせて、定型文を送出する回路です。

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

みずらい場合は、コピーして、画像ソフトで表示させると良いかもです。

当方は、2個使って、表裏(シフト側)としていますが、1個でも頑張って数個でも出来る。

その2の回路が、こちらのPICをPICをなんとなくコントロールしています。ソフトとしては、発言(データをコントロールしている)PICが主導権を握るようになってます。

くどいですが

動作の概要

1)16キーは、表裏 裏(シフトとも言う)で約20個の定型文を送出することが出来ます。上の例では、2キーを押したばあい

2)Fキーを押すと、キーボードからの最大10文字分を記憶することが出来、Dキーで、その記憶文字を送出します。

 つまり、相手のコールサインを記憶させておきます。交信中は、Dキーを押すのと、他の最適な16キーを押すだけで交信が成立するわけです。

3)キーボードとこれが一体で、電源投入時(キーボード接続時)のプロトコルは、全部PS/2キーボードにやってもらってます。その分プロトコル解析とかしないで楽してます。

4)PIC16F84A 1個 PIC16F88 2個で構成されています。最初にPIC16F84Aで始めたからっていう理由だけで、3個ともPIC16F88で構成可能です。

PIC16F84A 1個が、基本の動作を請け負ってます(本当か?)、PIC16F88が、1個ずつ、定型文の表と裏(シフトとも言う)を請け負ってます。

PIC16F84A 1個だけの構成、PIC16F84A 1個とPIC16F88 1個の構成  でも動作出来ます。逆にPIC16F88を追加して(切替回路も必要だけど)定型文を増やすことが出来ます。

アセンブラは、おいおいUPします。個人情報が入っているので、そこを修正してからね!

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


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

キーボード送出データ 回路図その2

2018年06月20日 08時53分30秒 | PIC16F88

PIC16F88のカテゴリーの方へUP

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

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

みずらい場合は、コピーして、画像ソフトで表示させると良いかもです。

定型文を記憶させているPICをなんとなくコントロールしています。ソフトとしては、発言(データをコントロールしている)PICが主導権を握るようになってます

その3に続く

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


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

キーボード送出データ 回路図その1

2018年06月20日 08時37分54秒 | PIC16F88

PIC16F88のカテゴリーの方へUP

PIC16F84Aによる、キーボードからの10文字分を記憶し、送出する回路です。

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

みずらい場合は、コピーして、画像ソフトで表示させると良いかもです。

これだけでも(ソフト必要だけど)便利になります。

クドイですが概要

電源(接続)投入時は、接続しているPS/2キーボードからのイニシャルシーケンスにまかせっきり

文字列は、10文字まで記憶、10文字以下の場合は残りをスペースにしてます。問題ない感じです。

PS/2←→USB変換のやつえを使用してますが、確認してないやつもあるので、変換するやつですべて動作するか未確認です。当方は、USBから2股で、キーボードとマウスに分離するやつです。

当方のIC-7851とWIN10では動作してます。WIN7では動作しませんでした

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


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

キーボード送出データ 完成!

2018年06月18日 17時36分30秒 | PIC16F88

構想1年、ソフト開発6か月、シャーシ加工1日、無理くり押し込んだ結果トランジスタの足を折ってしまい、それが解るまで半日

なんとか、完成です。おいおい回路図とか、アセンブラとかのUPします。ひさしぶりの大作です。

下がPS/2キーボードで、上が作成したやつ。PS/2←→USB変換器を介してPCとか、IC-7851(無線機だよ)に接続します。

単体で記念撮影 カッティングシートを切る機械がPCと接続出来ないので、文字無し状態です

後ろ ケーブルの方が PC(IC-7851)側 丸いコネクタがPS/2キーボード側

さっそく設置

キーを押した例 UR RST 599 599 QSL?  ?が表示できないので / で代用(いいのかよ!)

動作の概要

1)16キーは、表裏 裏(シフトとも言う)で約20個の定型文を送出することが出来ます。上の例では、2キーを押したばあい

2)Fキーを押すと、キーボードからの最大10文字分を記憶することが出来、Dキーで、その記憶文字を送出します。

 つまり、相手のコールサインを記憶させておきます。交信中は、Dキーを押すのと、他の最適な16キーを押すだけで交信が成立するわけです。

3)キーボードとこれが一体で、電源投入時(キーボード接続時)のプロトコルは、全部PS/2キーボードにやってもらってます。その分プロトコル解析とかしないで楽してます。

4)PIC16F84A 1個 PIC16F88 2個で構成されています。最初にPIC16F84Aで始めたからっていう理由だけで、3個ともPIC16F88で構成可能です。

PIC16F84A 1個が、基本の動作を請け負ってます(本当か?)、PIC16F88が、1個ずつ、定型文の表と裏(シフトとも言う)を請け負ってます。

PIC16F84A 1個だけの構成、PIC16F84A 1個とPIC16F88 1個の構成  でも動作出来ます。逆にPIC16F88を追加して(切替回路も必要だけど)定型文を増やすことが出来ます。

小さ目の傾斜シャーシに組みこんだので、無理くりねじ込んでいます。苦笑!

奥さん大変です。PCでは、動作してた筈の、Dキーで F12 を送出しているのですが、IC-7851では無反応です。どうして? 状態です。無理くり力ずくでケースインしているので、また開けてなんとかっていう行動意欲がありません。当分これで!

奥さん解決です。16キーへの配線が1本切れてました。配線しなおしました。良かった!良かった!

 

今後は、無線機からの回り込みの確認ですなぁ とりあえず21Mhzは問題なし!問題は下の周波数の方ですね

 

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

 

 


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

キーボード送出データ 途中経過

2018年06月13日 07時33分21秒 | PIC16F88

メモリ容量が足らなくなり、PIC16F88でやっつけています。当ブログのカテゴリー欄にも追加

PIC16F84Aと同じっちゃ同じ!ちょっとだけお兄さんかな 笑

PIC16F84Aで該出の キーボード送出データの一時記憶 とさらに、Pmod KYPD Pmod16キーパッド(秋月電子)のキーパッドに送信データを記憶させちゃおう! おまけに一つのケースに納めちゃおうっていう広大な計画!

ソフトのめどはたちました。まだ送信データのデバッグ中ですが

ケースに収めるための部品達でデバッグ中

左が、Pmod KYPD Pmod16キーパッド(秋月電子) 右が基板、基板上の右のPICが、PIC16F84Aで、該出のキーボード送出データの一時記憶をつかさどってるやつ。左の上下(上は未実装だけど)PIC16F88で、16キーパッドの制御とキーに割り付けるデータを送出する役目、上下に2個あるのは、キー割り付けを2倍にするための表裏(シフトとも言う)

例によってマルチPIC構造です。

実際にキーに割り付けた例 1行で1キーになってます。一番下の2行は、改行を入れてるからで、一つのキーからのデータ送出です。(画面みてたら、文字間違いがあったので、修正せねば!)

キーをポンと押すと、ずらずらと文字が出るのであら簡単てな ことに

Dキーは、F12送出に使って

Fキーは、一時記憶開始用に使って

Eキーは、その一時記憶したデータの送出用に使って

ます。

つまり13キー×2(裏表 シフトともいう)=26個の定型文を送出することが出来る訳です。裏(2個目)は、長文に設定する予定です

当然ですが、PICを増やして頑張れば、さらに定型文を増やすことも出来るが、そこまで使いきれない。

まあ、全体的に簡単なアセンブラではありますが、とにかくメモリを食う!、おまけに、ページ切替(バンク切替)がよくわからない。今回の方法では使えないかも的な! そこで、PICは安いし、マルチPICにしちぁえっと ことで

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


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