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

📄 18b20.lst

📁 18b20通过对外界温度的采集把收集的信号通过数据转换和处理后通过数码管进行显示。
💻 LST
字号:
A51 MACRO ASSEMBLER  18B20                                                                04/25/2008 08:49:31 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN 18b20.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 18b20.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

0000                   1     ORG 0000H
0000 020030            2     LJMP MAIN 
                       3     ;高精度数字温度计(此汇编程序在AT2051通过运行)
0030                   4     ORG 0030H 
0030 752900            5     MAIN:MOV 29H, #00H
0033 752800            6     MOV 28H, #00H
0036 12006B            7     LOOP0:LCALL RE000 ;复位 
0039 74CC              8     MOV A, #0CCH ;跳过ROM操作
003B 12008E            9     LCALL WRITE
003E 7444             10     MOV A, #44H ;发出温度转换命令
0040 12008E           11     LCALL WRITE
0043 1200CA           12     LCALL DELAY1 ;延时750mS
0046 1200CA           13     LCALL DELAY1
0049 1200CA           14     LCALL DELAY1 
004C 12006B           15     LCALL RE000 ;复位
004F 74CC             16     MOV A, #0CCH ;跳过ROM操作
0051 12008E           17     LCALL WRITE
0054 74BE             18     MOV A, #0BEH ;发出读温度命令
0056 12008E           19     LCALL WRITE
0059 1200A9           20     LCALL READ ;读DS18B20中的温度数据 
005C 1200E8           21     LCALL BTOD 
005F 753013           22     mov 30H, #13H
0062 753511           23     mov 35H, #11H 
0065 1200D3           24     LCALL DELAY2 
0068 020036           25     LJMP LOOP0
                      26     ;复位DS18B20子程序
006B D2B2             27     RE000:SETB P3.2
006D 00               28     NOP
006E C2B2             29     CLR P3.2
0070 7B96             30     MOV R3, #96H
0072 DBFE             31     LOOP1:DJNZ R3, LOOP1 ;延时600uS
0074 D2B2             32     SETB P3.2
0076 00               33     NOP
0077 7B0F             34     MOV R3, #0FH
0079 DBFE             35     LOOP2:DJNZ R3, LOOP2 ;延时60uS
007B 7B1E             36     MOV R3, #1EH
007D 30B209           37     LOOP3:JNB P3.2, LOOP4 ;240uS内检查DS18B20的存在脉冲
0080 DBFB             38     DJNZ R3, LOOP3
0082 C290             39     clr p1.0 
0084 02008D           40     LJMP LOOP5 
0087 7B3C             41     MOV R3, #3CH
0089 DBFE             42     LOOP4:DJNZ R3, LOOP4 ;延时240uS 
008B D2B2             43     SETB P3.2
008D 22               44     LOOP5:RET
                      45     
                      46     ;写DS18B20子程序
008E 7A08             47     WRITE:MOV R2,#08H ;一共8位数据
0090 C3               48     CLR C
0091 D2B2             49     LOOP6:SETB p3.2
0093 00               50     nop
0094 C2B2             51     CLR P3.2
0096 7B04             52     MOV R3, #04H
0098 DBFE             53     LOOP7:DJNZ R3, LOOP7
009A 13               54     RRC A
009B 92B2             55     MOV P3.2, C
009D 7B0C             56     MOV R3,#0CH
009F DBFE             57     LOOP8:DJNZ R3, LOOP8 ;延时48uS
00A1 D2B2             58     SETB P3.2
A51 MACRO ASSEMBLER  18B20                                                                04/25/2008 08:49:31 PAGE     2

00A3 00               59     NOP
00A4 DAEB             60     DJNZ R2, LOOP6
00A6 D2B2             61     SETB P3.2
00A8 22               62     RET
                      63     ; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据 
00A9 7C02             64     READ:MOV R4,#2H ;将温度高位和低位从DS18B20中读出
00AB 7929             65     MOV R1,#29H ;低位存入29H,高位存入28H
00AD 7A08             66     RE00:MOV R2,#8H
00AF C3               67     RE01:CLR C
00B0 D2B2             68     SETB P3.2
00B2 00               69     NOP
00B3 C2B2             70     CLR P3.2
00B5 00               71     NOP 
00B6 D2B2             72     SETB P3.2
00B8 7B04             73     MOV R3, #04H ;延时16uS
00BA DBFE             74     RE10:DJNZ R3, RE10
00BC A2B2             75     MOV C,P3.2
00BE 7B0C             76     MOV R3,#0CH ;延时48uS
00C0 DBFE             77     RE20:DJNZ R3,RE20
00C2 13               78     RRC A
00C3 DAEA             79     DJNZ R2,RE01
00C5 F7               80     MOV @R1,A
00C6 19               81     DEC R1
00C7 DCE4             82     DJNZ R4,RE00
00C9 22               83     RET
                      84     
                      85     ;延时子程序1(0.25秒)
00CA 7CFD             86     DELAY1:MOV R4, #0FDH
00CC 7DFC             87     L3:MOV R5, #0FCH 
00CE DDFE             88     L5:DJNZ R5, L5
00D0 DCFA             89     DJNZ R4, L3
00D2 22               90     RET 
                      91     ;延时子程序2
00D3 7C02             92     DELAY2:MOV R4, #02H
00D5 7DFF             93     L6:MOV R5, #0FFH
00D7 120147           94     L7:LCALL DIRR
00DA DDFB             95     DJNZ R5, L7
00DC DCF7             96     DJNZ R4, L6
00DE 22               97     RET 
                      98     ;延时子程序0
00DF 7A01             99     DELAY:MOV R2, #01H 
00E1 7B08            100     L1:MOV R3, #08H
00E3 DBFE            101     L2:DJNZ R3, L2
00E5 DAFA            102     DJNZ R2, L1
00E7 22              103     RET
                     104     ;进制转换数据处理
00E8 7834            105     BTOD:MOV R0, #34H
00EA 304713          106     JNB 47H, BTOD0 ;28H中的最高位是否为1(温度<0)
00ED E529            107     QB00: MOV A, 29H ;负数取补
00EF F4              108     CPL A
00F0 2401            109     ADD A, #01H
00F2 F529            110     MOV 29H, A
00F4 E528            111     MOV A, 28H
00F6 F4              112     CPL A
00F7 3400            113     ADDC A, #00H
00F9 F528            114     MOV 28H, A
00FB 7612            115     MOV @R0, #12H ;显示负号
00FD 020102          116     LJMP BTOD1
0100 7611            117     BTOD0:MOV @R0, #11H 
0102 E529            118     BTOD1:MOV A,29H
0104 F527            119     MOV 27H, A
0106 A240            120     MOV C,40H ;将28H中的最低位移入C,40H41H42H43H为28H中的位地址
0108 13              121     RRC A
0109 A241            122     MOV C,41H
010B 13              123     RRC A
010C A242            124     MOV C,42H
A51 MACRO ASSEMBLER  18B20                                                                04/25/2008 08:49:31 PAGE     3

010E 13              125     RRC A
010F A243            126     MOV C,43H
0111 13              127     RRC A
0112 F529            128     MOV 29H,A 
0114 E529            129     MOV A, 29H ;将29H中的十六进制数转换成10进制 
0116 75F064          130     MOV B, #100 
0119 84              131     DIV AB 
011A 6004            132     JZ BTOD2
011C F6              133     MOV @R0, A ;百位存于33H
011D 020128          134     LJMP BTOD4
0120 B61203          135     BTOD2:CJNE @R0, #12H, BTOD3 
0123 020128          136     LJMP BTOD4
0126 7611            137     BTOD3:MOV @R0, #11H ;百位为零暗
0128 18              138     BTOD4:DEC R0
0129 740A            139     MOV A, #10
012B C5F0            140     XCH A, B
012D 84              141     DIV AB
012E F6              142     MOV @R0, A ;十位存于32H 
012F 18              143     DEC R0 
0130 A6F0            144     MOV @R0, B ;个位存于31H
0132 18              145     DEC R0
0133 53270F          146     ANL 27H, #0FH ;小数点后一位进制转换
0136 E527            147     MOV A, 27H
0138 75F006          148     MOV B, #06H
013B A4              149     MUL AB
013C 75F00A          150     MOV B, #10
013F 84              151     DIV AB
0140 F6              152     MOV @R0, A ;小数点后一位存于30H
0141 20B702          153     JB P3.7, BTOD5 ;小数点后一位是否显示判断
0144 76FF            154     MOV @R0, #0FFH
0146 22              155     BTOD5:RET 
                     156     ;动态显示子程序
0147 7830            157     DIRR: MOV R0, #30H
0149 759000          158     MOV P1, #00H 
014C E6              159     MOV A, @R0 ;显示C 
014D 9001D8          160     MOV DPTR, #SEGPT 
0150 93              161     MOVC A, @A+DPTR
0151 F580            162     MOV p0, A
0153 3099FD          163     OUT1: JNB TI, OUT1
0156 C299            164     CLR TI
0158 D292            165     SETB P1.2 
015A 1200DF          166     LCALL DELAY 
015D C292            167     CLR P1.2
015F 08              168     INC R0
0160 E6              169     MOV A, @R0 ;显示小数点后一位 
0161 9001D8          170     MOV DPTR, #SEGPT 
0164 93              171     MOVC A, @A+DPTR
0165 F580            172     MOV p0, A
0167 3099FD          173     OUT2: JNB TI, OUT2
016A C299            174     CLR TI
016C D293            175     SETB P1.3 
016E 1200DF          176     LCALL DELAY 
0171 C293            177     CLR P1.3
0173 7410            178     MOV A, #10H ;显示小数点
0175 9001D8          179     MOV DPTR, #SEGPT 
0178 93              180     MOVC A, @A+DPTR
0179 F580            181     MOV p0, A
017B 3099FD          182     OUT0: JNB TI, OUT0
017E C299            183     CLR TI
0180 D294            184     SETB P1.4 
0182 1200DF          185     LCALL DELAY 
0185 C294            186     CLR P1.4
0187 08              187     INC R0
0188 E6              188     MOV A, @R0 ;显示个位数 
0189 9001D8          189     MOV DPTR, #SEGPT 
018C 93              190     MOVC A, @A+DPTR
A51 MACRO ASSEMBLER  18B20                                                                04/25/2008 08:49:31 PAGE     4

018D F580            191     MOV p0, A
018F 3099FD          192     OUT3: JNB TI, OUT3
0192 C299            193     CLR TI
0194 D294            194     SETB P1.4 
0196 1200DF          195     LCALL DELAY 
0199 C294            196     CLR P1.4
019B 08              197     INC R0
019C E6              198     MOV A, @R0 ;显示高位数 
019D 9001D8          199     MOV DPTR, #SEGPT 
01A0 93              200     MOVC A, @A+DPTR
01A1 F580            201     MOV p0, A
01A3 3099FD          202     OUT4: JNB TI, OUT4
01A6 C299            203     CLR TI
01A8 D295            204     SETB P1.5 
01AA 1200DF          205     LCALL DELAY 
01AD C295            206     CLR P1.5
01AF 08              207     INC R0
01B0 E6              208     MOV A, @R0 ;显示高位数 
01B1 9001D8          209     MOV DPTR, #SEGPT 
01B4 93              210     MOVC A, @A+DPTR
01B5 F580            211     MOV p0, A
01B7 3099FD          212     OUT5: JNB TI, OUT5
01BA C299            213     CLR TI
01BC D296            214     SETB P1.6 
01BE 1200DF          215     LCALL DELAY 
01C1 C296            216     CLR P1.6
01C3 08              217     INC R0
01C4 E6              218     MOV A, @R0 ;显示高位数 
01C5 9001D8          219     MOV DPTR, #SEGPT 
01C8 93              220     MOVC A, @A+DPTR
01C9 F580            221     MOV p0, A
01CB 3099FD          222     OUT6: JNB TI, OUT6
01CE C299            223     CLR TI
01D0 D297            224     SETB P1.7 
01D2 1200DF          225     LCALL DELAY 
01D5 C297            226     CLR P1.7 
01D7 22              227     RET
01D8 C0F9A4B0        228     SEGPT: DB 0C0H,0F9H,0A4H,0B0H,99H ;0,1,2,3,4
01DC 99                      
01DD 9282F880        229     DB 92H,82H,0F8H,80H,90H ;5,6,7,8,9
01E1 90                      
01E2 8883C6A1        230     DB 88H,83H,0C6H,0A1H,86H,8EH ;A,B,C,D,E,F
01E6 868E                    
01E8 7FFFBF70        231     DB 07FH,0FFH,0BFH,70H ;点,暗,-,摄氏度
                     232     END
A51 MACRO ASSEMBLER  18B20                                                                04/25/2008 08:49:31 PAGE     5

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

B. . . . . . . . .  D ADDR   00F0H   A   
BTOD . . . . . . .  C ADDR   00E8H   A   
BTOD0. . . . . . .  C ADDR   0100H   A   
BTOD1. . . . . . .  C ADDR   0102H   A   
BTOD2. . . . . . .  C ADDR   0120H   A   
BTOD3. . . . . . .  C ADDR   0126H   A   
BTOD4. . . . . . .  C ADDR   0128H   A   
BTOD5. . . . . . .  C ADDR   0146H   A   
DELAY. . . . . . .  C ADDR   00DFH   A   
DELAY1 . . . . . .  C ADDR   00CAH   A   
DELAY2 . . . . . .  C ADDR   00D3H   A   
DIRR . . . . . . .  C ADDR   0147H   A   
L1 . . . . . . . .  C ADDR   00E1H   A   
L2 . . . . . . . .  C ADDR   00E3H   A   
L3 . . . . . . . .  C ADDR   00CCH   A   
L5 . . . . . . . .  C ADDR   00CEH   A   
L6 . . . . . . . .  C ADDR   00D5H   A   
L7 . . . . . . . .  C ADDR   00D7H   A   
LOOP0. . . . . . .  C ADDR   0036H   A   
LOOP1. . . . . . .  C ADDR   0072H   A   
LOOP2. . . . . . .  C ADDR   0079H   A   
LOOP3. . . . . . .  C ADDR   007DH   A   
LOOP4. . . . . . .  C ADDR   0089H   A   
LOOP5. . . . . . .  C ADDR   008DH   A   
LOOP6. . . . . . .  C ADDR   0091H   A   
LOOP7. . . . . . .  C ADDR   0098H   A   
LOOP8. . . . . . .  C ADDR   009FH   A   
MAIN . . . . . . .  C ADDR   0030H   A   
OUT0 . . . . . . .  C ADDR   017BH   A   
OUT1 . . . . . . .  C ADDR   0153H   A   
OUT2 . . . . . . .  C ADDR   0167H   A   
OUT3 . . . . . . .  C ADDR   018FH   A   
OUT4 . . . . . . .  C ADDR   01A3H   A   
OUT5 . . . . . . .  C ADDR   01B7H   A   
OUT6 . . . . . . .  C ADDR   01CBH   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
QB00 . . . . . . .  C ADDR   00EDH   A   
RE00 . . . . . . .  C ADDR   00ADH   A   
RE000. . . . . . .  C ADDR   006BH   A   
RE01 . . . . . . .  C ADDR   00AFH   A   
RE10 . . . . . . .  C ADDR   00BAH   A   
RE20 . . . . . . .  C ADDR   00C0H   A   
READ . . . . . . .  C ADDR   00A9H   A   
SEGPT. . . . . . .  C ADDR   01D8H   A   
TI . . . . . . . .  B ADDR   0098H.1 A   
WRITE. . . . . . .  C ADDR   008EH   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -