⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rf.asm

📁 51无线接收源码
💻 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 + -