男うちごはん

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

ロボットハンドの右手 シャーシ干渉 剛性

2019年01月15日 07時32分40秒 | PIC16F88

該出のロボットハンドの右手 親指の筋(タイラップだけど)、親指は短いし、RCサーボモータまでが近いので、引く力が大変です

筋が、シャーシに干渉してます。黒いタイラップの右側のアルミシャーシのとこ、いよいよ引くのが困難ぽいです

画の左が親指側、右側が干渉しているシャーシ

切り飛ばして、ヤスリで綺麗に   なんとなく干渉が無くなりました。

筋を引くと、RCサーボモータが前に引かれるので、剛性が弱い 10mm厚のナットを挟みます

まんなかあたりの金色のが10mm厚農業ナット

もうちょっとで完成かな

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

ロボットハンドの右手

2019年01月11日 07時36分55秒 | PIC16F88

1月7日と10日UPの右手ですが、だいぶ出来ました。

組み立て説明の英語がわからないんじゃなく、説明がわからない 苦笑

ちなみに、説明書は添付されていません。南米大河販売のURLのとこか、世界網を泳いでいくと見つかります。

で、奥さん大変です。7日upに記載しました。タッピングビスと下穴問題。1.4mmのタッピングビスって記載してあったのですが、当方がチョイスしたのが、2mmのタッピングビス(ノギス持ち出したぜ) 英文の説明のタッピングビスは1.4MMのビスでした。普通のビスですよ!ビスですよ! どこがどう見たってタッピングじゃない。1φの穴に無理くりねじ込むという事らしいです。 お互い一勝一敗って事で (笑)

RCサーボモーターの取り付けに苦労しました。説明の読み違い、勘違い、スペーサーの寸法が指定のと若干づつ違うし! 選択するのが困難 おまけに、パーツが少しずつ余るので、正解がわからない  RCサーボモーター取り付けるだけで何度もやりなおしました

手のひら側になります

あと少しです。 疲れた

空のお菓子箱かなにかの箱の中に置いて作業しないと、部品が小さいので、なくしてしまいそうです。

*追記

RCサーボモーターを取り付ける時は、スペーサの長さを計測し、長さ毎にまとめてからにしてね、説明書(英文)の一番目の指が、親指だよ(笑) 指毎に記載の先に記載してあるスペーサが、RCサーボモーターの後ろ側に延ばす方(たぶん)後に書いてあるのがモータ軸側に取り付ける方(たぶん)中指は、後ろに着けるんだよ(たぶん)  説明書の写真も参照にしてね(わかりずらいけど)

RCサーボモーターは、電源入ってない状態で軸フリーになってない様です。怖くてあまり力掛けられない!

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

ロボットハンドの右手

2019年01月10日 07時16分55秒 | PIC16F88

1月7日UPの右手ですが、南米大陸の大河の方へぽちりましたら、もう届きました。

あ、そうそう⇒タイマー0の割り込みは、なんとなく出来る様になりました。

この程度の大きさ

右手って記載が、パッキングする人 怖かったのではと 笑

部品ごとにまとまっている感じです

RCサーボモーターも付属してました

さっそく、遠視(えんし ですよ 遠視)に鞭打って 組み立て始めました。

親指と、4本の指が出来上がり  一番下にほぼ1本分の部品が(スペーサみたいのが足りない)

奥さん大変です ⇒ 1.4mmだかのタッピングビス 下穴が小さすぎます。1本折ってしまいました。 号泣   

下穴を開け直す必要があります。1.2mmくらいのドリル カインズ家にあるんだろうか?

号泣中です

これからカインズ家に行ってきますだぁ

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

右手 RCサーボモーター

2019年01月07日 16時54分12秒 | PIC16F88

南米販売店?で、右手を見つけてしまって 苦笑

これ組み立てキットらしいです(例によって説明がなんとなく親切じゃない!)

左手もあるようです。

で、これでジャンケンとかしたい(例ですよ例!)

RCサーボモーターなので、PIC16F88でコントロールできるんじゃねぇ ってことで、タイマー0での割り込みを検討中(まあ、例によってパクリって話も)感謝! 謝!

タイマー0で20mSの割り込みを作って、5本指分のパルスをポートAに出そうとというわけです。

なんとなく、割り込みが出来るようになりました。さて、右手を発注しますかね

*PIC16F84Aのアセンブラから移植ですので、軽く大変

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

PICでLCD表示

2019年01月03日 08時29分52秒 | PIC16F88

http://mitt.la.coocan.jp/pic/pic5_17.html

のサイトを主に参考にさせていただきました。感謝 謝!

ぶっちゃけ、参考というより、ほぼ99.9% コピペにて 感謝 謝!

PIC16F88 に変更しています。

カーソル位置を少し右よりにして表示してます。

アセンブラです。 


;LCD SC1602BS*B 接続 基本動作
;参考URL  http://mitt.la.coocan.jp/pic/pic5_17.html
;まあ、ほぼまるコピーです 感謝 謝!
;**********************************************************
; clock:20MHz
;
; LCDを4ビットで制御
;
; PICのピン接続
;  RB0 LCD DB4
;  RB1 LCD DB5
;  RB2 LCD DB6
;  RB3 LCD DB7
;
;  RA0 LCD R/W (6:Read/Write)
;  RA1 LCD E (5:Enable Signal)
;  RA2 LCD RS (4:Register Select)
;
; 使用タイマ(プログラムループ)
;   15mS LCDパワーオンリセット待ち
;    5mS LCD初期化ルーチン
;    1mS LCD初期化ルーチン
;   50uS LCD初期化ルーチン,書き込み待ち
;


 
 list p=PIC16F88
 INCLUDE "p16F88.inc"
 

     __CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _WDT_OFF & _PWRTE_ON & _HS_OSC
 __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF 
;    __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
 
 ORG 00h
 ;******
 CBLOCK 20h
 save_st   ;STATUSのセーブ
 save_w   ;W-regのセーブ
 CNT15mS   ;15mSカウンタ
 CNT5mS   ;5mSカウンタ
 CNT1mS   ;1mSカウンタ
 CNT50uS   ;50μSカウンタ
 char   ;LCD表示データ
 ENDC

RW EQU 00h  ;LCD R/W
E EQU 01h  ;LCD Enable
RS EQU 02h  ;LCD Register Select
BUSY EQU 03h  ;BUSY FLAG (PORTB,3)


; ==================== 初期処理 =====================
 org 0
init
 BSF STATUS,RP0 ;■バンク1に切替え
 CLRF ANSEL
 MOVLW H'F8'
 MOVWF TRISA  ;RA0-2は出力
 MOVLW H'F0'
 MOVWF TRISB  ;RB0-3は出力
 BCF OPTION_REG,NOT_RBPU
 BCF STATUS,RP0 ;■バンク0に切替え

 CLRF PORTA
 CLRF PORTB
;***************************************************
 goto start 
;タイマチェック
TIM
 BCF PORTA,0
 CALL TIM1
 BSF PORTA,0
 CALL   TIM1
 GOTO TIM
TIM1
 CALL   wait50us
; CALL wait1ms
; CALL wait5ms
 
 
 
 RETURN
;***************************************************
start 
 CALL LCD_init ;LCD 初期化

; ==================== メイン処理 =====================
main
 CALL LCD_home ;カーソルを1行目の先頭に
 
 MOVLW 084h           ;表示位置変更 80h+00h~
 CALL LCD_command
 
 MOVLW 'H'
 CALL LCD_write
 MOVLW 'e'
 CALL LCD_write
 MOVLW 'l'
 CALL LCD_write
 MOVLW 'l'
 CALL LCD_write
 MOVLW 'o'
 CALL LCD_write
 MOVLW ','
 CALL LCD_write

 CALL LCD_2line ;カーソルを2行目の先頭に
 
 MOVLW 0CAh           ;表示位置変更 80h+40h~
 CALL LCD_command
 
 MOVLW 'w'
 CALL LCD_write
 MOVLW 'o'
 CALL LCD_write
 MOVLW 'r'
 CALL LCD_write
 MOVLW 'l'
 CALL LCD_write
 MOVLW 'd'
 CALL LCD_write
 MOVLW '!'
 CALL LCD_write

 CLRF PORTA
 CLRF PORTB
 SLEEP

 GOTO main


;================= LCD表示をクリアする ===================
LCD_clear
 MOVLW 01h
 CALL LCD_command
 RETURN

;================= LCDのカーソル位置を先頭に戻す =========
LCD_home
 MOVLW 02h
 CALL LCD_command
 RETURN

;================= LCDのカーソル位置を2行目の先頭に =====
LCD_2line
 MOVLW 0C0h
 CALL LCD_command
 RETURN

;================= LCDのディスプレイをONにする =========
LCD_on
 MOVLW 0Ch
 CALL LCD_command
 RETURN

;================= LCDのディスプレイとカーソルをONにする ==
LCD_on_cur
 MOVLW 0Eh
 CALL LCD_command
 RETURN

;================= LCDのディスプレイをOFFにする =======
LCD_off
 MOVLW 08h
 CALL LCD_command
 RETURN

;================= LCDにデータを送る =====================
LCD_write
 MOVWF char
 CALL LCD_BF_wait ;LCD busy 解除待ち

 BCF PORTA,RW ;R/W=0(Write)
 BSF PORTA,RS ;RS=1(Data)

 MOVLW 0F0h  ;PORTBの下位4ビットを
 ANDWF PORTB,F  ; クリア
 SWAPF char,W  ;上位
 ANDLW 0Fh  ;4ビットを
 IORWF PORTB,F  ;PORTB(3-0)にセット(PORTB(7-4)はそのまま)
 BSF PORTA,E  ;LCDにデータ書き込み
 NOP
 BCF PORTA,E

 MOVLW 0F0h  ;PORTBの下位4ビットを
 ANDWF PORTB,F  ; クリア
 MOVF char,W  ;下位
 ANDLW 0Fh  ;4ビットを
 IORWF PORTB,F  ;PORTB(3-0)にセット(PORTB(7-4)はそのまま)
 BSF PORTA,E  ;LCDにデータ書き込み
 NOP
 BCF PORTA,E

 RETURN

;================= LCDにコマンドを送る ===================
LCD_command
 MOVWF char
 CALL LCD_BF_wait ;LCD busy 解除待ち

 BCF PORTA,RW ;R/W=0(Write)
 BCF PORTA,RS ;RS=0(Command)

 MOVLW 0F0h  ;PORTBの下位4ビットを
 ANDWF PORTB,F  ; クリア
 SWAPF char,W  ;上位
 ANDLW 0Fh  ;4ビットを
 IORWF PORTB,F  ;PORTB(3-0)にセット(PORTB(7-4)はそのまま)
 BSF PORTA,E  ;LCDにデータ書き込み
 NOP
 BCF PORTA,E

 MOVLW 0F0h  ;PORTBの下位4ビットを
 ANDWF PORTB,F  ; クリア
 MOVF char,W  ;下位
 ANDLW 0Fh  ;4ビットを
 IORWF PORTB,F  ;PORTB(3-0)にセット(PORTB(7-4)はそのまま)
 BSF PORTA,E  ;LCDにデータ書き込み
 NOP
 BCF PORTA,E

 RETURN

;================= LCD Busy 解除待ち ========================
LCD_BF_wait
 BCF PORTA,E
 BCF PORTA,RS ;RS=0(Control)
 BSF PORTA,RW ;R/W=1(Read) Busy Flag read

 BSF STATUS,RP0 ;■バンク1に切替え
 MOVLW 0FFh
 MOVWF TRISB  ;RB0-7は入力
 BCF STATUS,RP0 ;■バンク0に切替え
 BSF PORTA,E  ;LCD上位4ビット読み込み
 NOP
 BTFSS PORTB,BUSY ;LCD Busy ?
 GOTO LCD_BF_wait1 ; No
 BCF PORTA,E
 NOP
 BSF PORTA,E  ;LCD下位4ビット読み飛ばし
 NOP
 BCF PORTA,E
 GOTO LCD_BF_wait

LCD_BF_wait1
 BSF PORTA,E  ;LCD下位4ビット読み飛ばし
 NOP
 BCF PORTA,E
 BSF STATUS,RP0 ;■バンク1に切替え
 MOVLW 0F0h  ;RB0-3は出力
 MOVWF TRISB
 BCF STATUS,RP0 ;■バンク0に切替え

 RETURN

;================= LCD初期化 ================================
LCD_init
 CALL wait15ms ;15mS待つ
 BCF PORTA,RW ;R/W=0
 BCF PORTA,RS ;RS=0
 BCF PORTA,E  ;E=0

 MOVLW 0F0h  ;PORTBの上位4ビットを
 ANDWF PORTB,W  ;取り出す(変更しないように)
 IORLW 03h  ;下位4ビットに'3'をセット
 MOVWF PORTB
 BSF PORTA,E  ;ファンクションセット(1回目)
 NOP
 BCF PORTA,E
 CALL wait5ms  ;5mS待つ

 MOVLW 0F0h  ;PORTBの上位4ビットを
 ANDWF PORTB,W  ;取り出す(変更しないように)
 IORLW 03h  ;下位4ビットに'3'をセット
 MOVWF PORTB
 BSF PORTA,E  ;ファンクションセット(2回目)
 NOP
 BCF PORTA,E
 CALL wait5ms  ;5mS待つ

 MOVLW 0F0h  ;PORTBの上位4ビットを
 ANDWF PORTB,W  ;取り出す(変更しないように)
 IORLW 03h  ;下位4ビットに'3'をセット
 MOVWF PORTB
 BSF PORTA,E  ;ファンクションセット(3回目)
 NOP
 BCF PORTA,E
 CALL wait5ms  ;5mS待つ

 MOVLW 0F0h  ;PORTBの上位4ビットを
 ANDWF PORTB,W  ;取り出す(変更しないように)
 IORLW 02h  ;4ビットモード
 MOVWF PORTB  ;に
 BSF PORTA,E  ;設定
 NOP
 BCF PORTA,E
 CALL wait1ms  ;1mS待つ

 MOVLW 028h  ;4ビットモード,2行表示,7ドット
 CALL LCD_command
 CALL LCD_off  ;ディスプレイOFF
 CALL LCD_clear ;LCDクリア
 MOVLW 06h  ;
 CALL LCD_command ;カーソルモードセット (Increment)
 CALL LCD_on  ;ディスプレイON,カーソルOFF

 RETURN

;================= 15mS WAIT ================================
wait15ms
 MOVLW d'3'
 MOVWF CNT15mS
wait15ms_loop
 CALL wait5ms
 DECFSZ CNT15mS,F
 GOTO wait15ms_loop
 RETURN

;================= 5mS WAIT =================================
wait5ms
 MOVLW d'100'
 MOVWF CNT5mS
wait5ms_loop
 CALL wait50us
 DECFSZ CNT5mS,F
 GOTO wait5ms_loop
 RETURN

;================= 1mS WAIT =================================
wait1ms
 MOVLW d'20'
 MOVWF CNT1mS
wait1ms_loop
 CALL wait50us
 DECFSZ CNT1mS,F
 GOTO wait1ms_loop
 RETURN

;================= 50μS WAIT ===============================
wait50us
 ; 1サイクル(4クロック):0.2μS
 ; 50μS=0.2μS×250サイクル

 MOVLW d'82'  ;1
 MOVWF CNT50uS  ;1
wait50us_loop
 DECFSZ CNT50uS,F ;1
 GOTO wait50us_loop ;2
 RETURN   ;2+1

 END

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

PICでLCD表示

2019年01月03日 07時52分54秒 | PIC16F88

http://mitt.la.coocan.jp/pic/pic5_17.html

のサイトを主に参考にさせていただきました。感謝 謝!

ぶっちゃけ、参考というより、ほぼ99.9% コピペにて 感謝 謝!

PIC16F88 に変更しています。

カーソル位置を少し右よりにして表示してます。

あいかわらずのブレッドボード

LCD表示

何か表示をかんがえましょうか?

 

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

ASCII MACINE

2018年07月06日 07時20分03秒 | PIC16F88

キーボード送出データ のタイトル(たぶん)でUPしていたやつ。やっとカッテングマシンがWIN7で動作可能となったので、古いカッティングマシンだからWIN7も動作保障してない、なぜかUSBドライブを認識しなく。何度も何度もトライて、なぜか認識できた 不思議!

ぐちゃぐちゃ貼ることも考えたのですが。あっさりと、型番?名前?だけ

ASCII MACINE としました。   どこかの雑誌名じゃないよ! 文字を送出するので ASCII MACINE

自宅で、打ち合わせ会議(飲み会じゃないよ)をしたので、無線に興味ない人たちでしたが、無理くりデモして初お披露目!

キー位置との対応は、用紙を作成して、パウチっこ!

表キー

裏キー

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

さっそく修正キーボード送出データ 回路図その2のアセンブラ

2018年06月22日 18時15分01秒 | PIC16F88

さっそく修正です。説明は、該出もね

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

 

 

 

 

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

キーボード送出データ 回路図その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

 

コメント
  • Twitterでシェアする
  • 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

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