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

📄 hongwai.lst

📁 单片机与遥控器的通信、红外编码及接收信号处理
💻 LST
字号:
A51 MACRO ASSEMBLER  HONGWAI                                                              04/15/2007 09:26:16 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN hongwai.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE hongwai.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     ;接收代码格式:
                       3     ;1.位代码:0    低电平0.56ms  高电平0.56ms 周期为1.12ms
                       4               ;1    低电平1.56ms  高电平1.68ms 周期为2.24ms
                       5     ;2.单发代码格式:起始码(低电平 9ms) 结果码(高电平 4.5ms) 接下来是低8位地址码,高8位地址码
                       6                     ;8位数据码,8位数据反码
                       7     ;3.连发代码格式:在发完32位地址数据码以后发送起始码(低电平 9ms) 结果码(高电平 2.5ms) 接下  
                                           ;来重复起始码,结果码
                       8       ;引起连发代码的原因是一直按键不放     
                       9     
                      10     
0000                  11          ORG 0000H
0000                  12         MAIN:
0000 30B203           13             JNB P3.2,IR ;遥控扫描
0003 020000           14             LJMP  MAIN  ;主循环
0006                  15         IR: ;解码开始
0006 7E0A             16             MOV R6,#10
0008                  17         IR_SB:
                      18             ;检验10次共8.8ms,即这8.8ms里P3.2都是低电平
0008 1153             19             ACALL  DELAY882;延时882微秒
000A 20B22B           20             JB  P3.2,IR_ERROR;数据错误退出解码
000D DEF9             21             DJNZ R6,IR_SB;重复10次检测
                      22             ;识别连发码
000F 30B2FD           23             JNB P3.2,$;等待高电平,证明之前有9ms的低电平起始码
0012 1161             24             ACALL DELAY2400
0014 30B21F           25             JNB P3.2,IR_RP;这时为低电平,表明这是连发码(一直按着按键发送),即9ms低电平,2.5ms
                             高电平,否则为结果码
0017 1161             26             ACALL DELAY2400 ;延时4.74MS避开4.5MS的结果码
                      27             ;读取32位数据码
0019 791A             28             MOV R1,#1AH;存放数据的起始地址
001B 7A04             29             MOV R2,#4
001D                  30         IR_4BYTE:
001D 7B08             31             MOV R3,#8
001F                  32         IR_8BIT:  
001F 30B2FD           33             JNB P3.2,$;等待第一位的高电平信号
0022 120053           34             LCALL  DELAY882;高电平来后开始延时0.88ms,大于0.56ms小于1.12ms
0025 A2B2             35             MOV   C,P3.2;这时读P3.2电平值并送C
0027 5003             36             JNC IR_8BIT_0;这一位为低电平则直接存这一位数据并读下一位数据,否则延时1ms再存数据并
                             读下一位数据
0029 12005A           37             LCALL DELAY1000
                      38         ;接收4个字节,32位数据并分别放入RAM中1AH,1BH,1CH,1DH中
002C                  39         IR_8BIT_0:
002C E7               40             MOV A,@R1;将R1中的值给累加器A
002D 13               41             RRC A;将C移入A的最低位
002E F7               42             MOV @R1,A;保存A中的值到RAM中
002F DBEE             43             DJNZ R3,IR_8BIT;跳转去接收下一位数据,直到接收完8位数据则接收下一字节
0031 09               44             INC  R1;下一地址
0032 DAE9             45             DJNZ  R2,IR_4BYTE;接收下一字节数据,直到接收完4个字节数据
0034 8005             46             JMP  IR_GOTO ;解码结束
0036                  47          IR_RP:
0036 8003             48             JMP  IR_GOTO
0038                  49          IR_ERROR:
0038 020000           50             LJMP MAIN
003B                  51          IR_GOTO:    ;执行部分
                      52             ;接收的第一,二,三,四字节分别为地址的低八位,地址的高八位,一字节数据,一字节数据
                             反码
003B E51C             53             MOV  A,1CH ;将接收到的第三字节,即一字节数据
003D F4               54             CPL  A
A51 MACRO ASSEMBLER  HONGWAI                                                              04/15/2007 09:26:16 PAGE     2

003E B51DF7           55             CJNE A,1DH,IR_ERROR;将接收的一字节数据取反并与第四字节数据比较,不相等则说明接收出

⌨️ 快捷键说明

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