📄 ir-12864lcd.lst
字号:
0155 5127 220 I20: CALL DEL
0157 DCFC 221 DJNZ R4,I20
0159 20B2ED 222 JB IRIN,I1 ;确认IR信号出现
015C 20B204 223 I21: JB IRIN,I3 ;等 IR 变为高电平
015F 5127 224 CALL DEL
0161 80F9 225 JMP I21
0163 7B00 226 I3: MOV R3,#0 ;8位数清为0
0165 30B204 227 LL: JNB IRIN,I4 ;等 IR 变为低电平
0168 5127 228 CALL DEL
016A 80F9 229 JMP LL
016C 20B204 230 I4: JB IRIN,I5 ;等 IR 变为高电平
016F 5127 231 CALL DEL
0171 80F9 232 JMP I4
0173 7A00 233 I5: MOV R2,#0 ;0.14ms 计数
0175 5127 234 L1: CALL DEL
0177 20B213 235 JB IRIN, N1 ;等 IR 变为高电平
236 ;IR=0,检查R2中的计数值
017A 7408 237 MOV A,#8
017C C3 238 CLR C
017D 9A 239 SUBB A,R2 ;判断高低位
240 ;IF C=0 BIT=0
017E E6 241 MOV A,@R0
017F 13 242 RRC A
A51 MACRO ASSEMBLER IR_12864LCD 10/12/2006 09:00:05 PAGE 5
0180 F6 243 MOV @R0,A ;处理完一位
0181 0B 244 INC R3
0182 BB08E0 245 CJNE R3,#8,LL ;需处理完8位
0185 7B00 246 MOV R3,#0
0187 08 247 INC R0
0188 B824DA 248 CJNE R0,#24H,LL ;收集到4字节了
018B 800B 249 JMP IR_SHOW
018D 0A 250 N1: INC R2
018E BA1EE4 251 CJNE R2,#30,L1 ;0.14ms 计数过长则时间到自动离开
252
0191 D0D0 253 IR_OUT: POP PSW
0193 D0E0 254 POP ACC
0195 D2AF 255 SETB EA
0197 32 256 RETI
257
258 ;------------------------------------------------------------------
0198 259 IR_SHOW:
0198 E522 260 MOV A,22H
019A F4 261 CPL A ;将22H取反后和23H比较
019B B52304 262 CJNE A,23H,IR_SHOW1 ;如果不等表示接收数据发生错误,放弃。
019E 31A4 263 CALL CONV
01A0 5109 264 CALL BEEP_BL ;蜂鸣器鸣响表示解码成功
01A2 265 IR_SHOW1:
01A2 80ED 266 JMP IR_OUT
267 ;===============================================
268 ;编码转换为 ASCII 码并显示
269 ;===============================================
01A4 270 CONV:
01A4 752605 271 MOV X,#5 ;设置显示起始位置
01A7 E522 272 MOV A,22H
01A9 54F0 273 ANL A,#0F0H ;取出高四位二进制数
01AB C4 274 SWAP A ;高四位与低四位互换
01AC C0E0 275 PUSH ACC ;压入堆栈
01AE C3 276 CLR C ;C=0
01AF 940A 277 SUBB A,#0AH ;减10
01B1 D0E0 278 POP ACC ;弹出堆栈
01B3 4002 279 JC ASCII0 ;该数小于10,转ASCII0
01B5 2407 280 ADD A,#07H ;大于10的数加上37H
01B7 2430 281 ASCII0: ADD A,#30H ;小于10的数加上30H
01B9 8526F0 282 MOV B,X
01BC 3121 283 CALL LCDP3
284
01BE E522 285 MOV A,22H
01C0 540F 286 ANL A,#0FH ;取出低四位二进制数
01C2 C0E0 287 PUSH ACC
01C4 C3 288 CLR C
01C5 940A 289 SUBB A,#0AH ;减10
01C7 D0E0 290 POP ACC
01C9 4002 291 JC ASCII1 ;该数小于10,转ASCII0
01CB 2407 292 ADD A,#07H ;大于10的数加上37H
01CD 2430 293 ASCII1: ADD A,#30H ;小于10的数加上30H
01CF 0526 294 INC X
01D1 8526F0 295 MOV B,X
01D4 3121 296 CALL LCDP3
297
01D6 752605 298 MOV X,#5 ;设置显示起始位置
01D9 E523 299 MOV A,23H ;反码
01DB 54F0 300 ANL A,#0F0H ;取出高四位二进制数
01DD C4 301 SWAP A ;高四位与低四位互换
01DE C0E0 302 PUSH ACC ;压入堆栈
01E0 C3 303 CLR C ;C=0
01E1 940A 304 SUBB A,#0AH ;减10
01E3 D0E0 305 POP ACC ;弹出堆栈
01E5 4002 306 JC ASCII2 ;该数小于10,转ASCII0
01E7 2407 307 ADD A,#07H ;大于10的数加上37H
01E9 2430 308 ASCII2: ADD A,#30H ;小于10的数加上30H
A51 MACRO ASSEMBLER IR_12864LCD 10/12/2006 09:00:05 PAGE 6
01EB 8526F0 309 MOV B,X
01EE 312E 310 CALL LCDP4
311
01F0 E523 312 MOV A,23H
01F2 540F 313 ANL A,#0FH ;取出低四位二进制数
01F4 C0E0 314 PUSH ACC
01F6 C3 315 CLR C
01F7 940A 316 SUBB A,#0AH ;减10
01F9 D0E0 317 POP ACC
01FB 4002 318 JC ASCII3 ;该数小于10,转ASCII0
01FD 2407 319 ADD A,#07H ;大于10的数加上37H
01FF 2430 320 ASCII3: ADD A,#30H ;小于10的数加上30H
0201 0526 321 INC X
0203 8526F0 322 MOV B,X
0206 312E 323 CALL LCDP4
0208 22 324 RET
325 ;===================================================
326 ;蜂鸣器响一声子程序
327 ;===================================================
0209 328 BEEP_BL:
0209 7E64 329 MOV R6,#100
020B 5116 330 BL1: CALL DEX1
020D B2B7 331 CPL BEEP
020F DEFA 332 DJNZ R6,BL1
0211 7D19 333 MOV R5,#25
0213 511C 334 CALL DELAY
0215 22 335 RET
0216 7FB4 336 DEX1: MOV R7,#180
0218 00 337 DEX2: NOP
0219 DFFD 338 DJNZ R7,DEX2
021B 22 339 RET
021C 340 DELAY: ;延时R5×10MS
021C 7E32 341 MOV R6,#50
021E 7F64 342 D1: MOV R7,#100
0220 DFFE 343 DJNZ R7,$
0222 DEFA 344 DJNZ R6,D1
0224 DDF6 345 DJNZ R5,DELAY
0226 22 346 RET
347 ;===============================================
348 ; DELAY R5*0.14MS
0227 349 DEL:
0227 7D01 350 MOV R5,#1 ;IR解码使用
0229 7E02 351 DEL0: MOV R6,#2
022B 7F20 352 DEL1: MOV R7,#32
022D DFFE 353 DEL2: DJNZ R7,DEL2
022F DEFA 354 DJNZ R6,DEL1
0231 DDF6 355 DJNZ R5,DEL0
0233 22 356 RET
357
0234 358 DELAY1: ;延时5MS
0234 7E19 359 MOV R6,#25
0236 7F64 360 DL2: MOV R7,#100
0238 DFFE 361 DJNZ R7,$
023A DEFA 362 DJNZ R6,DL2
023C 22 363 RET
364 ;================================================
365 END
A51 MACRO ASSEMBLER IR_12864LCD 10/12/2006 09:00:05 PAGE 7
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 10/12/2006 09:00:05 PAGE 8
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 + -