📄 lll.lst
字号:
246: 01E2 71 CC ACALL DELAY
247: 01E4 75 80 0C MOV P0,#0CH ; 开显示
248: 01E7 71 A9 ACALL ENABLE
249: 01E9 20 B1 E3 JB CHECK,ERR1 ; 检修完毕??
250: 01EC 71 CC ACALL DELAY
251: 01EE 20 B1 DE JB CHECK,ERR1
252: 01F1 71 CC ACALL DELAY
253: 01F3 51 23 ERR4: ACALL DISP ; 显示当前
254: 01F5 75 80 08 MOV P0,#08H ; 关显示
255: 01F8 71 A9 ACALL ENABLE
256: 01FA 71 CC ACALL DELAY ; ...
257: 01FC 71 CC ACALL DELAY
258: 01FE 71 CC ACALL DELAY ; ...
259: 0200 71 CC ACALL DELAY
260: 0202 71 CC ACALL DELAY
261: 0204 71 CC ACALL DELAY ; ...
262: 0206 71 CC ACALL DELAY
263: 0208 75 80 0C MOV P0,#0CH ; 开显示
264: 020B 71 A9 ACALL ENABLE
265: 020D 30 B1 E3 JNB CHECK,ERR4 ; 等待键释放
266: 0210 75 65 00 MOV 65H,#00H ; 检修完毕信号送65H
267: 0213 75 64 09 MOV 64H,#9
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 6
Line I Addr Code Source
268: 0216 75 30 01 MOV 30H,#1
269: 0219 78 31 MOV R0,#31H ; 一楼信号送R0
270: 021B 76 00 CLY: MOV @R0,#00H ; 清除该信号
271: 021D 08 INC R0 ; 加1后送R0
272: 021E D5 64 FA DJNZ 64H,CLY ; 自减循环8次
273: 0221 01 30 AJMP MAIN
274: ;=========================================
275: 0223 DISP: ; 显示子程序
276: 0223 BA 00 05 CJNE R2,#00H,DISP1 ; 楼层信号判断
277: 0226 90 03 EF Mov dptr,#table2 ; 送向下显示代码
278: 0229 80 13 SJMP DISP2 ; 跳显示主程序
279: 022B BA 11 05 DISP1: CJNE R2,#11H,DISP3 ; 楼层信号判断
280: 022E 90 03 DE Mov dptr,#table1 ; 送向上显示代码
281: 0231 80 0B SJMP DISP2 ; 跳显示主程序
282: 0233 BA 33 05 DISP3: CJNE R2,#33H,DISP4
283: 0236 90 04 99 MOV DPTR,#TABLE00 ; 楼层信号判断
284: 0239 41 3E AJMP DISP2
285: 023B 90 04 00 DISP4: MOV DPTR,#TABLE3
286: 023E 79 00 DISP2: MOV R1,#00H ; 送代码指针到R1
287: 0240 71 B4 Acall write1 ; 调1602读数据子程序
288: 0242 75 80 C0 mov p0,#0c0h ; 显示位置设置
289: 0245 71 A9 Acall enable ; 调1602写数据子程序
290: 0247 E5 30 MOV A,30H ; 当前楼层信号送A
291: 0249 B4 01 02 CJNE A,#1,NT1 ; 等于1显示1F
292: 024C 80 1E SJMP DISP01
293: 024E B4 02 02 NT1: CJNE A,#2,NT2 ; 等于2显示2F
294: 0251 80 1E SJMP DISP02
295: 0253 B4 03 02 NT2: CJNE A,#3,NT3 ; 等于3显示3F
296: 0256 80 1E SJMP DISP03
297: 0258 B4 04 02 NT3: CJNE A,#4,NT4 ; 等于4显示4F
298: 025B 80 1E SJMP DISP04
299: 025D B4 05 02 NT4: CJNE A,#5,NT5 ; 等于5显示5F
300: 0260 80 1E SJMP DISP05
301: 0262 B4 06 02 NT5: CJNE A,#6,NT6 ; 等于6显示6F
302: 0265 80 1E SJMP DISP06
303: 0267 B4 07 25 NT6: CJNE A,#7,NT7 ; 等于7显示7F
304: 026A 80 1E SJMP DISP07
305: 026C 90 04 11 DISP01: mov dptr,#table10 ; 1楼显示代码首地址
306: 026F 80 29 SJMP EXP
307: 0271 90 04 22 DISP02: MOV DPTR,#TABLE20 ; 2楼显示代码首地址
308: 0274 80 24 SJMP EXP
309: 0276 90 04 33 DISP03: MOV DPTR,#TABLE30 ; 3楼显示代码首地址
310: 0279 80 1F SJMP EXP
311: 027B 90 04 44 DISP04: MOV DPTR,#TABLE40 ; 4楼显示代码首地址
312: 027E 80 1A SJMP EXP
313: 0280 90 04 55 DISP05: MOV DPTR,#TABLE50 ; 5楼显示代码首地址
314: 0283 80 15 SJMP EXP
315: 0285 90 04 66 DISP06: MOV DPTR,#TABLE60 ; 6楼显示代码首地址
316: 0288 80 10 SJMP EXP
317: 028A 90 04 77 DISP07: MOV DPTR,#TABLE70 ; 7楼显示代码首地址
318: 028D 80 0B SJMP EXP ; 转显示主程序
319: ; 等于8显示8F
320: 028F B4 08 05 NT7: CJNE A,#8,CHECKING
321: 0292 90 04 88 MOV DPTR,#TABLE80 ; 8楼显示代码首地址
322: 0295 80 03 SJMP EXP
323: 0297 CHECKING:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 7
Line I Addr Code Source
324: 0297 90 04 BA MOV DPTR,#TABLE100
325: 029A 71 B4 EXP: Acall write1 ; 调1602读数据子程序
326: 029C 75 80 C2 mov p0,#0c2h ; 显示位置设置
327: 029F 71 A9 Acall enable ; 调1602写数据子程序
328: 02A1 75 80 80 MOV P0,#80H ; 显示位置
329: 02A4 71 A9 ACALL ENABLE ; 调1602写数据子程序
330: 02A6 22 RET ; 返回
331: ;=======================================
332: 02A7 KEYBORDSCAN: ; 键盘扫描子程序
333: 02A7 30 B0 02 JNB DOOR,COMP ; 首次判断
334: 02AA 41 B1 AJMP L1 ; 转扫描主程序
335: 02AC 71 CC COMP: ACALL DELAY ; 消斗
336: 02AE 30 B0 3E JNB DOOR,COMP0 ; 二次判断
337: 02B1 30 B1 02 L1: JNB CHECK,CHECK1
338: 02B4 41 BB AJMP L2
339: 02B6 71 CC CHECK1: ACALL DELAY
340: 02B8 30 B1 45 JNB CHECK,CHECK2
341: 02BB 75 70 F7 L2: MOV 70H,#0F7H ; 开始扫描
342: 02BE 75 71 00 MOV 71H,#00H ; 00H送键盘信号寄存器
343: 02C1 E5 70 L3: MOV A,70H ; 送扫描信号到A
344: 02C3 F5 90 MOV P1,A ; 送扫描信号到P1口
345: 02C5 E5 90 MOV A,P1 ; 读取P1口信息
346: 02C7 F5 50 MOV 50H,A ; 暂存P1口信息
347: 02C9 D3 SETB C ; CY=1
348: 02CA 75 72 04 MOV 72H,#4 ; 列扫描初值送72H单元
349: 02CD 33 L4: RLC A ; 带CY左移P1口信号
350: 02CE 50 0F JNC KEY ; CY?=0
351: 02D0 05 71 INC 71H ; CY=1,键盘信号寄存器加1
352: 02D2 D5 72 F8 DJNZ 72H,L4 ; 子减72H单元内容
353: 02D5 E5 70 MOV A,70H ; 扫描信号送到A
354: 02D7 D3 SETB C ; 让CY=1
355: 02D8 13 RRC A ; 带CY右移扫描信号
356: 02D9 F5 70 MOV 70H,A ; 暂存扫描
357: 02DB 40 E4 JC L3 ; CY?=1
358: 02DD 61 64 AJMP KEYBORDSCAN1 ; CY=0退出扫描
359: 02DF 7F 0A KEY: MOV R7,#10 ; CY=0,有键按下
360: 02E1 7E F8 D1: MOV R6,#248 ; 25MS延时消斗
361: 02E3 DE FE DJNZ R6,$ ; 25MS延时消斗
362: 02E5 DF FA DJNZ R7,D1 ; 25MS延时消斗
363: 02E7 E5 71 MOV A,71H ; 取键盘信号
364: 02E9 90 04 AA MOV DPTR,#TABLE ; 送键盘代码首地址到DPTR
365: 02EC 93 MOVC A,@A+DPTR ; 查表,求键值,送A
366: 02ED 61 0E AJMP DATASCAN ; 跳至键盘数据读取程序
367: ;=============================
368: 02EF 71 CC COMP0: ACALL DELAY ; 门开关键
369: 02F1 30 B0 FD JNB DOOR,$ ; 等待键释放
370: 02F4 BA FF 15 CJNE R2,#0FFH,KEYBORDSCAN10 ; 判断电梯状态
371: 02F7 B2 A4 CPL MEN ; 停止时开启或关闭电梯门
372: 02F9 B2 7F CPL 7FH
373: 02FB 75 31 00 MOV 31H,#00H ; 清除楼层请求指针信号
374: 02FE 61 0C AJMP KEYBORDSCAN10
375: 0300 71 CC CHECK2: ACALL DELAY
376: 0302 30 B1 FD JNB CHECK,$
377: 0305 E5 65 MOV A,65H
378: 0307 B4 00 02 CJNE A,#00H,KEYBORDSCAN10
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 8
Line I Addr Code Source
379: 030A C2 A3 CLR JINGGAO
380: 030C KEYBORDSCAN10:
381: 030C 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
382: 030E DATASCAN: ; 读取键盘数据
383: 030E B4 01 08 CJNE A,#01H,COMP1 ; 1号键
384: 0311 75 21 01 MOV 21H,#1
385: 0314 75 31 FF MOV 31H,#0FFH
386: 0317 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
387: 0319 B4 02 08 COMP1: CJNE A,#02H,COMP3 ; 2号键
388: 031C 75 22 01 MOV 22H,#1 ; 2楼信号指针送1
389: 031F 75 32 FF MOV 32H,#0FFH ; 2楼请求信号送0FFH
390: 0322 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
391: 0324 B4 03 08 COMP3: CJNE A,#03H,COMP4 ; 3号键
392: 0327 75 23 01 MOV 23H,#1 ; 3楼信号指针送1
393: 032A 75 33 FF MOV 33H,#0FFH ; 3楼请求信号送0FFH
394: 032D 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
395: 032F B4 04 08 COMP4: CJNE A,#04H,COMP5 ; 4号键
396: 0332 75 24 01 MOV 24H,#1 ; 4楼信号指针送1
397: 0335 75 34 FF MOV 34H,#0FFH ; 4楼请求信号送0FFH
398: 0338 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
399: 033A B4 05 08 COMP5: CJNE A,#05H,COMP6 ; 5号键
400: 033D 75 25 01 MOV 25H,#1 ; 5楼信号指针送1
401: 0340 75 35 FF MOV 35H,#0FFH ; 5楼请求信号送0FFH
402: 0343 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
403: 0345 B4 06 08 COMP6: CJNE A,#06H,COMP7 ; 6号键
404: 0348 75 26 01 MOV 26H,#1 ; 6楼信号指针送1
405: 034B 75 36 FF MOV 36H,#0FFH ; 6楼请求信号送0FFH
406: 034E 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
407: 0350 B4 07 08 COMP7: CJNE A,#07H,COMP8 ; 7号键
408: 0353 75 27 01 MOV 27H,#1 ; 7楼信号指针送1
409: 0356 75 37 FF MOV 37H,#0FFH ; 7楼请求信号送0FFH
410: 0359 61 64 AJMP KEYBORDSCAN1 ; 退出扫描
411: 035B B4 08 06 COMP8: CJNE A,#08H,KEYBORDSCAN1 ; 8号键
412: 035E 75 28 01 MOV 28H,#1 ; 8楼信号指针送1
413: 0361 75 38 FF MOV 38H,#0FFH ; 8楼请求信号送0FFH
414: 0364 KEYBORDSCAN1:
415: 0364 22 RET ; 退出扫描
416: ;=============================定时报警限制
417: 0365 C0 E0 TT0: PUSH ACC ; 保护ACC
418: 0367 75 8C 3C MOV TH0,#3CH ; 重置定时器初值
419: 036A 75 8A B0 MOV TL0,#0B0H
420: 036D DB 37 DJNZ R3,OUT ; 循环指针自减1
421: 036F 7B 32 MOV R3,#50 ; 减完后重置初值
422: 0371 E5 65 MOV A,65H ; (65H)送到A
423: 0373 B4 FF 02 CJNE A,#0FFH,KK ; 是否为0FFH
424: 0376 61 9C AJMP UUUU ; 下行
425: 0378 30 A0 0F KK: JNB XIANWEI,CONT ; 电梯限位判断
426: 037B 30 A0 0C JNB XIANWEI,CONT
427: 037E 30 A0 09 JNB XIANWEI,CONT
428: 0381 30 A0 06 JNB XIANWEI,CONT
429: 0384 C2 A3 CLR JINGGAO ; =0发出警告
430: 0386 C2 8C CLR TR0 ; 关闭定时器
431: 0388 61 A6 AJMP OUT ; 退出中断
432: 038A BA 11 0C CONT: CJNE R2,#11H,UUU ; 当前运行状态判断
433: 038D 05 30 INC 30H ; 上行将楼层信号加1
434: 038F E5 30 MOV A,30H ; 信号送到A
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 9
Line I Addr Code Source
435: 0391 B4 09 12 CJNE A,#9,OUT ; 顶层判断
436: 0394 75 30 08 MOV 30H,#8 ; 重置初值
437: 0397 80 0D SJMP OUT ; 退出中断
438: 0399 BA 00 0A UUU: CJNE R2,#00H,OUT ; 楼层运行状态判断
439: 039C 15 30 UUUU: DEC 30H ; 下行将楼层信号减1
440: 039E E5 30 MOV A,30H ; 信号送到A
441: 03A0 B4 00 03 CJNE A,#0,OUT ; 极限判断
442: 03A3 75 30 01 MOV 30H,#1 ; 重置初值
443: 03A6 D0 E0 OUT: POP ACC ; 恢复ACC的内容
444: 03A8 32 RETI ; 退出中断
445: ;======================================
446: 03A9 ENABLE: ; 1602写数据子程序
447: 03A9 C2 A5 CLR RS ; RS=0
448: 03AB C2 A6 CLR RW ; RW=0
449: 03AD C2 A7 CLR E ; E=0
450: 03AF 71 CC ACALL DELAY ; 高脉冲到E
451: 03B1 D2 A7 SETB E ; E=1
452: 03B3 22 RET ; 退出
453: ;=====================================
454: 03B4 WRITE1: ; 1602读数据子程序
455: 03B4 7C 00 MOV R4,#00H ; 数据偏移地址送R4
456: 03B6 EC A1: MOV A,R4 ; 转送到A
457: 03B7 93 MOVC A,@A+DPTR ; 查表
458: 03B8 71 BF ACALL WRITE2 ; 调读数据子程序
459: 03BA 0C INC R4 ; 偏移地址加1显示下1个代码
460: 03BB B4 00 F8 CJNE A,#00H,A1 ; 判断是否取完代码
461: 03BE 22 RET ; 退出
462: ;=====================================
463: 03BF F5 80 WRITE2: MOV P0,A ; 代码送P0
464: 03C1 D2 A5 SETB RS ; RS=1
465: 03C3 C2 A6 CLR RW ; RW=0
466: 03C5 C2 A7 CLR E ; E=0
467: 03C7 71 CC ACALL DELAY ; 高脉冲送到E
468: 03C9 D2 A7 SETB E ; E=1
469: 03CB 22 RET ; 退出
470: ;==================================== ; 延时子程序
471: 03CC 7F FF DELAY: MOV R7,#255
472: 03CE 7E 0A DD1: MOV R6,#10
473: 03D0 DE FE DJNZ R6,$
474: 03D2 DF FA DJNZ R7,DD1
475: 03D4 22 RET
476: 03D5 7F 96 DELAY1: MOV R7,#150 ; 延时子程序1
477: 03D7 7E FF DD2: MOV R6,#255
478: 03D9 DE FE DJNZ R6,$
479: 03DB DF FA DJNZ R7,DD2
480: 03DD 22 RET
481: ;====================================
482: 03DE table1: ;显示UP
483: 03DE 2A 2A 2A 2A db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,55h,50h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
03E2 2A 2A 2A 55
03E6 50 2A 2A 2A
03EA 2A 2A 2A 2A
03EE 00
484: 03EF table2: ;显示DOWN
485: 03EF 2A 2A 2A 2A db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,44h,4Fh,57h,4Eh,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
03F3 2A 2A 44 4F
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 10
Line I Addr Code Source
03F7 57 4E 2A 2A
03FB 2A 2A 2A 2A
03FF 00
486: 0400 table3: ;显示!!!!
487: 0400 2A 2A 2A 2A db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,21h,21h,21h,21h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
0404 2A 2A 21 21
0408 21 21 2A 2A
040C 2A 2A 2A 2A
0410 00
488: 0411 table10: ;显示1F
489: 0411 2A 2A 2A 2A db 2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,31h,46h,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,2Ah,00h;
0415 2A 2A 2A 31
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -