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

📄 remote.asm

📁 《51单片机应用开发案例精选配套源代码
💻 ASM
字号:
;----------------------------------
;                   单片机无线遥控实例
;          功能:通过无线遥控实现对继电器的控制
;-----------------------------------
ORG 0000H
LJMP START

START:
    MOV SP,#50H               ; 将堆栈起点设为60H
    CLR P1.0                  
    CLR P1.1
    CLR P1.2
    CLR P1.3
    NOP

    CLR A                     ; 将0-9的显示情况都走一遍
SHOW_LOOP:                       
    CALL SHOW_SEG
    INC A
    CJNE A,#10,SHOW_LOOP
    
    CLR A
    CALL SHOW_SEG              ; 清除显示

MAIN:
   SETB P3.2                   ; 等待信号来
   LCALL RX                    ; 进入等待、接收子程序
   JMP MAIN

OP_RELAY:
;---------------------------
; 操作函数,根据输入的值进行对应的操作,参数从r1输入
;---------------------------
    MOV A,R1
    ANL A,#80H      ; 判断输入值是否80h
    JNZ OP_NEXT1  
    MOV A,#1        ; 显示1
    CALL SHOW_SEG
    SETB P1.3       ; 对应的LED亮  
    MOV R5,#0FFH  
    CALL DELAY      ; 延时
    CLR P1.3        ; 对应的LED灭
    JMP OP_OUT
OP_NEXT1:
    MOV A,R1
    ANL A,#20H      ; 判断输入值是否20h
    JNZ OP_NEXT2
    MOV A,#3        ; 显示3
    CALL SHOW_SEG
    SETB P1.1       ; 对应的LED亮  
    MOV R5,#0FFH
    CALL DELAY      ; 延时
    CLR P1.1        ; 对应的LED灭
    JMP OP_OUT
OP_NEXT2:
    MOV A,R1
    ANL A,#10H      ; 判断输入值是否10h
    JNZ OP_NEXT3
    MOV A,#2        ; 显示2
    CALL SHOW_SEG
    SETB P1.2       ; 对应的LED亮  
    MOV R5,#0FFH
    CALL DELAY      ; 延时
    CLR P1.2        ; 对应的LED灭
    JMP OP_OUT
OP_NEXT3:
    MOV A,R1
    ANL A,#40H      ; 判断输入值是否40h
    JNZ OP_OUT
    MOV A,#4        ; 显示4
    CALL SHOW_SEG
    SETB P1.0       ; 对应的LED亮  
    MOV R5,#0FFH
    CALL DELAY      ; 延时
    CLR P1.0        ; 对应的LED灭
OP_OUT:
    RET

SHOW_SEG:
;--------------------------
; 显示函数,参数从A输入
;--------------------------
    CJNE A,#0,SHOW_1 ; 接收到0的显示  
    CLR P3.5
    CLR P3.4
    CLR P3.3
    CLR P3.7
    JMP SHOW_OUT
SHOW_1:            ; 接收到1的显示  
    CJNE A,#0,SHOW_2  
    CLR P3.5
    CLR P3.4
    CLR P3.3
    SETB P3.7
    JMP SHOW_OUT
SHOW_2:              ; 接收到2的显示                
    CJNE A,#0,SHOW_3
    CLR P3.5
    CLR P3.4
    SETB P3.3
    CLR P3.7
    JMP SHOW_OUT
SHOW_3:            ; 接收到3的显示  
    CJNE A,#0,SHOW_4
    CLR P3.5
    CLR P3.4
    SETB P3.3
    SETB P3.7
    JMP SHOW_OUT
SHOW_4:            ; 接收到4的显示  
    CJNE A,#0,SHOW_5
    CLR P3.5
    SETB P3.4
    CLR P3.3
    CLR P3.7
    JMP SHOW_OUT
SHOW_5:            ; 接收到5的显示  
    CJNE A,#0,SHOW_6
    CLR P3.5
    SETB P3.4
    CLR P3.3
    SETB P3.7
    JMP SHOW_OUT
SHOW_6:            ; 接收到6的显示  
    CJNE A,#0,SHOW_7
    CLR P3.5
    SETB P3.4
    SETB P3.3
    CLR P3.7
    JMP SHOW_OUT
SHOW_7:            ; 接收到7的显示  
    CJNE A,#0,SHOW_8
    CLR P3.5
    SETB P3.4
    SETB P3.3
    SETB P3.7
    JMP SHOW_OUT
SHOW_8:            ; 接收到8的显示  
    CJNE A,#0,SHOW_9
    SETB P3.5
    CLR P3.4
    CLR P3.3
    CLR P3.7
    JMP SHOW_OUT
SHOW_9:            ; 接收到9的显示  
    SETB P3.5
    CLR P3.4
    CLR P3.3
    SETB P3.7
SHOW_OUT:
    RET

RX:
;---------------------------
; 接收操作函数,读入无线模块接收的数据
;---------------------------
    MOV A,P3
    ANL A,#04H        ; 判断是否有信号来
    JNZ RX_OUT
    MOV A,P1
    MOV R1,A          ; 接收数据
RX_WAIT:
    MOV A,P3
    ANL A,#04H        
    CJNE A,#04,RX_WAIT   ; 判断是否完成
    CALL OP_RELAY 
RX_OUT:
    RET

DELAY:
;------------------
; 延时函数,参数从R5输入
;-------------------
   MOV R4,#10
DELAY_LOOP:
   DJNZ R4,DELAY_LOOP
   DJNZ R5,DELAY
   RET
 
   END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -