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

📄 hw_test.lst

📁 本程序是基于51单片机的红外解码实验!!希望大家喜欢
💻 LST
字号:
A51 MACRO ASSEMBLER  HW_TEST                                                              01/19/2008 02:39:47 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     
                       2     
                       3     
                       4     
                       5     
                       6     
                       7     
                       8     
                       9     
                      10     
                      11     
                      12     
                      13       
0000                  14         ORG 0000H 
                      15      
0000                  16     MAIN:
0000 30A603           17         JNB    P2.6,IR        ;遥控扫描     
0003 020000           18         LJMP   MAIN           ;在正常无遥控信号时,一体化红外接收头输出是高电平,程序一直在循环
                      19      
                      20     ;=================================================
                      21     ;   解码程序
0006                  22     IR: 
                      23         ;以下对遥控信号的9000微秒的初始低电平信号的识别
0006 7E0A             24         MOV    R6,#10
0008                  25     IR_SB:
0008 1160             26         ACALL  DELAY882        ;调用882微秒延时子程序
000A 20A62B           27         JB     P2.6,IR_ERROR   ;延时882微秒后判断P2.2脚是否出现高电平如果有就退出解码程序
000D DEF9             28         DJNZ   R6,IR_SB        ;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
                      29      
                      30         ;识别连发码,和跳过4.5ma的高电平。
000F 30A6FD           31         JNB     P2.6, $         ;等待高电平避开9毫秒低电平引导脉冲
0012 116E             32         ACALL  DELAY2400
0014 30A61F           33         JNB     P2.6,IR_Rp    ;这里为低电平,认为是连发码信号,见图6。
0017 116E             34         ACALL  DELAY2400      ;延时4.74毫秒避开4.5毫秒的结果码
                      35      
                      36         ;以下32数据码的读取 ,0和1的识别 请看图2
0019 791A             37         MOV     R1,#1AH        ;设定1AH为起始RAM区
001B 7A04             38         MOV     R2,#4 
001D                  39     IR_4BYTE: 
001D 7B08             40         MOV     R3,#8
001F                  41     IR_8BIT:   
001F 30A6FD           42         JNB     P2.6,$         ;等待地址码第一位的高电平信号
0022 120060           43         LCALL  DELAY882        ;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
0025 A2A6             44         MOV    C,P2.6          ;将P2.2引脚此时的电平状态0或1存入C中
0027 5003             45         JNC     IR_8BIT_0      ;如果为0就跳转到IR_8BIT_0
0029 120067           46         LCALL  DELAY1000
002C                  47     IR_8BIT_0: 
002C E7               48         MOV    A,@R1           ;将R1中地址的给A
002D 13               49         RRC    A               ;将C中的值0或1移入A中的最低位
002E F7               50         MOV    @R1,A           ;将A中的数暂时存放在R1中
002F DBEE             51         DJNZ   R3,IR_8BIT      ;接收地址码的高8位
0031 09               52         INC    R1              ;对R1中的值加1,换下一个RAM
0032 DAE9             53         DJNZ   R2,IR_4BYTE     ;接收完16位地址码和8位数据码和8位数据,
                      54                                ;存放在1AH/1BH/1CH/1DH的RAM中
                      55          ;解码成功
0034 8005             56         JMP    IR_GOTO
                      57      
A51 MACRO ASSEMBLER  HW_TEST                                                              01/19/2008 02:39:47 PAGE     2

0036                  58     IR_Rp:
                      59         ;这里为重复码执行处
                      60         ;按住遥控按键时,每过108ms就到这里来
0036 8003             61         JMP    IR_GOTO
                      62      
0038                  63     IR_ERROR:
                      64         ;错语退出
0038 020000           65         LJMP   MAIN ;退出解码子程序
                      66      
                      67     ;=================================================
                      68     ;遥控执行部份
003B                  69     IR_GOTO:
                      70         ;这里还要判断1AH和1BH 两个系统码或用户码,用于识别不同的遥控器
                      71         ;MOV   A,1AH
                      72         ;CJNE  A,#xxH,IR_ERROR   ;用户码1不对则退出
                      73         ;MOV   A,1BH
                      74         ;CJNE  A,#xxH,IR_ERROR   ;用户码2不对则退出
                      75      
                      76      
                      77      
                      78         ;判断两个数据码是否相反
003B E51C             79         MOV    A,1CH
003D F4               80         CPL    A
003E B51DF7           81         CJNE   A,1DH,IR_ERROR    ;两个数据码不相反则退出
                      82         ;遥控执行部份
                      83         ;MOV   A,1DH             ;判断对应按键
                      84         ;CJNE  A,#xxH,$+6
                      85         ;LJMP  -à跳到对应按键执行处
                      86         ;CJNE  A,#xxH,$+6
                      87         ;LJMP  -à跳到对应按键执行处
                      88         ;.
0041 851D90           89         MOV     P1,1DH         ;将按键的键值通过P1口的8个LED显示出来!
0044 C2A4             90         CLR     P2.4          ;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
0046 12006E           91         LCALL  DELAY2400
0049 12006E           92         LCALL  DELAY2400
004C 12006E           93         LCALL  DELAY2400
004F D2A4             94         SETB   P2.4         ;蜂鸣器停止
                      95      
                      96         ;清除遥控值使连按失效
0051 751A00           97         MOV    1AH,#00H
0054 751B00           98         MOV    1BH,#00H
0057 751C00           99         MOV    1CH,#00H
005A 751D00          100         MOV    1DH,#00H 
005D 020000          101         LJMP   MAIN
                     102     ;=================================================
                     103     ; 延时子程序
                     104     ;=============================882
                     105     ;1.085x ((202x4)+5)=882
0060                 106     DELAY882:   
0060 7FCA            107         MOV R7,#202
0062                 108     DELAY882_A:
0062 00              109         NOP
0063 00              110         NOP
0064 DFFC            111         DJNZ   R7,DELAY882_A
0066 22              112     RET
                     113      
                     114     ;=============================1000
                     115     ;1.085x ((229x4)+5)=999.285
0067                 116     DELAY1000: 
0067 7FE5            117         MOV R7,#229
0069                 118     DELAY1000_A:
0069 00              119         NOP
006A 00              120         NOP
006B DFFC            121         DJNZ   R7,DELAY1000_A
006D 22              122     RET
                     123     ;=============================2400
A51 MACRO ASSEMBLER  HW_TEST                                                              01/19/2008 02:39:47 PAGE     3

                     124     ;1.085x ((245x9)+5)=2397.85
006E                 125     DELAY2400:   
006E 7FF5            126         MOV R7,#245
0070                 127     DELAY2400_A:
0070 00              128         NOP
0071 00              129         NOP
0072 00              130         NOP
0073 00              131         NOP
0074 00              132         NOP
0075 00              133         NOP
0076 00              134         NOP
0077 DFF7            135         DJNZ R7,DELAY2400_A
0079 22              136     RET
                     137     END
A51 MACRO ASSEMBLER  HW_TEST                                                              01/19/2008 02:39:47 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

DELAY1000. . . . .  C ADDR   0067H   A   
DELAY1000_A. . . .  C ADDR   0069H   A   
DELAY2400. . . . .  C ADDR   006EH   A   
DELAY2400_A. . . .  C ADDR   0070H   A   
DELAY882 . . . . .  C ADDR   0060H   A   
DELAY882_A . . . .  C ADDR   0062H   A   
IR . . . . . . . .  C ADDR   0006H   A   
IR_4BYTE . . . . .  C ADDR   001DH   A   
IR_8BIT. . . . . .  C ADDR   001FH   A   
IR_8BIT_0. . . . .  C ADDR   002CH   A   
IR_ERROR . . . . .  C ADDR   0038H   A   
IR_GOTO. . . . . .  C ADDR   003BH   A   
IR_RP. . . . . . .  C ADDR   0036H   A   
IR_SB. . . . . . .  C ADDR   0008H   A   
MAIN . . . . . . .  C ADDR   0000H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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