📄 dvm.lst
字号:
282 ; twice SCOUNT. If the comparator does not switch, the last table
283 ; entry is returned. Assumes that the capacitor is fully discharged
284 ; on entry, and discharges the capacitor before return.
285 ; The table entry is returned in A. Nothing is saved.
286
287 ; Charge capacitor.
288
00FE 7400 289 mov a, #0 ; initialize loop count
0100 D2B7 290 setb p3.7 ; begin charging 1 uS
0102 00 291 nop ; padding 1 uS
0103 00 292 nop ; 1 uS
293 ad1:
0104 20B619 294 jb p3.6, ad4 ; jump if comp output high 2 uS
295
0107 04 296 inc a ; increment count 1 uS
0108 B44FF9 297 cjne a, #SCOUNT, ad1 ; loop until timeout 2 uS
298
299 ; Timeout.
300 ; Be sure capacitor is fully charged.
301
010B 7403 302 mov a, #TCHARGE ; wait
010D 12014E 303 call delay_ms ;
304
305 ; Discharge capacitor.
306
0110 7400 307 mov a, #0 ; initialize loop count
0112 C2B7 308 clr p3.7 ; begin discharging 1 uS
0114 00 309 nop ; padding 1 uS
0115 00 310 nop ; 1 uS
311 ad2:
0116 30B605 312 jnb p3.6, ad3 ; jump if comp output low 2 uS
313
0119 04 314 inc a ; increment count 1 uS
011A B44FF9 315 cjne a, #SCOUNT, ad2 ; loop until timeout 2 uS
316
317 ; Timeout.
318
011D 14 319 dec a ; last count
320 ad3:
011E 244F 321 add a, #SCOUNT ; use top half of table
322
323 ; Fetch table entry.
324 ad4:
0120 900040 325 mov dptr, #VoltTable ; pointer to base of table
MCS-51 MACRO ASSEMBLER DVM 07/31/95 PAGE 7
LOC OBJ LINE SOURCE
0123 93 326 movc a, @a+dptr ; get voltage data
0124 C0E0 327 push acc ; save data temporarily
328
329 ; Be sure capacitor is fully discharged.
330
0126 C2B7 331 clr p3.7 ; begin discharging
0128 7403 332 mov a, #TDISCHARGE ; wait
012A 12014E 333 call delay_ms ;
334
012D D0E0 335 pop acc
012F 22 336 ret
337
338
339 vshow:
340 ; Display two BCD digits on a pair of HP5082-7300 displays.
341 ; The four data lines to each display share P1.7:1.4. The units
342 ; display is selected by a low on P1.3 and the tenths display by a
343 ; low on P1.2. The units display is wired to light the decimal point.
344 ; On entry, expects two packed BCD digits in A. Returns nothing.
345 ; All registers preserved, including flags.
346
0130 C0D0 347 push psw
0132 C0E0 348 push acc
349
0134 C0E0 350 push acc ; save digits
0136 440F 351 orl a, #00001111b ; set unused bits
0138 F590 352 mov p1, a ; write units digit
013A C293 353 clr p1.3 ; strobe data into display
013C D293 354 setb p1.3 ;
355
013E D0E0 356 pop acc ; restore digits
0140 C4 357 swap a ; move low digit into high nybble
0141 440F 358 orl a, #00001111b ; set unused bits
0143 F590 359 mov p1, a ; write tenths digit
0145 C292 360 clr p1.2 ; strobe data into display
0147 D292 361 setb p1.2 ;
362
0149 D0E0 363 pop acc
014B D0D0 364 pop psw
014D 22 365 ret
366
367
368 delay_ms:
369
370 ; Delay for approximately one millisecond times the value in A.
371 ; All registers preserved, including flags.
372
014E C0D0 373 push psw
0150 C0E0 374 push acc
0152 C0F0 375 push b
376
0154 75F000 377 mov b, #0
378 ddm:
0157 D5F0FD 379 djnz b, $ ; 512 uS @ 12 MHz
015A D5F0FD 380 djnz b, $ ; 512 uS @ 12 MHz
MCS-51 MACRO ASSEMBLER DVM 07/31/95 PAGE 8
LOC OBJ LINE SOURCE
015D D5E0F7 381 djnz acc, ddm
382
0160 D0F0 383 pop b
0162 D0E0 384 pop acc
0164 D0D0 385 pop psw
0166 22 386 ret
387
388
389 END
MCS-51 MACRO ASSEMBLER DVM 07/31/95 PAGE 9
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E A T T R I B U T E S
ACC. . . . D ADDR 00E0H A
AD1. . . . C ADDR 0104H A
AD2. . . . C ADDR 0116H A
AD3. . . . C ADDR 011EH A
AD4. . . . C ADDR 0120H A
ADC. . . . C ADDR 00FEH A
B. . . . . D ADDR 00F0H A
DDM. . . . C ADDR 0157H A
DELAY_MS . C ADDR 014EH A
DVM. . . . ---- ----
IE . . . . D ADDR 00A8H A
LOOP . . . C ADDR 00F6H A
ON_RESET . C ADDR 00E0H A
P1 . . . . D ADDR 0090H A
P3 . . . . D ADDR 00B0H A
PSW. . . . D ADDR 00D0H A
SCOUNT . . NUMB 004FH A
SP . . . . D ADDR 0081H A
STACK. . . D ADDR 0020H A
TCHARGE. . NUMB 0003H A
TDISCHARGE NUMB 0003H A
VOLTTABLE. C ADDR 0040H A
VSHOW. . . C ADDR 0130H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE, NO ERRORS FOUND
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -