?? rf.asm
字號:
;*****************************************************************************************
;名稱: GXD學習板演示程序(RF無線模塊接收)
;功能: 實現RF無線模塊接收,并有指示燈D8顯示
;版本:2008-03-06
;*****************************************************************************************
;硬件說明
;*****************************************************************************************
;單片機: 兼容MCS-51單片機/STC89C51
;晶振頻率: 12MHz
REM EQU P3.4
P0M1 EQU 84H
P0M2 EQU 85H
P1M1 EQU 91H
P1M2 EQU 92H
P2M1 EQU 0A4H
P2M2 EQU 0A5H
;接收正確位
RECEIVE BIT 20H.0
;因為當按住PT2262 的按鍵不放的時候PT2262 會把編碼不斷的送出
;設置ENABLE 位用來檢測按鍵有沒有放開過如果沒有放開則不再響應
ENABLE BIT 20H.1
T_OVER BIT 20H.2
ENABLE_DETE BIT 20H.3
REMOTING BIT 20H.4
;30H 32H:接收的8 位地址編碼
;31H 33H:接收的4 位數據編碼
;36H 37H:設定的8 位地址密碼
;其中以30H.0 和32.0 為例
;懸空: 30H.0=1 32H.0=0
;1: 30H.0=0 32H.0=0
;0: 30H.0=1 32H.0=1
;38H:輸出控制
ORG 0000H
LJMP BEGIN
ORG 0100H
BEGIN:
MOV SP,#60H
MOV P1M1,#0FFH ;設定P1 口為斯密特輸入狀態
MOV P1M2,#00H
MOV P0M1,#00H ;設定P0 口為上拉輸出配置
MOV P0M2,#0FFH
MOV P0,#00H
MOV P1,#0FFH
;編碼設定為:A0~A7 為懸空
MOV 36H,#0FFH
MOV 37H,#00H
LOOP:
LCALL REMOTE ;接收遙控碼
;;LCALL WORK ;控制輸出
JMP LOOP
REMOTE: CLR RECEIVE ; ;檢測50ms 內有沒有編碼接收 ;
MOV 3AH,#55 ;
REMOTEA: MOV 3BH,#250 ;
REMOTEB: JB REM,REMOTE0 ;有碼發送則跳轉
DJNZ 3BH,REMOTEB ;
DJNZ 3AH,REMOTEA ;
REMOTE_END_1: CLR ENABLE_DETE ;
REMOTE_END: CLR REMOTING ;清除探頭檢測標志
setb p1.0 ;gxd
RET ;
REMOTE0: JB ENABLE_DETE,REMOTE_END_1;按鍵沒有放開則返回
REMOTES:
MOV 34H,#12 ;接收12位編碼
;解碼 ;
;先找出接收碼的開頭即10ms 左右的高電平 ;
;設置高電平時間為8~12ms ;
;檢測和等待8ms 的低電平,70ms門限 ;
CLR T_OVER ;
MOV TH1,#00H ;
MOV TL1,#00H ;
SETB TR1 ;
REMOTE1: ;
MOV 3AH,#50 ;
REMOTE2: ;
MOV 3BH,#25 ;
REMOTE3: ;
JB REM,REMOTE1 ;
JB T_OVER,REMOTE_END ;
DJNZ 3BH,REMOTE3 ;
DJNZ 3AH,REMOTE2 ;
;
;等待在4ms 內接收到的高電平 ;
CLR T_OVER ;
MOV TH1,#0F1H ;
MOV TL1,#0F0H ;
SETB TR1 ;
REMOTE_4: ;
JB T_OVER,REMOTE_5 ;
JNB REM,REMOTE_4 ;
CLR TR1 ;
AJMP REMOTE6 ;
;超出12ms 接收錯誤返回 ;
REMOTE_5: ;
AJMP REMOTE_END ;
REMOTE6: ;
;等待550us 后采集接收信號 ;
clr p1.0;gxd
MOV 3AH,#00 ;
DJNZ 3AH,$ ;
;采集接收信號并記錄 ;
MOV C,REM ;
MOV A,33H ;
RLC A ;
MOV 33H,A ;
MOV A,31H ;
RLC A
MOV 31H,A ;
;等待第二個上升沿,限時1.5ms ;
CLR T_OVER ;
MOV TH1,#0FAH ;
MOV TL1,#099H ;
SETB TR1 ;
RM1: JB T_OVER,REMOTE_END ;
JB REM,RM1 ;
CLR TR1 ;
;
CLR T_OVER ;
MOV TH1,#0FAH ;
MOV TL1,#099H ;
SETB TR1 ;
RM2: JB T_OVER,REMOTE_END ;
JNB REM,RM2 ;
CLR TR1 ;
;等待550us 后采集接收信號 ;
MOV 3AH,#00 ;
DJNZ 3AH,$ ;
MOV C,REM ;
MOV A,30H ;
RLC A ;
MOV 30H,A ;
MOV A,32H ;
RLC A ;
MOV 32H,A ;
;等待第二個碼值的上升沿 ;
CLR T_OVER ;
MOV TH1,#0FAH ;
MOV TL1,#099H ;
SETB TR1 ;
RM3: JB T_OVER,RM5 ;
JB REM,RM3 ;
CLR TR1 ;
;
CLR T_OVER ;
MOV TH1,#0FAH ;
MOV TL1,#099H ;
SETB TR1 ;
RM4: JB T_OVER,RM5 ;
JNB REM,RM4 ;
CLR TR1 ;
DJNZ 34H,REMOTE6 ;
;把接收的編碼左移4 位將8 位密碼放在同一字節上
MOV 34H,#4 ;
AJMP REMOTE7 ;
RM5: AJMP REMOTE_END ;
REMOTE7: ;
CLR C ;
MOV A,33H ;
RLC A ;
MOV 33H,A ;
MOV A,31H ;
RLC A ;
MOV 31H,A ;
CLR C ;
MOV A,30H ;
RLC A ;
MOV 30H,A ;
MOV A,32H ;
RLC A ;
MOV 32H,A ;
DJNZ 34H,REMOTE7 ;
;把4 位數據編碼由高4 位移到低4 位上 ;
MOV A,33H ;
SWAP A ;
MOV 33H,A ;
MOV A,30H ;
SWAP A ;
MOV 30H,A ;
SETB ENABLE_DETE ;
SETB RECEIVE ;
clr p1.0 ;gxd ;
AJMP REMOTE_END_1 ;
END;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -