ワイヤレスリモコン433MHzコード化送信

業務において、お客様が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の判断はこのように扱うことができます。具体的な実装については、インターネット上の他のアイデアを見ることができます。

 

 

おすすめ

転載: blog.csdn.net/u013830926/article/details/105727603