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

📄 hongwai.lst

📁 C51单片机红外遥控
💻 LST
字号:
A51 MACRO ASSEMBLER  HONGWAI                                                              12/21/2007 13:02:50 PAGE     1


MACRO ASSEMBLER A51 V8.00d
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

0000                   1            ORG 0000H 
0000 0105              2            AJMP MAIN;转入主程序
0003                   3            ORG 0003H ;外部中断P3.2脚INT0入口地址 
0003 0110              4            AJMP INT ;转入外部中断服务子程序(解码程序)
                       5            ;以下为主程序进行CPU中断方式设置
0005 D2AF              6     MAIN:  SETB EA ;打开CPU总中断请求
0007 D288              7            SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发
0009 D2A8              8            SETB EX0 ;打开INT0中断请求
                       9            ;以下对单片机的所有引脚进行初始化,全部设置成高电平
000B 75A0E7           10            MOV P2,#11100111B
000E 010E             11            AJMP $                                              
                      12     
0010 C2AF             13     INT:   CLR EA;暂时关闭CPU的所有中断请求
0012 7E0A             14            MOV R6,#10
0014 1169             15     SB:    ACALL YS1;调用882微秒延时子程序
0016 20B24D           16            JB P3.2,EXIT;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
0019 DEF9             17            DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序 
                      18     ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
001B 30B2FD           19            JNB P3.2, $;等待高电平避开9毫秒低电平引导脉冲
001E 1172             20            ACALL YS2;延时4.74毫秒避开4.5毫秒的结果码
0020 7F1A             21            MOV R7,#26;忽略前26位系统识别码 
                      22     
0022 30B2FD           23     JJJJA: JNB P3.2,$;等待地址码第一位的高电平信号
0025 120069           24            LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
0028 A2B2             25            MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
002A 5003             26            JNC UUUA;如果为0就跳转到UUUA
002C 12007B           27            LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
002F DFF1             28     UUUA:  DJNZ R7,JJJJA
                      29     
0031 791A             30            MOV R1,#1AH ;设定1AH为起始RAM区
0033 7A02             31            MOV R2,#2;接收从1AH到1BH的2个内存,用于存放操作码和操作反码 
0035 7B08             32     PP:    MOV R3,#8;每组数据为8位 
                      33     
0037 30B2FD           34     JJJJ:  JNB P3.2,$;等待地址码第一位的高电平信号
003A 120069           35            LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
003D A2B2             36            MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
003F 5003             37            JNC UUU;如果为0就跳转到UUU
0041 12007B           38            LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
0044 E7               39     UUU:   MOV A,@R1;将R1中地址的给A
0045 13               40            RRC A;将C中的值0或1移入A中的最低位
0046 F7               41            MOV @R1,A;将A中的数暂时存放在R1数值的内存中
0047 DBEE             42            DJNZ R3,JJJJ;接收满8位换一个内存
0049 09               43            INC R1;对R1中的值加1,换下一个RAM
004A DAE9             44            DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中
                      45     
004C E51A             46            MOV A,1AH
004E F4               47            CPL A;对1AH取反后和1BH比较
004F B51B14           48            CJNE A,1BH,EXIT;如果不等表示接收数据发生错误,放弃
                      49     
0052 851A90           50            MOV P1,1AH;将按键的键值通过P1口的8个LED显示出来!
0055 E51A             51            MOV A,1AH;将红外遥控器具体按键的键值发送到串口去
0057 F599             52            MOV SBUF,A;通过串口在电脑屏幕上显示出来
                      53     
0059 C2A5             54            CLR P2.5;蜂鸣器鸣响嘀嘀嘀的声音,表示解码成功
005B 120072           55            LCALL YS2
005E 120072           56            LCALL YS2
0061 120072           57            LCALL YS2
0064 D2A5             58            SETB P2.5;蜂鸣器停止
A51 MACRO ASSEMBLER  HONGWAI                                                              12/21/2007 13:02:50 PAGE     2

0066 D2AF             59     EXIT:  SETB EA ;允许中断
0068 32               60            RETI ;退出解码子程序
                      61     
0069 7C14             62     YS1:   MOV R4,#20 ;(占用R4/R5)延时子程序1,精确延时882微秒
006B                  63     D1:    ;MOV R5,#20  ;晶振为11.0592M时,请用 ; 注释掉此行
006B 7D13             64            MOV R5,#19  ;晶振为12M时,请用 ; 注释掉此行
006D DDFE             65            DJNZ R5,$
006F DCFA             66            DJNZ R4,D1 
0071 22               67            RET
                      68     
0072 7C0A             69     YS2:   MOV R4,#10 ;(占用R4/R5)延时子程序2,精确延时4740微秒
0074                  70     D2:    ;MOV R5,#235  ;晶振为11.0592M时,请用 ; 注释掉此行
0074 7DD8             71            MOV R5,#216  ;晶振为12M时,请用 ; 注释掉此行
0076 DDFE             72            DJNZ R5,$
0078 DCFA             73            DJNZ R4,D2 
007A 22               74            RET
                      75     
007B 7C02             76     YS3:   MOV R4,#2;(占用R4/R5)延时程序3,精确延时1000微秒
007D                  77     D3:    ;MOV R5,#248   ;晶振为11.0592M时,请用 ; 注释掉此行
007D 7DE4             78            MOV R5,#228  ;晶振为12M时,请用 ; 注释掉此行
007F DDFE             79            DJNZ R5,$
0081 DCFA             80            DJNZ R4,D3
0083 22               81            RET
                      82     
0084 7908             83     DELAY: MOV R1,#08H;(占用R1/R2/R3)延时子程序,12M晶振延时约250毫秒
0086 7AFA             84     L3:    MOV R2 ,#0FAH 
0088 7BFA             85     L1:    MOV R3 ,#0FAH 
008A DBFE             86     L2:    DJNZ R3 ,L2 
008C DAFA             87            DJNZ R2 ,L1
008E D9F6             88            DJNZ R1 ,L3 
0090 22               89            RET
                      90            END
A51 MACRO ASSEMBLER  HONGWAI                                                              12/21/2007 13:02:50 PAGE     3

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


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

D1 . . . . . . . .  C ADDR   006BH   A   
D2 . . . . . . . .  C ADDR   0074H   A   
D3 . . . . . . . .  C ADDR   007DH   A   
DELAY. . . . . . .  C ADDR   0084H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
EX0. . . . . . . .  B ADDR   00A8H.0 A   
EXIT . . . . . . .  C ADDR   0066H   A   
INT. . . . . . . .  C ADDR   0010H   A   
IT0. . . . . . . .  B ADDR   0088H.0 A   
JJJJ . . . . . . .  C ADDR   0037H   A   
JJJJA. . . . . . .  C ADDR   0022H   A   
L1 . . . . . . . .  C ADDR   0088H   A   
L2 . . . . . . . .  C ADDR   008AH   A   
L3 . . . . . . . .  C ADDR   0086H   A   
MAIN . . . . . . .  C ADDR   0005H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PP . . . . . . . .  C ADDR   0035H   A   
SB . . . . . . . .  C ADDR   0014H   A   
SBUF . . . . . . .  D ADDR   0099H   A   
UUU. . . . . . . .  C ADDR   0044H   A   
UUUA . . . . . . .  C ADDR   002FH   A   
YS1. . . . . . . .  C ADDR   0069H   A   
YS2. . . . . . . .  C ADDR   0072H   A   
YS3. . . . . . . .  C ADDR   007BH   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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