📄 ir-12864lcd.lst
字号:
0143 C2D4 230 CLR PSW.4
231
0145 7820 232 MOV R0,#IRCOM
0147 7904 233 MOV R1,#04H
0149 30B207 234 I1: JNB IRIN,I2 ;等待 IR 信号出现
014C 1201A4 235 LCALL CONV
014F D9F8 236 DJNZ R1,I1
0151 803E 237 JMP IR_OUT
0153 7C14 238 I2: MOV R4,#20
0155 5127 239 I20: CALL DEL
0157 DCFC 240 DJNZ R4,I20
0159 20B2ED 241 JB IRIN,I1 ;确认IR信号出现
A51 MACRO ASSEMBLER IR_12864LCD 03/29/2005 16:04:59 PAGE 5
015C 20B204 242 I21: JB IRIN,I3 ;等 IR 变为高电平
015F 5127 243 CALL DEL
0161 80F9 244 JMP I21
0163 7B00 245 I3: MOV R3,#0 ;8位数清为0
0165 30B204 246 LL: JNB IRIN,I4 ;等 IR 变为低电平
0168 5127 247 CALL DEL
016A 80F9 248 JMP LL
016C 20B204 249 I4: JB IRIN,I5 ;等 IR 变为高电平
016F 5127 250 CALL DEL
0171 80F9 251 JMP I4
0173 7A00 252 I5: MOV R2,#0 ;0.14ms 计数
0175 5127 253 L1: CALL DEL
0177 20B213 254 JB IRIN, N1 ;等 IR 变为高电平
255 ;IR=0,检查R2中的计数值
017A 7408 256 MOV A,#8
017C C3 257 CLR C
017D 9A 258 SUBB A,R2 ;判断高低位
259 ;IF C=0 BIT=0
017E E6 260 MOV A,@R0
017F 13 261 RRC A
0180 F6 262 MOV @R0,A ;处理完一位
0181 0B 263 INC R3
0182 BB08E0 264 CJNE R3,#8,LL ;需处理完8位
0185 7B00 265 MOV R3,#0
0187 08 266 INC R0
0188 B824DA 267 CJNE R0,#24H,LL ;收集到4字节了
018B 800B 268 JMP IR_SHOW
018D 0A 269 N1: INC R2
018E BA1EE4 270 CJNE R2,#30,L1 ;0.14ms 计数过长则时间到自动离开
271
0191 D0D0 272 IR_OUT: POP PSW
0193 D0E0 273 POP ACC
0195 D2AF 274 SETB EA
0197 32 275 RETI
276
277 ;------------------------------------------------------------------
0198 278 IR_SHOW:
0198 E522 279 MOV A,22H
019A F4 280 CPL A ;将22H取反后和23H比较
019B B52304 281 CJNE A,23H,IR_SHOW1 ;如果不等表示接收数据发生错误,放弃。
019E 31A4 282 CALL CONV
01A0 5109 283 CALL BEEP_BL ;蜂鸣器鸣响表示解码成功
01A2 284 IR_SHOW1:
01A2 80ED 285 JMP IR_OUT
286 ;===============================================
287 ;编码转换为 ASCII 码并显示
288 ;===============================================
01A4 289 CONV:
01A4 752605 290 MOV X,#5 ;设置显示起始位置
01A7 E522 291 MOV A,22H
01A9 54F0 292 ANL A,#0F0H ;取出高四位二进制数
01AB C4 293 SWAP A ;高四位与低四位互换
01AC C0E0 294 PUSH ACC ;压入堆栈
01AE C3 295 CLR C ;C=0
01AF 940A 296 SUBB A,#0AH ;减10
01B1 D0E0 297 POP ACC ;弹出堆栈
01B3 4002 298 JC ASCII0 ;该数小于10,转ASCII0
01B5 2407 299 ADD A,#07H ;大于10的数加上37H
01B7 2430 300 ASCII0: ADD A,#30H ;小于10的数加上30H
01B9 8526F0 301 MOV B,X
01BC 3121 302 CALL LCDP3
303
01BE E522 304 MOV A,22H
01C0 540F 305 ANL A,#0FH ;取出低四位二进制数
01C2 C0E0 306 PUSH ACC
01C4 C3 307 CLR C
A51 MACRO ASSEMBLER IR_12864LCD 03/29/2005 16:04:59 PAGE 6
01C5 940A 308 SUBB A,#0AH ;减10
01C7 D0E0 309 POP ACC
01C9 4002 310 JC ASCII1 ;该数小于10,转ASCII0
01CB 2407 311 ADD A,#07H ;大于10的数加上37H
01CD 2430 312 ASCII1: ADD A,#30H ;小于10的数加上30H
01CF 0526 313 INC X
01D1 8526F0 314 MOV B,X
01D4 3121 315 CALL LCDP3
316
01D6 752605 317 MOV X,#5 ;设置显示起始位置
01D9 E523 318 MOV A,23H ;反码
01DB 54F0 319 ANL A,#0F0H ;取出高四位二进制数
01DD C4 320 SWAP A ;高四位与低四位互换
01DE C0E0 321 PUSH ACC ;压入堆栈
01E0 C3 322 CLR C ;C=0
01E1 940A 323 SUBB A,#0AH ;减10
01E3 D0E0 324 POP ACC ;弹出堆栈
01E5 4002 325 JC ASCII2 ;该数小于10,转ASCII0
01E7 2407 326 ADD A,#07H ;大于10的数加上37H
01E9 2430 327 ASCII2: ADD A,#30H ;小于10的数加上30H
01EB 8526F0 328 MOV B,X
01EE 312E 329 CALL LCDP4
330
01F0 E523 331 MOV A,23H
01F2 540F 332 ANL A,#0FH ;取出低四位二进制数
01F4 C0E0 333 PUSH ACC
01F6 C3 334 CLR C
01F7 940A 335 SUBB A,#0AH ;减10
01F9 D0E0 336 POP ACC
01FB 4002 337 JC ASCII3 ;该数小于10,转ASCII0
01FD 2407 338 ADD A,#07H ;大于10的数加上37H
01FF 2430 339 ASCII3: ADD A,#30H ;小于10的数加上30H
0201 0526 340 INC X
0203 8526F0 341 MOV B,X
0206 312E 342 CALL LCDP4
0208 22 343 RET
344 ;===================================================
345 ;蜂鸣器响一声子程序
346 ;===================================================
0209 347 BEEP_BL:
0209 7E64 348 MOV R6,#100
020B 5116 349 BL1: CALL DEX1
020D B2B7 350 CPL BEEP
020F DEFA 351 DJNZ R6,BL1
0211 7D19 352 MOV R5,#25
0213 511C 353 CALL DELAY
0215 22 354 RET
0216 7FB4 355 DEX1: MOV R7,#180
0218 00 356 DEX2: NOP
0219 DFFD 357 DJNZ R7,DEX2
021B 22 358 RET
021C 359 DELAY: ;延时R5×10MS
021C 7E32 360 MOV R6,#50
021E 7F64 361 D1: MOV R7,#100
0220 DFFE 362 DJNZ R7,$
0222 DEFA 363 DJNZ R6,D1
0224 DDF6 364 DJNZ R5,DELAY
0226 22 365 RET
366 ;===============================================
367 ; DELAY R5*0.14MS
0227 368 DEL:
0227 7D01 369 MOV R5,#1 ;IR解码使用
0229 7E02 370 DEL0: MOV R6,#2
022B 7F20 371 DEL1: MOV R7,#32
022D DFFE 372 DEL2: DJNZ R7,DEL2
022F DEFA 373 DJNZ R6,DEL1
A51 MACRO ASSEMBLER IR_12864LCD 03/29/2005 16:04:59 PAGE 7
0231 DDF6 374 DJNZ R5,DEL0
0233 22 375 RET
376
0234 377 DELAY1: ;延时5MS
0234 7E19 378 MOV R6,#25
0236 7F64 379 DL2: MOV R7,#100
0238 DFFE 380 DJNZ R7,$
023A DEFA 381 DJNZ R6,DL2
023C 22 382 RET
383 ;================================================
384 END
A51 MACRO ASSEMBLER IR_12864LCD 03/29/2005 16:04:59 PAGE 8
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
ASCII0 . . . . . . C ADDR 01B7H A
ASCII1 . . . . . . C ADDR 01CDH A
ASCII2 . . . . . . C ADDR 01E9H A
ASCII3 . . . . . . C ADDR 01FFH A
B. . . . . . . . . D ADDR 00F0H A
BEEP . . . . . . . B ADDR 00B0H.7 A
BEEP_BL. . . . . . C ADDR 0209H A
BL1. . . . . . . . C ADDR 020BH A
CL1. . . . . . . . C ADDR 0099H A
CLR_LINE . . . . . C ADDR 0097H A
CONV . . . . . . . C ADDR 01A4H A
D1 . . . . . . . . C ADDR 021EH A
DEL. . . . . . . . C ADDR 0227H A
DEL0 . . . . . . . C ADDR 0229H A
DEL1 . . . . . . . C ADDR 022BH A
DEL2 . . . . . . . C ADDR 022DH A
DELAY. . . . . . . C ADDR 021CH A
DELAY0 . . . . . . C ADDR 011CH A
DELAY1 . . . . . . C ADDR 0234H A
DEX1 . . . . . . . C ADDR 0216H A
DEX2 . . . . . . . C ADDR 0218H A
DL2. . . . . . . . C ADDR 0236H A
EA . . . . . . . . B ADDR 00A8H.7 A
EN . . . . . . . . B ADDR 00A0H.2 A
FILL . . . . . . . C ADDR 008BH A
I1 . . . . . . . . C ADDR 0149H A
I2 . . . . . . . . C ADDR 0153H A
I20. . . . . . . . C ADDR 0155H A
I21. . . . . . . . C ADDR 015CH A
I3 . . . . . . . . C ADDR 0163H A
I4 . . . . . . . . C ADDR 016CH A
I5 . . . . . . . . C ADDR 0173H A
IE . . . . . . . . D ADDR 00A8H A
IRCOM. . . . . . . N NUMB 0020H A
IRIN . . . . . . . B ADDR 00B0H.2 A
IR_IN. . . . . . . C ADDR 013BH A
IR_OUT . . . . . . C ADDR 0191H A
IR_SHOW. . . . . . C ADDR 0198H A
IR_SHOW1 . . . . . C ADDR 01A2H A
L1 . . . . . . . . C ADDR 0175H A
LC1. . . . . . . . C ADDR 0091H A
LCDP3. . . . . . . C ADDR 0121H A
LCDP4. . . . . . . C ADDR 012EH A
LCD_SHOW . . . . . C ADDR 0051H A
LINE1. . . . . . . C ADDR 0054H A
LINE2. . . . . . . C ADDR 0060H A
LINE3. . . . . . . C ADDR 006FH A
LINE4. . . . . . . C ADDR 007EH A
LINE5. . . . . . . C ADDR 0090H A
LL . . . . . . . . C ADDR 0165H A
LOOP0. . . . . . . C ADDR 000CH A
LOOP1. . . . . . . C ADDR 0028H A
LOOP2. . . . . . . C ADDR 002FH A
LOOP3. . . . . . . C ADDR 0034H A
MAIN . . . . . . . C ADDR 0005H A
MENU1. . . . . . . C ADDR 00A0H A
MENU1A . . . . . . C ADDR 00A8H A
MENU2. . . . . . . C ADDR 00B9H A
MENU2A . . . . . . C ADDR 00C1H A
A51 MACRO ASSEMBLER IR_12864LCD 03/29/2005 16:04:59 PAGE 9
MENU3. . . . . . . C ADDR 00D2H A
MENU3A . . . . . . C ADDR 00DAH A
MENU4. . . . . . . C ADDR 00EAH A
MENU4A . . . . . . C ADDR 00F2H A
N1 . . . . . . . . C ADDR 018DH A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
PSB. . . . . . . . B ADDR 00A0H.3 A
PSW. . . . . . . . D ADDR 00D0H A
RELAY. . . . . . . B ADDR 0090H.3 A
RS . . . . . . . . B ADDR 00A0H.0 A
RST. . . . . . . . B ADDR 00A0H.5 A
RW . . . . . . . . B ADDR 00A0H.1 A
SET_LCD. . . . . . C ADDR 0036H A
SP . . . . . . . . D ADDR 0081H A
TCON . . . . . . . D ADDR 0088H A
WCOM . . . . . . . C ADDR 0102H A
WDATA. . . . . . . C ADDR 010FH A
X. . . . . . . . . N NUMB 0026H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -