📄 yaokong.lst
字号:
A51 MACRO ASSEMBLER YAOKONG 10/29/2005 22:18:21 PAGE 1
MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN Yaokong.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Yaokong.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0096 1 JK1 EQU P1.6;
0095 2 JK2 EQU P1.5;
0094 3 JK3 EQU P1.4;
0093 4 JK4 EQU P1.3;
0092 5 JK5 EQU P1.2;
0091 6 JK6 EQU P1.1;
0097 7 IR EQU P1.7;
001A 8 BUFF EQU 1AH;
0020 9 SERIOR EQU 20H;
10
0000 11 ORG 0000H
12
0000 0150 13 AJMP MAIN
14
0023 15 ORG 0023H
0023 C299 16 CLR TI;
0025 C298 17 CLR RI;
0027 32 18 RETI;
19
20
0050 21 ORG 0050H
0050 22 MAIN:
0050 759850 23 MOV SCON,#50H;
0053 758920 24 MOV TMOD,#20H;
0056 758DF3 25 MOV TH1,#0F3H;//0xF3;2400
0059 758BF3 26 MOV TL1,#0F3H;
27 ;MOV SP,#7FH
005C D28E 28 SETB TR1;
29 ;SETB EA;
30 ;SETB ES;
31
005E 32 START:
005E 2097FD 33 JB IR,$;等待遥控信号出现
0061 7E0A 34 MOV R6,#10
0063 311A 35 SB: ACALL YS1;调用882微秒延时子程序
0065 2097F6 36 JB IR,START;延时882微秒后判断IR脚是否出现高电平如果有就退出解码程序
0068 DEF9 37 DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
38 ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
39 ;JB IR,START;/////////////////
006A 3097FD 40 JNB IR, $ ;等待高电平避开9毫秒低电平引导脉冲
006D 3123 41 ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码
006F 791A 42 MOV R1,#BUFF ;设定1AH为起始RAM区
0071 7A04 43 MOV R2,#4
0073 7B08 44 PP: MOV R3,#8
0075 45 JJJJ:
0075 2097E6 46 JB IR,START;/////////////////
0078 3097FD 47 JNB IR,$;等待地址码第一位的高电平信号
007B 12011A 48 LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
007E A297 49 MOV C,IR;将IR引脚此时的电平状态0或1存入C中
0080 5006 50 JNC UUU;如果为0就跳转到UUU
0082 3097D9 51 JNB IR,START;/////////////////
0085 2097FD 52 JB IR,$;如果为1就等待高电平信号结束
0088 E7 53 UUU: MOV A,@R1;将R1中地址的给A
0089 13 54 RRC A;将C中的值0或1移入A中的最低位
008A F7 55 MOV @R1,A;将A中的数暂时存放在R1中
008B DBE8 56 DJNZ R3,JJJJ;接收地址码的高8位
008D 09 57 INC R1;对R1中的值加1,换成下一个RAM
008E DAE3 58 DJNZ R2,PP ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中
A51 MACRO ASSEMBLER YAOKONG 10/29/2005 22:18:21 PAGE 2
59 ;以下对代码是否正确和定义进行识别
60
61
62 ;MOV A,1AH;比较高8位地址码
63 ;XRL A,#00H ;判断1AH的值是否等于00000002,相等的话A为0
64 ;JNZ START;如果不相等说明解码失败退出解码程序//JNZ
65 ;MOV A,1BH;比较低8位地址
66 ;XRL A,#0FFH ;再判断高8位地址是否正确
67 ;JNZ START;如果不相等说明解码失败退出解码程序
0090 E51C 68 MOV A,1CH;比较数据码和数据反码是否正确?
0092 F4 69 CPL A
0093 651D 70 XRL A,1DH ;将1CH的值取反后和1DH比较 不同则无效丢弃,核对数据是否准确
0095 70C7 71 JNZ START;如果不相等说明解码失败退出解码程序
72 ;CLR P1.6;解码成功发光二极管点亮指示!
73
0097 E51C 74 MOV A,1CH
0099 B41802 75 CJNE A,#18H,T12
009C B296 76 CPL JK1
009E 77 T12:
009E B41F02 78 CJNE A,#1FH,T13
00A1 B295 79 CPL JK2
80
00A3 81 T13:
00A3 B41E02 82 CJNE A,#1EH,T14
00A6 B294 83 CPL JK3
84
00A8 85 T14:
00A8 B41B02 86 CJNE A,#1BH,T15
00AB B293 87 CPL JK4
88
00AD 89 T15:
00AD B41402 90 CJNE A,#14H,T16
00B0 B292 91 CPL JK5
92
00B2 93 T16:
00B2 B41502 94 CJNE A,#15H,T17
00B5 B291 95 CPL JK6
96 ;//////////////////////////////////////////////////////////////////
00B7 97 T17:
00B7 B40F05 98 CJNE A,#0FH,T18;上
00BA 75200F 99 MOV SERIOR,#0FH
00BD 11E5 100 ACALL SEND
101
00BF 102 T18:
00BF B40505 103 CJNE A,#05H,T19;下
00C2 752005 104 MOV SERIOR,#05H
00C5 11E5 105 ACALL SEND
106
00C7 107 T19:
00C7 B40A05 108 CJNE A,#0AH,T20;左
00CA 75200A 109 MOV SERIOR,#0AH
00CD 11E5 110 ACALL SEND
111
00CF 112 T20:
00CF B40905 113 CJNE A,#09H,T21;右
00D2 752009 114 MOV SERIOR,#09H
00D5 11E5 115 ACALL SEND
116
117
00D7 118 T21:
00D7 B41D03 119 CJNE A,#1DH,T22
00DA 759080 120 MOV P1,#80H
121
122
00DD 123 T22:
00DD B41C03 124 CJNE A,#1CH,T23
A51 MACRO ASSEMBLER YAOKONG 10/29/2005 22:18:21 PAGE 3
00E0 7590FF 125 MOV P1,#0FFH
126
00E3 127 T23:
128
00E3 015E 129 AJMP START
130
131 ;判断在118毫秒内是否有连发码
132 ;AA:MOV R1,#25
133 ;XX:ACALL YS2
134 ;JNB IR,HH;跳转到判断连发代码是否正确的程序段
135 ;DJNZ R1,XX
136
137 ;连发码判断程序段-----------
138 ;HH:MOV R6,#4
139 ;S: ACALL YS1;调用882微秒延时子程序
140 ;JB IR,EXIT;延时882微秒后判断IR脚是否出现高电平如果有就退出解码程序
141 ;DJNZ R6, S;重复4次,目的是确认连发码的低电平信号波形
142 ;JNB IR, $ ;等待高电平
00E5 143 SEND:
00E5 74AA 144 MOV A,#0AAH
00E7 F599 145 MOV SBUF,A
00E9 3099FD 146 JNB TI,$ ;等待发送结束
00EC C299 147 CLR TI
00EE 7D70 148 MOV R5,#70H
00F0 DDFE 149 DJNZ R5,$
150
00F2 7455 151 MOV A,#55H
00F4 F599 152 MOV SBUF,A
00F6 3099FD 153 JNB TI,$ ;等待发送结束
00F9 C299 154 CLR TI
00FB 7D70 155 MOV R5,#70H
00FD DDFE 156 DJNZ R5,$
157
00FF 74A5 158 MOV A,#0A5H
0101 F599 159 MOV SBUF,A
0103 3099FD 160 JNB TI,$ ;等待发送结束
0106 C299 161 CLR TI
0108 7D70 162 MOV R5,#70H
010A DDFE 163 DJNZ R5,$
164
010C E520 165 MOV A,SERIOR
010E F599 166 MOV SBUF,A
0110 3099FD 167 JNB TI,$ ;等待发送结束
0113 C299 168 CLR TI
0115 7D70 169 MOV R5,#70H
0117 DDFE 170 DJNZ R5,$
171
0119 22 172 RET
173
174
175
176
011A 7C14 177 YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒
011C 7D14 178 D1: MOV R5,#20
011E DDFE 179 DJNZ R5,$
0120 DCFA 180 DJNZ R4,D1
0122 22 181 RET
182
0123 7C0A 183 YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒
0125 7DEB 184 D2: MOV R5,#235
0127 DDFE 185 DJNZ R5,$
0129 DCFA 186 DJNZ R4,D2
012B 22 187 RET
188 END
A51 MACRO ASSEMBLER YAOKONG 10/29/2005 22:18:21 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
BUFF . . . . . . . N NUMB 001AH A
D1 . . . . . . . . C ADDR 011CH A
D2 . . . . . . . . C ADDR 0125H A
IR . . . . . . . . B ADDR 0090H.7 A
JJJJ . . . . . . . C ADDR 0075H A
JK1. . . . . . . . B ADDR 0090H.6 A
JK2. . . . . . . . B ADDR 0090H.5 A
JK3. . . . . . . . B ADDR 0090H.4 A
JK4. . . . . . . . B ADDR 0090H.3 A
JK5. . . . . . . . B ADDR 0090H.2 A
JK6. . . . . . . . B ADDR 0090H.1 A
MAIN . . . . . . . C ADDR 0050H A
P1 . . . . . . . . D ADDR 0090H A
PP . . . . . . . . C ADDR 0073H A
RI . . . . . . . . B ADDR 0098H.0 A
SB . . . . . . . . C ADDR 0063H A
SBUF . . . . . . . D ADDR 0099H A
SCON . . . . . . . D ADDR 0098H A
SEND . . . . . . . C ADDR 00E5H A
SERIOR . . . . . . N NUMB 0020H A
START. . . . . . . C ADDR 005EH A
T12. . . . . . . . C ADDR 009EH A
T13. . . . . . . . C ADDR 00A3H A
T14. . . . . . . . C ADDR 00A8H A
T15. . . . . . . . C ADDR 00ADH A
T16. . . . . . . . C ADDR 00B2H A
T17. . . . . . . . C ADDR 00B7H A
T18. . . . . . . . C ADDR 00BFH A
T19. . . . . . . . C ADDR 00C7H A
T20. . . . . . . . C ADDR 00CFH A
T21. . . . . . . . C ADDR 00D7H A
T22. . . . . . . . C ADDR 00DDH A
T23. . . . . . . . C ADDR 00E3H A
TH1. . . . . . . . D ADDR 008DH A
TI . . . . . . . . B ADDR 0098H.1 A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
UUU. . . . . . . . C ADDR 0088H A
YS1. . . . . . . . C ADDR 011AH A
YS2. . . . . . . . C ADDR 0123H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -