?? 6351.lst
字號:
File: 6351.ASM Holtek Cross-Assembler Version 2.86 Page 1
1 0000 ;此程序是為Ht46r47MUC設計
2 0000 ;適用產品:1979AD 3in1
3 0000 ;采用RC振蕩 fsys=4M
4 0000 ;PA3設置為PFD
5 0000 ;版權為翔熙公司所有
6 0000 ;編者:魏光文
7 0000 ;聲明:未經本公司許可不得擅自拷貝,否則公司有權追究其法律責任
8 0000 ;公元貳仟零零叁年伍月
9 0000 R0 EQU [00H]
10 0000 IAR EQU [00H]
11 0000 MP0 EQU [01H]
12 0000 MP EQU [01H]
13 0000 ACC EQU [05H]
14 0000 PCL EQU [06H]
15 0000 TBLP EQU [07H]
16 0000 TBLH EQU [08H]
17 0000 STATUS EQU [0AH]
18 0000 INTC EQU [0BH]
19 0000 TMR EQU [0DH]
20 0000 TMRC EQU [0EH]
21 0000 PA EQU [012H]
22 0000 PAC EQU [013H]
23 0000 PB EQU [014H]
24 0000 PBC EQU [015H]
25 0000 PD EQU [018H]
26 0000 PDC EQU [019H]
27 0000 PWM EQU [01AH]
28 0000 ADRL EQU [020H]
29 0000 ADRH EQU [021H]
30 0000 ADCR EQU [022H]
31 0000 ACSR EQU [023H]
32 0000
33 0000 C EQU [0AH].0
34 0000 AC EQU [0AH].1
35 0000 Z EQU [0AH].2
36 0000 OV EQU [0AH].3
37 0000 PDF EQU [0AH].4
38 0000 TO EQU [0AH].5
39 0000 EMI EQU [0BH].0
40 0000 EEI EQU [0BH].1
41 0000 ETI EQU [0BH].2
42 0000 EADI EQU [0BH].3
43 0000 EIF EQU [0BH].4
44 0000 TF EQU [0BH].5
45 0000 ADF EQU [0BH].6
46 0000 TE EQU [0EH].3
47 0000 TON EQU [0EH].4
48 0000 PA0 EQU [012H].0
49 0000 PA1 EQU [012H].1
50 0000 PA2 EQU [012H].2
51 0000 PA3 EQU [012H].3
52 0000 BUZZER EQU [012H].3
53 0000 PA4 EQU [012H].4
54 0000 PA5 EQU [012H].5
55 0000 PA6 EQU [012H].6
56 0000 PA7 EQU [012H].7
57 0000 PB0 EQU [014H].0
58 0000 PB1 EQU [014H].1
59 0000 PB2 EQU [014H].2
File: 6351.ASM Holtek Cross-Assembler Version 2.86 Page 2
60 0000 PB3 EQU [014H].3
61 0000 PB4 EQU [014H].4
62 0000 PB5 EQU [014H].5
63 0000 PB6 EQU [014H].6
64 0000 PB7 EQU [014H].7
65 0000 PD0 EQU [018H].0
66 0000 LV_LED EQU [014H].3;電池電壓低指示燈
67 0000 VOLT_LED EQU [012H].2
68 0000 METAL_LED EQU [012H].1
69 0000 WOOD_LED EQU [012H].0
70 0000 ADMAX_LED EQU [012H].4
71 0000 EOC EQU [022H].6
72 0000 START EQU [022H].7
73 0000 TEST EQU [023H].7
74 0000 TIMER EQU [040H]
75 0000 AD_LOW EQU [041H]
76 0000 AD_HIGH EQU [042H]
77 0000 AD_COUNT EQU [043H]
78 0000 LVOLT_VALE EQU [044H];電池電壓低門坎值
79 0000 AD_MAX EQU [045H]
80 0000 AD_MIN EQU [046H]
81 0000 FLAG1 EQU [047H]
82 0000 VOLT_F EQU [047H].0
83 0000 METAL_F EQU [047H].1
84 0000 WOOD_F EQU [047H].2
85 0000 LOW_V_F EQU [047H].3
86 0000 AD_FST_F EQU [047H].4
87 0000 V_RISE_F EQU [047H].5
88 0000 V_DOWN_F EQU [047H].6
89 0000 BUZZ_S_F EQU [047H].7
90 0000 FLAG2 EQU [048H]
91 0000 LED_ON_F EQU [048H].0
92 0000 BUZ_ON_F EQU [048H].1
93 0000 BUZZ_OFF EQU [048H].3
94 0000 WOOD_ON_F EQU [048H].2
95 0000 MAX_FST_F EQU [048H].4
96 0000 VOLTMAX_F EQU [048H].5
97 0000 AD_MIN_F EQU [048H].6
98 0000 VAC_LVALE EQU [049H];交流電壓最低值
99 0000 TIMER1 EQU [04AH]
100 0000 METAL_VALE EQU [04BH]
101 0000 AD_PRE EQU [04CH]
102 0000 AD_SUB EQU [04EH]
103 0000 ACC_BUF EQU [04FH]
104 0000 STATUS_BUF EQU [050H]
105 0000 BUZZ_R1 EQU [051H]
106 0000 BUZZ_R2 EQU [052H]
107 0000 WOOD_VALE EQU [054H]
108 0000 TEMP EQU [055H]
109 0000 TIMER2 EQU [056H]
110 0000 AD_PJ EQU [057H]
111 0000 AD_MAX_V EQU [058H]
112 0000 WOOD_COUNT EQU [059H]
113 0000 WOOD_NUM EQU [05AH]
114 0000 WOOD_CZ EQU [05BH]
115 0000 WOOD_ZZ EQU [05CH]
116 0000 AD_MAX_PRE EQU [05DH]
117 0000 DLY_R1 EQU [05EH]
118 0000 LASTPAGE EQU 0700H
119 0000 CODE .SECTION 'CODE'
File: 6351.ASM Holtek Cross-Assembler Version 2.86 Page 3
120 0000 ORG 00H
121 0000 2800 R JMP MAIN
122 0001 ORG 04H
123 0004 2800 R JMP EXT_INT
124 0005 ORG 08H
125 0008 2800 R JMP TIMER_INT
126 0009 ORG 0CH
127 000C 2800 R JMP AD_INT
128 000D EXT_INT:
129 000D 0004 RETI
130 000E
131 000E
132 000E TIMER_INT:
133 000E 00CF MOV ACC_BUF,A
134 000F 110A SWAPA STATUS
135 0010 00D0 MOV STATUS_BUF,A
136 0011 14C0 INC TIMER
137 0012 16CA SIZ TIMER1
138 0013 2800 R JMP TIMERINT1
139 0014 14D6 INC TIMER2
140 0015 TIMERINT1:
141 0015 1150 SWAPA STATUS_BUF
142 0016 008A MOV STATUS,A
143 0017 11CF SWAP ACC_BUF
144 0018 114F SWAPA ACC_BUF
145 0019 0004 RETI
146 001A AD_INT:
147 001A 0004 RETI
148 001B MAIN:
149 001B 0F40 MOV A,40H;清40H~7FH RAM
150 001C 0081 MOV MP,A
151 001D CLRROM:
152 001D 1F00 CLR R0
153 001E 1481 INC MP
154 001F 3F01 SZ MP.6
155 0020 2800 R JMP CLRROM
156 0021 0FFF MOV A,0FFH;電池電壓低的初值標準。
157 0022 00C4 MOV LVOLT_VALE,A
158 0023 0FFF MOV A,0FFH
159 0024 00C5 MOV AD_MAX,A;初設AD的最大值
160 0025 ; MOV A,80H
161 0025 00D8 MOV AD_MAX_V,A
162 0026 0F10 MOV A,10H
163 0027 00C6 MOV AD_MIN,A;初設AD的最小值
164 0028 0F02 MOV A,02H
165 0029 00C9 MOV VAC_LVALE,A;交流電壓最低值
166 002A 0F01 MOV A,01H
167 002B 0098 MOV PD,A
168 002C 0F00 MOV A,00H
169 002D 0099 MOV PDC,A;PD0設成輸出口
170 002E 0FE3 MOV A,11100011B
171 002F 0092 MOV PA,A
172 0030 0FE0 MOV A,11100000B
173 0031 0093 MOV PAC,A
174 0032 0FF7 MOV A,11110111B
175 0033 0095 MOV PBC,A
176 0034 0F01 MOV A,01H
177 0035 00A3 MOV ACSR,A;A/D的時鐘源為fsys/8
178 0036 0F02 MOV A,00011010;選擇AN2
179 0037 00A2 MOV ADCR,A
File: 6351.ASM Holtek Cross-Assembler Version 2.86 Page 4
180 0038 37A2 CLR START
181 0039 0F81 MOV A,81H
182 003A 008E MOV TMRC,A;定時器設置為內部時鐘源fint=fsys/8
183 003B 008D MOV TMR,A;PFD將產生4K的方波
184 003C 1F0D CLR TMR
185 003D 368B CLR TF
186 003E 310B SET ETI
187 003F 300B SET EMI
188 0040 320E SET TON
189 0041 0FFF MOV A,11111111B
190 0042 0094 MOV PB,A
191 0043 ; MOV PBC,A
192 0043 PRE_WAIT:;開機等待電源電壓穩定
193 0043 0001 CLR WDT
194 0044 3856 SNZ TIMER2.0
195 0045 2800 R JMP PRE_WAIT
196 0046 0F0F MOV A,0FH
197 0047 0094 MOV PB,A
198 0048 0F07 MOV A,07H
199 0049 0095 MOV PBC,A
200 004A 1F40 CLR TIMER
201 004B LOW_VOLT:;檢測電池電壓是否沒電
202 004B 3194 SET LV_LED
203 004C 31C7 SET LOW_V_F
204 004D 3748 CLR AD_MIN_F
205 004E 2000 R CALL AD_CONVERT
206 004F 0741 MOV A,AD_LOW
207 0050 0244 SUB A,LVOLT_VALE
208 0051 380A SNZ C
209 0052 3594 CLR LV_LED
210 0053 ; set buzzer
211 0053 ; clr LV_LED
212 0053 0000 LOOP:nop
213 0054 ; jmp loop
214 0054 3B92 SNZ PA7
215 0055 2800 R JMP VOLT_MEASURE1
216 0056 3B12 SNZ PA6
217 0057 2800 R JMP METAL_MEASURE
218 0058 3A92 SNZ PA5
219 0059 2800 R JMP WOOD_MEASURE
220 005A 3B92 SNZ PA7
221 005B 2800 R JMP VOLT_MEASURE
222 005C ; SZ PA6
223 005C ; JMP METAL_MEASURE
224 005C 2800 R JMP LOOP
225 005D VOLT_MEASURE1:
226 005D 3612 CLR ADMAX_LED;;;
227 005E 3112 SET VOLT_LED;;;
228 005F 1F4A CLR TIMER1
229 0060 1F56 CLR TIMER2
230 0061 M_VOLT1:
231 0061 0001 CLR WDT
232 0062 3A56 SNZ TIMER2.4
233 0063 2800 R JMP M_VOLT1;電壓測量前等侍信號穩定
234 0064 3512 CLR VOLT_LED;;;
235 0065 VOLT_MEASURE:
236 0065 0001 CLR WDT
237 0066 3047 SET VOLT_F
238 0067 3248 SET MAX_FST_F
239 0068 3647 CLR AD_FST_F
File: 6351.ASM Holtek Cross-Assembler Version 2.86 Page 5
240 0069 36C7 CLR V_RISE_F
241 006A 3747 CLR V_DOWN_F
242 006B 1F40 CLR TIMER
243 006C 3748 CLR AD_MIN_F
244 006D 2000 R CALL AD_CONVERT;第一次測量電壓
245 006E 0741 MOV A,AD_LOW
246 006F 00C6 MOV AD_MIN,A
247 0070 00CC MOV AD_PRE,A
248 0071 0249 SUB A,VAC_LVALE
249 0072 380A SNZ C
250 0073 2800 R JMP VOLT_MEASURE;VAC_SAFY
251 0074 3612 CLR ADMAX_LED
252 0075 3112 SET VOLT_LED
253 0076 2800 R JMP VAC_SAFY
254 0077 VAC_SAFY1:
255 0077 0741 MOV A,AD_LOW
256 0078 00CC MOV AD_PRE,A
257 0079 VAC_SAFY:
258 0079 3047 SET VOLT_F
259 007A 3748 CLR AD_MIN_F
260 007B 2000 R CALL AD_CONVERT
261 007C 14D7 INC AD_PJ
262 007D 0741 MOV A,AD_LOW
263 007E 024C SUB A,AD_PRE
264 007F 3C0A SZ C
265 0080 2800 R JMP VOLT_UP
266 0081 074C MOV A,AD_PRE
267 0082 0241 SUB A,AD_LOW
268 0083 0257 SUB A,AD_PJ
269 0084 380A SNZ C
270 0085 2800 R JMP VAC_SAFY
271 0086 3347 SET V_DOWN_F
272 0087 3AC7 SNZ V_RISE_F
273 0088 2800 R JMP VACDON
274 0089 36C7 CLR V_RISE_F
275 008A 074C MOV A,AD_PRE
276 008B 00C5 MOV AD_MAX,A
277 008C 3648 CLR MAX_FST_F
278 008D VACDON:
279 008D 0741 MOV A,AD_LOW;電壓值在下降
280 008E 00CC MOV AD_PRE,A
281 008F 0246 SUB A,AD_MIN
282 0090 3C0A SZ C
283 0091 2800 R JMP VACDOO
284 0092 0741 MOV A,AD_LOW
285 0093 00C6 MOV AD_MIN,A
286 0094 VACDOO:
287 0094 0741 MOV A,AD_LOW
288 0095 0249 SUB A,VAC_LVALE
289 0096 3C0A SZ C
290 0097 2800 R JMP VAC_SAFY
291 0098 3612 CLR ADMAX_LED
292 0099 3512 CLR VOLT_LED
293 009A 2800 R JMP VAC_SAFY
294 009B VOLT_UP:
295 009B 0257 SUB A,AD_PJ;電壓AD值上升值大于2就認為是上升
296 009C 380A SNZ C
297 009D 2800 R JMP VAC_SAFY
298 009E 32C7 SET V_RISE_F
299 009F 3B47 SNZ V_DOWN_F
File: 6351.ASM Holtek Cross-Assembler Version 2.86 Page 6
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -