📄 hongwai.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 + -