業務において、お客様がAD検出の異なる接地電圧方式を使用して異なるRF値を送信したい場合、以下は特定の送信方式
です。
ハードウェア回路:
プロトコル設計
1.ガイドコード-10ms; 2。キーコード; 3。キーコード逆コード、長押しして送信すると、常にそのような波形が出力されます; 4。終了コード-20ms;
機器受け取り時の事故防止のため、ボタンを押した状態で3回送信してください。
ロジック0:高レベル0.4ms、低レベル1ms
ロジック1:高レベル1ms、低レベル0.4ms
コード化された波形
コードはアセンブラであり、ソフトウェアフローは、ボタンが押され、ADが特定のボタンを収集して認識し、キー値を割り当てて、送信フラグF_RF_TX_ENを有効にすることです。次に、100us割り込みを使用して、送信、送信を1回、カウントを1回完了すると、カウントが3回に達し、F_RF_TX_ENイネーブルフラグがクリアされます。
D_RF_TX_CNT EQU D'16' ;发送数据位数
;
D_RF_TX_10MS EQU D'100' ;10MS的最大时间,基值100us
;
D_RF_TX_0_H EQU 4 ;0的高电平时间.基值100us
D_RF_TX_0_L EQU 10 ;0的低电平时间.基值100us
;
D_RF_TX_1_H EQU 10 ;1的高电平时间.基值100us
D_RF_TX_1_L EQU 4 ;1的低电平时间.基值100us
;
D_RF_WAIT_TIME EQU 200 ;重新发送的等待时间,基值100us
;
D_RF_RELEASE_TIME EQU 12 ;单击发送延时,基值10ms
D_RF_TX_RELEASE_CNT EQU 3
R_RF_TX_FLAG EQU 0X36
#DEFINE F_RF_TX_10MS R_RF_TX_FLAG,0 ;10MS低电平发射完成标志, 1:发射完成. 0:发射未完成.
#DEFINE F_RF_EN R_RF_TX_FLAG,1 ;RF使能标志. 1:启动RF发送, 0:停止RF发送
#DEFINE F_RF_EN_START R_RF_TX_FLAG,2 ;RF发送标志. 1:RF发送 0:RF不发送
#DEFINE F_RF_TX_STATUS R_RF_TX_FLAG,3 ;RF发送电平状态. 1:发送低电平 0:发送高电平
#DEFINE F_RF_EN_STATUS R_RF_TX_FLAG,4 ;RF发送 状态. 1:使能发送 0:等待时间.
#DEFINE F_RF_EN_FLAG R_RF_TX_FLAG,5
RF_CTRL:
BTRSS F_RF_EN ;
LGOTO RF_CTRL_OFF_2
RF_CTRL_ON:
BTRSC F_RF_EN_FLAG
LGOTO RF_CTRL_ON_WAIT
;
BTRSC F_RF_EN_START
RET
;
BSR F_RF_EN_FLAG ;置等待标志.
;
MOVR R_RF_DATA1,0
MOVAR R_RF_TX_DATA1
;
MOVR R_RF_DATA1,0
XORIA 0XFF ;取反键值
MOVAR R_RF_TX_DATA2
;
BCR F_RF_TX_STATUS
MOVIA 16 ;2*8
MOVAR R_RF_TX_CNT
CLRR R_RF_TX_TIME
;
BCR P_RF_OUT ;拉低
;
BCR F_RF_TX_10MS ;
BSR F_RF_EN_START ;启动发送.
;
RET
;LGOTO RF_CTRL_OFF
RF_CTRL_ON_WAIT:
BTRSC F_RF_EN_START ;发送一次完成,START置0.
LGOTO RF_CTRL_ON_WAIT_1
;
BSR P_RF_OUT ;空闲状态 拉高
;
MOVIA D_RF_WAIT_TIME ;间隔时间 200*100us--20ms
SUBAR R_RF_WAIT_TIME,0
BTRSS C
RET
CLRR R_RF_WAIT_TIME
;
BCR F_RF_EN_FLAG
;
LGOTO RF_CTRL_OFF ;去判断计数次数
RF_CTRL_ON_WAIT_1:
CLRR R_RF_WAIT_TIME ;清除发送等待时间
BSR F_RF_EN_FLAG ;置等待标志.
RET
RF_CTRL_OFF:
MOVIA D_RF_TX_RELEASE_CNT
SUBAR R_RF_TX_RELEASE_CNT,0 ;R – ACC
BTRSS C
RET
LGOTO RF_CTRL_OFF_3
RF_CTRL_OFF_2:
;
CLRR R_RF_TX_RELEASE_CNT
;
BCR F_RF_EN
;
BCR F_RF_EN_FLAG
BCR F_RF_EN_START
BCR F_RF_TX_FREE ;
BSR P_RF_OUT ;结束,置1
RET
RF_CTRL_OFF_3:
BCR P_RF_OUT ;拉低
LGOTO RF_CTRL_OFF_2
;RF发送--中断调用--100us发送一次
RF_TX:
INCR R_RF_WAIT_TIME,1 ;等待时间
BTRSC Z
DECR R_RF_WAIT_TIME,1
;
BTRSS F_RF_EN_START ;发送标志位是否置起
RET
;
BTRSS F_RF_TX_10MS ;引导码
LGOTO RF_TX_10MS
;
CLRR R_RF_WAIT_TIME
INCR R_RF_TX_TIME,1
;
BTRSC F_RF_TX_STATUS ;数据状态标志位
LGOTO RF_TX_L
RF_TX_H: ;发送1bit的高电平
BTRSC R_RF_TX_DATA1,7 ;高位先发送---
LGOTO RF_TX_H_1
RF_TX_H_0:
MOVIA D_RF_TX_0_H ;“1”的低电平时间
LGOTO RF_TX_H_2
RF_TX_H_1:
MOVIA D_RF_TX_1_H ;“1”的高电平时间
RF_TX_H_2:
BSR P_RF_OUT
;
SUBAR R_RF_TX_TIME,0
BTRSS C
RET
CLRR R_RF_TX_TIME;
;
BSR F_RF_TX_STATUS ;一个bit,发送完高电平,再发送低电平.
RET
RF_TX_L: ;发送1bit的低电平
BTRSC R_RF_TX_DATA1,7 ;高位先发送
LGOTO RF_TX_L_1
RF_TX_L_0:
MOVIA D_RF_TX_0_L ;“0”的低电平时间
LGOTO RF_TX_L_2
RF_TX_L_1:
MOVIA D_RF_TX_1_L ;“0”的高电平时间
RF_TX_L_2:
BCR P_RF_OUT
;
SUBAR R_RF_TX_TIME,0
BTRSS C
RET
CLRR R_RF_TX_TIME;
;
RLR R_RF_TX_DATA2,1
RLR R_RF_TX_DATA1,1
;
BCR F_RF_TX_STATUS ;一个bit,发送完高电平,再发送低电平.
;
DECRSZ R_RF_TX_CNT,1 ;发送个数.
RET
;
BCR F_RF_EN_START ;发送停止.
CLRR R_RF_WAIT_TIME ;清除等待计数
INCR R_RF_TX_RELEASE_CNT,1 ;发送完成 计数一次。
RET
RF_TX_10MS:
BCR P_RF_OUT ;发送10ms 低电平 ------引导码
;
INCR R_RF_TX_TIME,1
;
MOVIA D_RF_TX_10MS
SUBAR R_RF_TX_TIME,0 ;100US 时间基值
BTRSS C
RET
;
CLRR R_RF_TX_TIME ;
;
BSR F_RF_TX_10MS ;10MS发送完成,置位该标志.并输出高电平
BSR P_RF_OUT ;拉高
;
RET
RF_TX_RET:
;BSR P_RF_OUT ;默认发送脚为高电平
RET
アイデアのデコード
タイマー割り込みの処理時間(80〜100us)後、割り込みで受信デコード機能を呼び出し、受信開始コードを判定します。Lレベルの判定時間は5MS <P_RF_RX <9MSの範囲内であり、開始信号があることを示しており、後でデータを受信するために判定することができます。それ以外の場合は、間違った開始信号であり、デコード機能を終了します。論理レベル1と0の判断はこのように扱うことができます。具体的な実装については、インターネット上の他のアイデアを見ることができます。