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

📄 hongwai.asm

📁 红外收发遥控的51单片机例子程序,基于STC89C52单片机,通用51汇编指令
💻 ASM
字号:


    ORG 0000H
    MAIN:
        JNB P3.2,IR ;遥控扫描
        LJMP  MAIN  ;主循环
    IR: ;解码开始
        MOV R6,#10
        
    IR_SB:
        ;CPL P1.0
        ;LCALL  DELAY882;延时882微秒
       
        
        MOV R7,#202
    DELAY882_A:;882us延时
        NOP
        NOP
        DJNZ R7,DELAY882_A
        
        
        JB  P3.2,IR_ERROR;数据错误退出解码
        DJNZ R6,IR_SB;重复10次检测
        ;识别连发码
        JNB P3.2,$;等待高电平避开9MS低电平引导脉冲

        ;LCALL DELAY2400
        MOV R7,#245
    DELAY2400_A:
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        DJNZ  R7,DELAY2400_A 
         
        JNB P3.2,IR_RP;这里为低电平,认为是连发码

        ;LCALL DELAY2400 ;延时4.74MS避开4.5MS的结果码
        MOV R7,#245
    DELAY2400_B:
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        DJNZ  R7,DELAY2400_B

        ;读取32位数据码
        MOV R1,#1AH;存放数据的起始地址
        MOV R2,#4
        
    IR_4BYTE:
        MOV R3,#8
    IR_8BIT:  
        JNB P3.2,$;等待地址码第一位的高电平信号

        ;LCALL  DELAY882;高电平来后开始延时882uS
        MOV R7,#202
    DELAY882_B:;882us延时
        NOP
        NOP
        DJNZ R7,DELAY882_B

        MOV   C,P3.2
        JNC IR_8BIT_0;延时后为为低电平则跳到IR_8BIT_0

        ;LCALL DELAY1000
         MOV R7,#229
    DELAY1000_A:
        NOP
        NOP
        DJNZ  R7,DELAY1000_A

    IR_8BIT_0:
        MOV A,@R1;将R1中的地址给累加器A
        RRC A;将C移入A的最低位
        MOV @R1,A;保存A中的值到RAM中
        DJNZ R3,IR_8BIT;接收地址码的高8位
        INC  R1;下一地址
        DJNZ  R2,IR_4BYTE;接收完成8位数据,8位数据码和16位地址码
        LJMP  IR_GOTO ;解码结束
     IR_RP:
        LJMP  IR_GOTO
     IR_ERROR:
        LJMP MAIN
     IR_GOTO:    ;执行部分
        MOV  A,1CH
        CPL  A
        CJNE A,1DH,IR_ERROR
        MOV  P1,1DH    ;接收到的数据显示到P1口
        MOV 1AH,#00H   ;接收区清0
        MOV 1BH,#00H
        MOV 1CH,#00H
        MOV 1DH,#00H
        LJMP MAIN;回到主循环
    
     ;DELAY1000:
       ; MOV R7,#229
     ;DELAY1000_A:
       ; NOP
       ; NOP
       ; DJNZ  R7,DELAY1000_A
    ; RET
     ;DELAY2400:
    ;    MOV R7,#245
    ; DELAY2400_A:
     ;   NOP
     ;   NOP
     ;   NOP
     ;   NOP
     ;   NOP
     ;   NOP
     ;   NOP
     ;   DJNZ  R7,DELAY2400_A
     ; RET
    ; DELAY882:  ;延时函数
     ;   MOV R7,#202
    ; DELAY882_A:;882us延时
       ; NOP
       ; NOP
        ;DJNZ R7,DELAY882_A
     ;RET
      END
      

⌨️ 快捷键说明

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