📄 text1.lst
字号:
A51 MACRO ASSEMBLER TEXT1 05/17/2008 11:42:36 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Text1.OBJ
ASSEMBLER INVOKED BY: E:\Program Files\KeiL\C51\BIN\A51.EXE Text1.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
00B0 1 VOUT EQU P3.0
2 ;
3 ;***************************************************
4 ;* 中断入口
5 ;***************************************************
6 ;
7
0000 8 ORG 0000H
0000 020006 9 LJMP START
0003 10 ORG 0003H
0003 020032 11 LJMP PINT0
12
13
14 ;**************************************************
15 ; 主程序
16 ;**************************************************
0006 75814F 17 START: MOV SP, #4FH
0009 7840 18 MOV R0, #40H ;40~47H为显示数据存放单元(40为最高位)
000B 7F0F 19 MOV R7,#0FH
000D 7600 20 CLEARDISP: MOV @R0, #00H
000F 08 21 INC R0
0010 DFFB 22 DJNZ R7, CLEARDISP
23
24
25
0012 752000 26 MOV 20H, #00H
27
28
29
0015 7580FF 30 MOV P0, #0FFH
0018 7590FF 31 MOV P1, #0FFH
001B 75A0FF 32 MOV P2, #0FFH
001E 75B0FF 33 MOV P3, #0FFH
34
0021 D2B8 35 SETB PX0
0023 D2A8 36 SETB EX0
0025 D2AF 37 SETB EA
38
39
0027 12003F 40 START1: LCALL DISPLAY
002A 3000FA 41 JNB 00H, START1 ;收到反射信号时标志位为1
002D C2AF 42 CLR EA
002F 120076 43 LCALL WORK ;计算距离子程序
44
45
46
47
48 ;
49
50 ;
51 ;外中断0,收到回波时进入
52 ;
0032 C2AF 53 PINT0: CLR EA
0034 C2A8 54 CLR EX0
0036 754A69 55 MOV 4AH, #069H ;将计数值移入处理单元
0039 754B96 56 MOV 4BH, #096H
003C D200 57 SETB 00H ;接收成功标志
A51 MACRO ASSEMBLER TEXT1 05/17/2008 11:42:36 PAGE 2
003E 32 58 RETI
59
60 ;**********************************
003F 7940 61 DISPLAY: MOV R1,#40H
0041 7D7F 62 MOV R5,#07FH
0043 ED 63 PLAY: MOV A,R5
0044 7580FF 64 MOV P0,#0FFH
0047 F590 65 MOV P1,A
0049 E7 66 MOV A,@R1
67
004A 900062 68 MOV DPTR,#TABLE
004D 93 69 MOVC A,@A+DPTR
004E F580 70 MOV P0,A
0050 116D 71 CALL DL1MS
0052 09 72 INC R1
0053 ED 73 MOV A,R5
0054 30E004 74 JNB ACC.0,ENDOUT
0057 03 75 RR A
0058 FD 76 MOV R5,A
0059 80E8 77 JMP PLAY
005B 7590FF 78 ENDOUT: MOV P1,#0FFH
005E 7580FF 79 MOV P0,#0FFH
80
0061 22 81 RET ;显示完成,返回
82 ;
0062 039F250D 83 TABLE:DB 03H,9FH,25H,0DH,99H,49H,41H,01FH,01H,09H,03H
0066 9949411F
006A 010903
84
85 ;********************************
86 ;延时程序
87 ;********************************
88
006D 7E14 89 DL1MS: MOV R6,#14H
006F 7F19 90 DL1: MOV R7,#19H
0071 DFFE 91 DL2: DJNZ R7,DL2
0073 DEFA 92 DJNZ R6,DL1
93
0075 22 94 RET
95
96 ;**************************************************
97 ;* 距离计算程序(=计算值×17/1000cm) 近似 *
98 ;**************************************************
99
0076 C0E0 100 WORK:PUSH ACC
0078 C0D0 101 PUSH PSW
007A C0F0 102 PUSH B
007C 75D018 103 MOV PSW, #18H ;RS1=1,RS0=1
007F AB4B 104 MOV R3, 4BH
0081 AA4A 105 MOV R2, 4AH
0083 7900 106 MOV R1, #00D
0085 7811 107 MOV R0, #17D ;与17相乘
0087 1200DA 108 LCALL MUL2BY2 ;R7R6R5R4<=R3R2*R1R0
008A 7B03 109 MOV R3, #03H
008C 7AE8 110 MOV R2, #0E8H
008E 120109 111 LCALL DIV4BY2 ;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
0091 120109 112 LCALL DIV4BY2 ;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
0094 8C44 113 MOV 44H, R4
0096 E544 114 MOV A, 44H
0098 7003 115 JNZ JJ0 ;A不等于0时,跳转
009A 75440A 116 MOV 44H, #0AH ;最高位为0,不点亮
117
009D E8 118 JJ0: MOV A, R0
009E FC 119 MOV R4, A
009F E9 120 MOV A, R1
00A0 FD 121 MOV R5, A
A51 MACRO ASSEMBLER TEXT1 05/17/2008 11:42:36 PAGE 3
00A1 7B00 122 MOV R3, #00D
00A3 7A64 123 MOV R2, #100D
00A5 120109 124 LCALL DIV4BY2
00A8 8C45 125 MOV 45H, R4
00AA E545 126 MOV A, 45H
00AC 7009 127 JNZ JJ1
00AE E544 128 MOV A, 44H ;此高位为0,先看最高位是否为不亮
00B0 940A 129 SUBB A, #0AH
00B2 7003 130 JNZ JJ1
00B4 75450A 131 MOV 45H, #0AH ;最高位不亮,次高位也不亮
132
00B7 E8 133 JJ1: MOV A, R0
00B8 FC 134 MOV R4, A
00B9 E9 135 MOV A, R1
00BA FD 136 MOV R5, A
00BB 7B00 137 MOV R3, #00D
00BD 7A0A 138 MOV R2, #10D
00BF 120109 139 LCALL DIV4BY2
00C2 8C46 140 MOV 46H, R4
00C4 E546 141 MOV A, 46H
00C6 7009 142 JNZ JJ2
00C8 E545 143 MOV A, 45H ;次高位为0,先看次高位是否为不亮
00CA 940A 144 SUBB A, #0AH
00CC 7003 145 JNZ JJ2
00CE 75460A 146 MOV 46H, #0AH ;次高位不亮,次高位也不亮
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -