📄 text1.lst
字号:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
=====================================================
Source File: Text1.asm
Object File: Text1.hex
List File: Text1.lst
Line I Addr Code Source
1: B 0096 RX EQU P1.6 ;DS18B20接收数据.
2: B 0097 TX EQU P1.7 ;51发送数据.
3: N 0000 FLAG1 EQU 00H ;DS18B20初始化标志位.
4: N 0001 FLAG2 EQU 01H ;通知水循环维持时间寄存器(WATER2)开始计时,间隔(WATER1)无需被操作.
5: N 0002 FLAG3 EQU 02H ;通知喂食维持时间寄存器(FEED2)开始计时,间隔(FEED1)无需被操作.
6: N 0003 FLAG4 EQU 03H ;被置1则可以去启动温度转换.
7: N 0004 FLAG5 EQU 04H ;被置1则可以去取转换好的温度.
8: N 0026 TEMPL EQU 26H ;16位温度量低8位.
9: N 0027 TEMPH EQU 27H ;16位温度量高8位.
10: N 0028 TH EQU 28H ;温度上限值.
11: N 0029 TL EQU 29H ;温度下限值.
12: N 0030 TEMP1 EQU 30H ;采集温度符号位.
13: N 0031 TEMP2 EQU 31H ;采集温度整数位.
14: N 0032 TEMP3 EQU 32H ;采集温度小数位.
15: N 0033 ZC1 EQU 33H ;数据暂存地址1.
16: N 0034 ZC2 EQU 34H ;数据暂存地址2.
17: N 0035 ZC3 EQU 35H ;数据暂存地址2.
18: N 0036 HOUR EQU 36H ;小时数据暂存.
19: N 0037 MINUTE EQU 37H ;分钟数据暂存.
20: N 0038 SECOND EQU 38H ;秒数据暂存.
21: N 0039 WATER1 EQU 39H ;水循环开启间隔控制寄存器. 2h(max 12h)
22: N 0040 WATER2 EQU 40H ;水循环维持时间控制寄存器. 10min(max 30min)
23: N 0041 HEAT1 EQU 41H ;检测水温开启间隔控制寄存器. 5S
24: N 0042 FEED1 EQU 42H ;喂食开启间隔控制寄存器. 8h
25: N 0043 FEED2 EQU 43H ;喂食维持时间控制寄存器. 2S
26: N 0044 COUNT1 EQU 44H ;每1秒引发一次中断.
27: N 0045 SETTEMP EQU 45H ;采集温度低于此值加热棒开启.
28: N 0046 ZC4 EQU 46H ;装需要送显的数值
29: N 0047 ZC5 EQU 47H ;1秒显示ZC4中数值子程序.
30: N 0048 ZC6 EQU 48H ;1秒显示子程序十位值暂存.
31:
32: N 0000 ORG 0000H
33: 0000 80 2E SJMP INITIAL
34: N 0003 ORG 0003H
35: 0003 02 03 49 LJMP INT0P
36: N 001B ORG 001BH
37: 001B 02 00 D6 LJMP IT1P
38: N 0030 ORG 0030H
39: ;=====================================================
40: ;各参数,元器件初始化
41: ;=====================================================
42: 0030 INITIAL:
43: 0030 75 81 50 MOV SP,#50H
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0033 75 89 00 MOV TMOD,#00H
45: 0036 D2 88 SETB IT0
46: 0038 75 44 8C MOV COUNT1,#140 ;140
47: 003B 75 38 00 MOV SECOND,#00H
48: 003E 75 37 00 MOV MINUTE,#00H
49: 0041 75 36 00 MOV HOUR,#00H
50: 0044 75 41 05 MOV HEAT1,#05H
51: 0047 75 42 08 MOV FEED1,#8
52: 004A 75 43 02 MOV FEED2,#2
53: 004D 75 39 02 MOV WATER1,#2
54: 0050 75 40 0A MOV WATER2,#10
55: 0053 75 45 17 MOV SETTEMP,#17H
56: 0056 C2 02 CLR FLAG3
57: 0058 C2 03 CLR FLAG4
58: 005A C2 04 CLR FLAG5
59: 005C D2 AB SETB ET1
60: 005E D2 AF SETB EA
61: 0060 75 8D 63 MOV TH1,#63H
62: 0063 75 8B 18 MOV TL1,#18H
63: 0066 D2 96 SETB RX
64: 0068 C2 97 CLR TX
65: 006A C2 90 CLR P1.0
66: 006C C2 91 CLR P1.1
67: 006E C2 92 CLR P1.2
68: 0070 C2 A5 CLR P2.5
69: 0072 C2 A6 CLR P2.6
70: 0074 C2 A7 CLR P2.7
71: 0076 D2 93 SETB P1.3
72: 0078 D2 94 SETB P1.4
73: 007A D2 95 SETB P1.5
74: 007C D2 B3 SETB P3.3
75: 007E D2 8E SETB TR1 ;启动定时器.
76: ;=====================================================
77: ;主程序
78: ;=====================================================
79: 0080 MAIN:
80: 0080 30 95 48 JNB P1.5,XSXS ;KEYLOCK
81: 0083 D2 8E SETB TR1
82: 0085 C2 A8 CLR EX0
83: 0087 20 03 05 JB FLAG4,ST1
84: 008A ST2:
85: 008A 20 04 07 JB FLAG5,ST3
86: 008D 80 28 SJMP XS1
87: 008F ST1:
88: 008F 12 01 4F LCALL TRANSFORM
89: 0092 80 F6 SJMP ST2
90: 0094 ST3:
91: 0094 12 01 60 LCALL GETTEMP
92: 0097 12 01 DF LCALL CONVERT
93: ;================
94: 009A 30 B3 18 JNB P3.3,XS3 ;是否仍需比较,默认为需要.
95: ;================
96: 009D E5 30 MOV A,TEMP1
97: 009F B4 00 0B CJNE A,#00H,ST4
98: 00A2 E5 31 MOV A,TEMP2
99: 00A4 B5 45 00 CJNE A,SETTEMP,ST5
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 00A7 ST5:
101: 00A7 40 08 JC ST6
102: 00A9 C2 A7 CLR P2.7
103: 00AB 80 0A SJMP XS1
104: 00AD ST4:
105: 00AD D2 A7 SETB P2.7
106: 00AF 80 06 SJMP XS1
107: 00B1 ST6:
108: 00B1 D2 A7 SETB P2.7
109: 00B3 80 02 SJMP XS1
110: ;=================
111: 00B5 XS3:
112: 00B5 C2 A7 CLR P2.7 ;若不需系统维持恒温,则总是关闭加热棒.
113: ;=================
114: 00B7 XS1:
115: 00B7 20 02 04 JB FLAG3,FOOD
116: 00BA C2 A6 CLR P2.6
117: 00BC 80 02 SJMP XS2
118: 00BE FOOD:
119: 00BE D2 A6 SETB P2.6
120:
121: 00C0 XS2:
122: 00C0 20 01 04 JB FLAG2,WATER
123: 00C3 C2 A5 CLR P2.5
124: 00C5 80 0A SJMP XS
125: 00C7 WATER:
126: 00C7 D2 A5 SETB P2.5
127: 00C9 80 06 SJMP XS
128: ;===========
129: 00CB XSXS:
130: 00CB C2 A7 CLR P2.7
131: 00CD C2 8E CLR TR1 ;KEYLOCK
132: 00CF D2 A8 SETB EX0
133: ;===========
134: 00D1 XS:
135:
136: 00D1 12 02 CE LCALL DISTIME
137: 00D4 80 AA SJMP MAIN
138: ;=====================================================
139: ;计时器T1中断服务程序
140: ;=====================================================
141: 00D6 IT1P:
142: 00D6 C0 D0 PUSH PSW
143: 00D8 C0 E0 PUSH ACC
144: 00DA 75 8D 63 MOV TH1,#63H
145: 00DD 75 8B 18 MOV TL1,#18H
146: 00E0 D5 44 67 DJNZ COUNT1,COMEBACK
147: 00E3 75 44 B4 MOV COUNT1,#180
148:
149: 00E6 KAISHI:
150: 00E6 D5 41 03 DJNZ HEAT1,LOGIC1
151: 00E9 75 41 05 MOV HEAT1,#05H ;TIME: 00 01 02 03 04 05 06 07 08 09 10 11 12 13
152: 00EC LOGIC1: ;HEAT1: 5 4 3 2 1 5 4 3 2 1 5 4 3 2
153: 00EC E5 41 MOV A,HEAT1 ;FLAG4: 0 1 0 0 0 0 1 0 0 0 0 1 0 0
154: 00EE B4 04 04 CJNE A,#4,LOGIC2 ;FLAG5: 0 0 0 0 1 0 0 0 0 1 0 0 0 0
155: 00F1 D2 03 SETB FLAG4
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
Line I Addr Code Source
156: 00F3 80 0B SJMP LOGIC6
157: 00F5 LOGIC2:
158: 00F5 C2 03 CLR FLAG4
159: 00F7 B4 01 04 CJNE A,#1,LOGIC3
160: 00FA D2 04 SETB FLAG5
161: 00FC 80 02 SJMP LOGIC6
162: 00FE LOGIC3:
163: 00FE C2 04 CLR FLAG5
164: 0100 LOGIC6:
165: 0100 30 02 0B JNB FLAG3,LOGIC
166: 0103 D5 43 08 DJNZ FEED2,LOGIC
167: 0106 75 43 02 MOV FEED2,#2
168: 0109 75 42 08 MOV FEED1,#8
169: 010C C2 02 CLR FLAG3
170: 010E LOGIC:
171: 010E 05 38 INC SECOND ;秒.
172: 0110 E5 38 MOV A,SECOND
173:
174: 0112 B4 3C 35 CJNE A,#60,COMEBACK
175:
176: 0115 30 01 0B JNB FLAG2,LOGIC8
177: 0118 D5 40 08 DJNZ WATER2,LOGIC8
178: 011B 75 40 0A MOV WATER2,#10
179: 011E 75 39 08 MOV WATER1,#8
180: 0121 C2 01 CLR FLAG2
181: 0123 LOGIC8:
182: 0123 75 38 00 MOV SECOND,#00H
183: 0126 05 37 INC MINUTE ;分.
184: 0128 E5 37 MOV A,MINUTE
185:
186: 012A B4 3C 1D CJNE A,#60,COMEBACK
187:
188: 012D 20 02 05 JB FLAG3,LOGIC4
189: 0130 D5 42 02 DJNZ FEED1,LOGIC4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -