⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvm.lst

📁 A Digital Thermometer Using the AT89C2051 MCU
💻 LST
📖 第 1 页 / 共 3 页
字号:
                     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 + -