男うちごはん

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

キーボード送出データの一時記憶 アセンブラ

2018年05月11日 07時27分51秒 | PIC16F84A

該出だと思うのですが IC-7851にキーに文字(文書)を記憶(設定)出来るPOSなどで使うキーボードを使用して、定型文送出でRTTY(PSK)通信をしているのですが、これはこれで、PCを接続せずに出来、便利しています。しかし、相手のコールサインを毎回キー入力しないとダメ! そこがめんどくさい

そこで、キーボードからのキー入力の英数10文字分くらい横取りで記憶させて(相手のコールサインを想定)をワンプッシュで、送出できないかなと

そこで候補にしたのが、PS/2キーボードです。 プロトコルも簡単そうだしってとこで(まあ、難しかったけど USBキーボードより簡単そう)

色々と先輩諸氏のネットを検索しながらの、案中模索状態で挑戦です。

一応の完成を見ましたので アセンブラです。

今後、配線し、ケースインしていきます(いつになるやら)

アセンブラ

;LBA.ASM
;PS2バッファ めざせIC-7851接続
;あるPS2ケーブル 茶:5V 赤:DATA 黄:CLK 灰:0V
;PA0="1"電源表示LED 出力
;PA1="0"書出中LED    出力
;PA2="0"読込SW   入力
;PA3="0"書出SW   入力
;PA4  未使用
;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'00001100'
 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,2
 GOTO $-1
 BTFSS PORTA,3
 GOTO START
START1
 BTFSS PORTA,2  ;0で読込
 GOTO MMREED
 BTFSS PORTA,3  ;0で書出し
 GOTO MMTX
 GOTO START1
;******************************************
;読込スタート
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

;************************************* 
;クロック判定時のタイマ とりあえず
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

 

お約束:採用される場合は、自己責任でお願いします。こんなとこシフト命令にしろよってとこもあります。8ビットにキーデータを収めるために7ビット目をチェックサムビットとしています。そのあたりが解析の味噌です。機器に合わせてのデータ構築なので、機器によっては無理ってのもあるかもです

このソフトを使用したための事故事件、宇宙人と交信できちゃった すべて当方に責任はありませんから
 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« キーボード送出データの一時... | トップ | キーボード送出データの一時... »
最新の画像もっと見る

コメントを投稿

PIC16F84A」カテゴリの最新記事