6月24日、25日は青森方面へ
まずは、青森空港へ
早朝の高速バスで羽田空港まで、さらに、飛行機に乗るためにバスに乗る(地方空港だとお約束のようにバスで飛行機まで)
少し雨程度で、濡れることもなく、青森空港へ
黄色や、緑の飛行機がいます
今回40名ほどの善男善女!
さて、これからまたバスで
6月24日、25日は青森方面へ
まずは、青森空港へ
早朝の高速バスで羽田空港まで、さらに、飛行機に乗るためにバスに乗る(地方空港だとお約束のようにバスで飛行機まで)
少し雨程度で、濡れることもなく、青森空港へ
黄色や、緑の飛行機がいます
今回40名ほどの善男善女!
さて、これからまたバスで
アマゾン様より!
あいかわらずのバサッと状態で届く
本体(上)と中華製だからLED切れるかもしれないので、予備で入れとくよ的なLED(下)
コネクタ(基板の下側)にオーディオ入力 L R G(たぶん0V=グランド=>ちょい文字の使い方おかしいだろう)
電源+ - (5~6Vらしい)
とりあえず動作させてみました
ちなみに、軽く使い方(設定方法)が、アマゾンの製品のページに記載してあります。設定のスイッチ(基板中ほど)にK1 K2って記載 長押しだ、ちょこっと押しだぁで設定が変わる
入力端子から抵抗、コンデンサを介してICの入力端子に接続されているぽいので、コンデンサをパスすれば、直流電圧のレベル計になるっぽいです。(軽くテストしてみた)
これで、IC-7851の外部メータにしてみるばい!
追記:7月6日
入力側から回路を追うと、たぶん、抵抗、コンデンサの直列を介して、ICの入力に接続されているぽいです。
そこで、試に、1kΩのボリュームで電圧を加えるようにして、安全対策に1kΩをコンデンサの(上画で)右側に接続してみたところ
無事に、直流のレベル計として動作するぽいです。 良かった!良かった!
これで、IC-7851の外部メータにしてみるばい!
約2V程度でフルスケールの例
だいぶ前にポチットなしたノイズキャンセラーANC-4
ネットでは、使える、使えないと色々ですが、接続してみました。
結論:使えるちゃつかえるぽいです。アンテナをもう少し工夫する必要ありかもですが
かえってノイズ混合器になる設定点もありーーーのですが
ノイズレベルがS3~5くらい落ちる感じです。
外付けのメータで
こんなんが
こんなんになります
一応使えるってことで
今朝の事です
こんなんメールが来ていて
*************************************
いつもセブンネットショッピングをご利用いただき誠にありがとうございます。
こちらのご案内は『「キリン 生茶」1本無料クーポン』を既にメールにて
お送りしているお客様へ配信しております。
無料引き換えクーポンには利用期限がございます。
クーポン利用期限を過ぎると、引き換えの権利が失効されます。
下記期限までに、引き換え下さいますようお願いいたします。
※すでにクーポンをご利用済みのお客様へは、行き違いのご連絡となります。何とぞご容赦ください。
■利用期限:【2018年6月30日(土)】まで
下記URLからクーポン画面をご確認いただき、
「商品」と一緒に「クーポン画面」を店頭レジにてご提示ください。
*********************************
これが、5通も! 朝食になにか買うってんで、ついでに
クーポンメールが5通来てましたとさ
さっそく修正です。説明は、該出もね
PIC16F88のカテゴリーの方へUP
PIC16F84Aによる、キーボードからの10文字分を記憶し、送出する方です。
これで、IC-7851単体(単体か?)でRTTY(PSK)通信が楽に出来ます
無駄なとこもあります。
実際に使用したら、少し改善が必要ってことで
必ず10文字になって(10文字以下の場合は、スペースを送出)、スペースが多くなってみっともない
送出キー Eキー を押す(PA3=0)ことで記憶をストップさせていたので、使い勝ってが悪い
そこで、Fキーを押して(PA2=0)記憶開始した場合に、スペースキーで記憶を中止するように修正
文字列にスペースがあると、そこで、送出も終了としました。
お約束:参考にすれば~! 結果の責任は、僕にないからね~!
以下です
;2018年6月21日使い勝ってを改善のために修正
;10文字以下の記憶で、文字数までとする
;PA2=”0”で読込開始で、読込中(5文字以降)に再度PA2=”0”で読込終了
;現在のPA2=”0”の複数押しで止まってしまうのを改善する
;*6月 のマークが今回の改善のとこ
;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
MMC EQU MMB+1
MM0 EQU MMC+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消灯
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
CALL TIM100M ;*6月
; MOVLW D'01' ;*6月
; MOVWF MMC ;*6月
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
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM1
MM1SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM1
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM2
MM2SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM2
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM3
MM3SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM3
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM4
MM4SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM4
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM5
MM5SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM5
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM6
MM6SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM6
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM7
MM7SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM7
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM8
MM8SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM8
;スペース"29"判定*6月
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO MMEND2
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;MM9
MM9SET
; INCF MMC,1 ;*6月
CALL MRX
MOVF MMA,W
MOVWF MM9
;書出確認とタイマ
CALL TIM99
BTFSS PORTB,5
GOTO $-1
BTFSS PORTA,3
GOTO MMEND ;書出しへ
BTFSC PORTB,4
GOTO $-3
;書出10桁終了
MMEND2 ;*6月
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 ;データ変換用;*6月
MOVLW H'29' ;スペースコード
MOVWF MMA ;*6月
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
MOVWF MMB
CALL MMTX1
;キーを離す
CALL TX_HF0
MOVF MM0,W
MOVWF MMA
CALL MMTX1
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;*********************************
;MM1
MOVF MM1,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM1,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;MM2
MOVF MM2,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM2,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;MM3
MOVF MM3,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM3,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;MM4
MOVF MM4,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM4,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;MM5
MOVF MM5,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM5,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;MM6
MOVF MM6,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM6,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;MM7
MOVF MM7,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM7,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;MM8
MOVF MM8,W
MOVWF MMA
MOVWF MMB
CALL MMTX1
; CALL TIM100M
;キーを離す
CALL TX_HF0
MOVF MM8,W
MOVWF MMA
CALL MMTX1
; CALL TIM100M
;スペース"29"判定*6月
MOVF MMB,W
MOVF MMA
SUBLW H'2A'
MOVWF MMB
DECFSZ MMB,1
GOTO $+2
GOTO START
;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
コールサイン等のデータを削除してあるので、このままでは動作しません。良く見て変更してください
もっと賢い方法はあると思います。
電源投入時に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
これで、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
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
その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します。個人情報が入っているので、そこを修正してからね!
お約束:参考にすれば~! 結果の責任は、僕にないからね~!
PIC16F88のカテゴリーの方へUP
PIC16F84Aによる、キーボードからの10文字分を記憶し、送出する回路部です。先にUPした方からマルチPICの為に修正してます
これで、IC-7851単体(単体か?)でRTTY(PSK)通信が楽に出来ます
みずらい場合は、コピーして、画像ソフトで表示させると良いかもです。
定型文を記憶させているPICをなんとなくコントロールしています。ソフトとしては、発言(データをコントロールしている)PICが主導権を握るようになってます
その3に続く
お約束:参考にすれば~! 結果の責任は、僕にないからね~!