📄 text1.lst
字号:
A51 MACRO ASSEMBLER TEXT1 04/18/2008 16:15:40 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN Text1.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Text1.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0022 1 RTE EQU 22H
0030 2 RTG EQU 30H
0032 3 RTO EQU 32H
0035 4 RSH EQU 35H
0040 5 TEMPL EQU 40H;存放温度值低位
0041 6 TEMPH EQU 41H;存放温度值高位
0050 7 TEMP EQU 50H
0000 8 ORG 000H
0000 021000 9 LJMP MAIN
1000 10 ORG 1000H
1000 758160 11 MAIN:MOV SP,#60H
1003 D290 12 SETB P1.0
1005 121030 13 LCALL RST;调用复位子程序
1008 303222 14 JNB RTO,MA;判断复位是否成功
100B 74CC 15 MOV A,#0CCH;跳过RAM
100D 121056 16 LCALL WRS ;调用写子程序
1010 7444 17 MOV A,#44H;启动温度转换
1012 121056 18 LCALL WRS
1015 121030 19 LCALL RST
1018 74CC 20 MOV A,#0CCH
101A 121056 21 LCALL WRS
101D 74BE 22 MOV A,#0BEH;读内部RAM命令
101F 121056 23 LCALL WRS
1022 00 24 NOP
1023 12106F 25 LCALL RRS
1026 00 26 NOP
1027 121099 27 LCALL WDZ;调用温度转换子程序
102A 1210C7 28 LCALL SMX;调用数码管显示程序
102D 021000 29 MA: LJMP MAIN
30
31
1030 D290 32 RST: SETB P1.0
1032 00 33 NOP
1033 00 34 NOP
1034 C290 35 CLR P1.0 ;下拉数据线
1036 12113B 36 LCALL DELAY1;调用延时程序延时540微妙
1039 00 37 NOP
103A D290 38 SETB P1.0;释放数据线
103C 752203 39 MOV RTE,#03H;短暂延时等待
103F D522FD 40 RTD: DJNZ RTE,RTD
1042 309005 41 JNB P1.0,RTH;判断是否收到复位成功信号
1045 C232 42 CLR RTO;复位失败RT0清零
1047 00 43 NOP
1048 1153 44 ACALL RTA
104A D232 45 RTH: SETB RTO ;复位成功RT0置一
104C 00 46 NOP
104D 75305B 47 MOV RTG ,#5BH;短暂延时
1050 D530FD 48 RTT: DJNZ RTG ,RTT
1053 D290 49 RTA: SETB P1.0;使P1.0置一
1055 22 50 RET
51
52
1056 C3 53 WRS: CLR C ;
1057 7C08 54 MOV R4,#8;字节数
1059 00 55 NOP
105A C290 56 W0: CLR P1.0
105C 7A05 57 MOV R2,#05H
105E DAFE 58 W1: DJNZ R2, W1
A51 MACRO ASSEMBLER TEXT1 04/18/2008 16:15:40 PAGE 2
1060 13 59 RRC A ;循环右移
1061 9290 60 MOV P1.0,C ;将结果送入
1063 00 61 NOP
1064 7B1C 62 MOV R3,#28;延时
1066 DBFE 63 W2: DJNZ R3,W2
1068 D290 64 SETB P1.0
106A DCEE 65 DJNZ R4,W0;判断送完没
106C D290 66 SETB P1.0
106E 22 67 RET
68
69
106F 7D02 70 RRS: MOV R5, #2;字节行数
1071 7840 71 MOV R0,#40H
1073 7E08 72 RL0 : MOV R6,#8;每行字节数
1075 C3 73 RL1: CLR C
1076 D290 74 SETB P1.0
1078 00 75 NOP
1079 00 76 NOP
107A 00 77 NOP
107B C290 78 CLR P1.0
107D 753505 79 MOV RSH ,#05H ;延时
1080 D535FD 80 RL2: DJNZ RSH,RL2
1083 00 81 NOP
1084 D290 82 SETB P1.0
1086 00 83 NOP
1087 00 84 NOP
1088 00 85 NOP
1089 A290 86 MOV C,P1.0 ;将P1.0位信息放到C
108B 7A1E 87 MOV R2, #30
108D DAFE 88 RL3: DJNZ R2,RL3
108F 00 89 NOP
1090 00 90 NOP
1091 13 91 RRC A
1092 DEE1 92 DJNZ R6,RL1;判断送完没
1094 F6 93 MOV @R0,A ;将数据放在TEMPL中
1095 08 94 INC R0 ;TEMPH
1096 DDDB 95 DJNZ R5, RL0;判断整个数据送完没
1098 22 96 RET
97
98
1099 E541 99 WDZ:MOV A,TEMPH
109B 5480 100 ANL A,#80H;判断温度正负
109D 6022 101 JZ WD2;正温度跳转WD2
109F D291 102 SETB P1.1;负温度则使P1.1置1
10A1 C3 103 CLR C ;负温度转换部分
10A2 E540 104 MOV A,TEMPL
10A4 F4 105 CPL A ;取反
10A5 2401 106 ADD A,#01H;加1
10A7 F540 107 MOV TEMPL,A
10A9 E541 108 MOV A,TEMPH
10AB F4 109 CPL A
10AC 3400 110 ADDC A,#00H
10AE F541 111 MOV TEMPH,A
10B0 E540 112 WD1:MOV A,TEMPL
10B2 54F0 113 ANL A, #0F0H;屏蔽小数位
10B4 C4 114 SWAP A
10B5 F540 115 MOV TEMPL,A
10B7 E541 116 MOV A,TEMPH
10B9 540F 117 ANL A,#0FH ;屏蔽符号位
10BB C4 118 SWAP A
10BC 4540 119 ORL A,TEMPL
10BE F550 120 MOV TEMP,A ;将转换后温度置及8字节数据放在TEMP
10C0 22 121 RET
10C1 C291 122 WD2:CLR P1.1 ;使P1.1清零作为正温度标志
10C3 1210B0 123 LCALL WD1 ;转到温度处理部分
10C6 22 124 RET
A51 MACRO ASSEMBLER TEXT1 04/18/2008 16:15:40 PAGE 3
125
10C7 7D00 126 SMX:MOV R5,#0
10C9 7851 127 MOV R0,#51H
10CB E550 128 MOV A,TEMP
10CD 75F064 129 MOV B,#100 ;百位数据
10D0 84 130 DIV AB
10D1 F551 131 MOV 51H,A;将百位数据放在51H
10D3 85F054 132 MOV 54H,B ;十位数据
10D6 75F00A 133 MOV B,#10
10D9 E554 134 MOV A,54H
10DB 84 135 DIV AB
10DC F552 136 MOV 52H,A ;十位数据送到52H
10DE 85F057 137 MOV 57H,B ;个位数据
10E1 75F001 138 MOV B,#1
10E4 E557 139 MOV A,57H
10E6 84 140 DIV AB
10E7 F553 141 MOV 53H,A ;个位数据放到53H
10E9 85F054 142 MOV 54H,B ;小数位为零放到54H
10EC 901159 143 S1: MOV DPTR,#TABF
10EF ED 144 MOV A,R5
10F0 93 145 MOVC A,@A+DPTR ;查表2
10F1 F5B0 146 MOV P3,A
10F3 90114D 147 MOV DPTR,#TABE
10F6 209126 148 JB P1.1, S3 ;判断温度正负,负温度跳到S3
10F9 E551 149 MOV A,51H
10FB B4000B 150 CJNE A,#0,S7;判断百位是否为零,为零则不显
10FE 75510A 151 MOV 51H,#0AH
1101 E552 152 MOV A,52H;判断十位是否为零,为零不显
1103 B40003 153 CJNE A,#0,S7
1106 75520A 154 MOV 52H,#0AH
1109 E6 155 S7: MOV A,@R0
110A 93 156 S8: MOVC A,@A+DPTR;查表1
110B F556 157 MOV 56H,A
110D ED 158 MOV A,R5
110E B40224 159 CJNE A,#2,S4;处理后个位后显示点
1111 E556 160 MOV A,56H
1113 4480 161 ORL A,#80H
1115 F5A0 162 S5: MOV P2,A
1117 3144 163 ACALL DELAY2
1119 0D 164 INC R5
111A 08 165 INC R0
111B BD04CE 166 CJNE R5, #4,S1
111E 22 167 RET
111F E552 168 S3: MOV A,52H;判断温度十位是否为零
1121 B4000A 169 CJNE A,#0,S31;不为零则百位显示—号
1124 75510A 170 MOV 51H,#0AH;直接使负温度百位不显
1127 75520B 171 MOV 52H,#0BH;负温度显示—号
112A 121131 172 LCALL S32
112D 22 173 RET
112E 75510B 174 S31: MOV 51H,#0BH;使百位显示--号
1131 121109 175 S32: LCALL S7
1134 22 176 RET
1135 E556 177 S4: MOV A,56H
1137 121115 178 LCALL S5
113A 22 179 RET
180
113B 780A 181 DELAY1:MOV R0,#10
113D 7919 182 DE1: MOV R1,#25
113F D9FE 183 DE2: DJNZ R1,DE2
1141 D8FA 184 DJNZ R0, DE1
1143 22 185 RET
186
1144 7F32 187 DELAY2:MOV R7,#50
1146 7E64 188 DE3: MOV R6,#100
1148 DEFE 189 DE4: DJNZ R6,DE4
114A DFFA 190 DJNZ R7,DE3
A51 MACRO ASSEMBLER TEXT1 04/18/2008 16:15:40 PAGE 4
114C 22 191 RET
114D 3F065B4F 192 TABE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H
1151 666D7D07
1155 7F6F0040
193 ;0 ,1,2,3,4,5,6,7,8,9,消零,--
1159 FEFDFBF7 194 TABF:DB 0FEH,0FDH,0FBH,0F7H
195 ;百位,十位,个位,小位
196 END
A51 MACRO ASSEMBLER TEXT1 04/18/2008 16:15:40 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
B. . . . . . . . . D ADDR 00F0H A
DE1. . . . . . . . C ADDR 113DH A
DE2. . . . . . . . C ADDR 113FH A
DE3. . . . . . . . C ADDR 1146H A
DE4. . . . . . . . C ADDR 1148H A
DELAY1 . . . . . . C ADDR 113BH A
DELAY2 . . . . . . C ADDR 1144H A
MA . . . . . . . . C ADDR 102DH A
MAIN . . . . . . . C ADDR 1000H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
RL0. . . . . . . . C ADDR 1073H A
RL1. . . . . . . . C ADDR 1075H A
RL2. . . . . . . . C ADDR 1080H A
RL3. . . . . . . . C ADDR 108DH A
RRS. . . . . . . . C ADDR 106FH A
RSH. . . . . . . . N NUMB 0035H A
RST. . . . . . . . C ADDR 1030H A
RTA. . . . . . . . C ADDR 1053H A
RTD. . . . . . . . C ADDR 103FH A
RTE. . . . . . . . N NUMB 0022H A
RTG. . . . . . . . N NUMB 0030H A
RTH. . . . . . . . C ADDR 104AH A
RTO. . . . . . . . N NUMB 0032H A
RTT. . . . . . . . C ADDR 1050H A
S1 . . . . . . . . C ADDR 10ECH A
S3 . . . . . . . . C ADDR 111FH A
S31. . . . . . . . C ADDR 112EH A
S32. . . . . . . . C ADDR 1131H A
S4 . . . . . . . . C ADDR 1135H A
S5 . . . . . . . . C ADDR 1115H A
S7 . . . . . . . . C ADDR 1109H A
S8 . . . . . . . . C ADDR 110AH A
SMX. . . . . . . . C ADDR 10C7H A
SP . . . . . . . . D ADDR 0081H A
TABE . . . . . . . C ADDR 114DH A
TABF . . . . . . . C ADDR 1159H A
TEMP . . . . . . . N NUMB 0050H A
TEMPH. . . . . . . N NUMB 0041H A
TEMPL. . . . . . . N NUMB 0040H A
W0 . . . . . . . . C ADDR 105AH A
W1 . . . . . . . . C ADDR 105EH A
W2 . . . . . . . . C ADDR 1066H A
WD1. . . . . . . . C ADDR 10B0H A
WD2. . . . . . . . C ADDR 10C1H A
WDZ. . . . . . . . C ADDR 1099H A
WRS. . . . . . . . C ADDR 1056H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -