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

📄 ds18b20.lst

📁 51单片机用汇编实例 包括ad
💻 LST
📖 第 1 页 / 共 2 页
字号:
01C3 1201B2          152             LCALL READ_BYTES
01C6 74F0            153             MOV A, #0F0H
01C8 5530            154             ANL A, 30H              ; 舍去小数点后的数
01CA C4              155             SWAP A
01CB F560            156             MOV TEMP, A
01CD E530            157             MOV A, 30H
01CF 30E302          158             JNB ACC.3, GTEMP1       ; 四舍五入
01D2 0560            159             INC TEMP
01D4 7407            160     GTEMP1: MOV A, #07H
01D6 5531            161             ANL A, 31H              ; 得到高位值
01D8 C4              162             SWAP A
01D9 2560            163             ADD A, TEMP
01DB F560            164             MOV TEMP, A
01DD 1201E5          165             LCALL HEX_BCD           ; 转换为BCD码
01E0 D000            166             POP 00H
01E2 D0E0            167             POP ACC
01E4 22              168             RET
                     169     
                     170     ; 将十六进制的温度数据转换成压缩BCD码
01E5                 171     HEX_BCD:
01E5 900264          172             MOV DPTR, #TEMP_TAB
01E8 E560            173             MOV A, TEMP
01EA 93              174             MOVC A, @A+DPTR
01EB F560            175             MOV TEMP, A             ; 保存转换结果
01ED 54F0            176             ANL A, #0F0H
01EF C4              177             SWAP A
01F0 F551            178             MOV 51H, A              ; 十位数
01F2 E560            179             MOV A, TEMP
01F4 540F            180             ANL A, #0FH
01F6 F552            181             MOV 52H, A              ; 个位数
01F8 22              182             RET
                     183     
                     184     ; 内部配置
01F9                 185     CONFIG18B20:
01F9 120150          186             LCALL INIT18B20
01FC 79CC            187             MOV R1, #0CCH           ; 跳过ROM命令
01FE 120174          188             LCALL WRITEBYTE
0201 794E            189             MOV R1, #04EH           ; 写scratchpad, 后跟3字节
0203 120174          190             LCALL WRITEBYTE
A51 MACRO ASSEMBLER  DS18B20                                                              05/23/2006 14:45:00 PAGE     4

0206 791E            191             MOV R1, #01EH           ; 上限: 30(TH)
0208 120174          192             LCALL WRITEBYTE
020B 790A            193             MOV R1, #0AH            ; 下限: 10(TL)
020D 120174          194             LCALL WRITEBYTE
0210 797F            195             MOV R1, #07FH           ; 设置分辨率: 12位
0212 120174          196             LCALL WRITEBYTE
                     197     
0215 120150          198             LCALL INIT18B20
0218 79CC            199             MOV R1, #0CCH
021A 120174          200             LCALL WRITEBYTE
021D 7948            201             MOV R1, #048H           ; 保存设定值, 即写入EEROM
021F 120174          202             LCALL WRITEBYTE
                     203     
0222 120150          204             LCALL INIT18B20
0225 79CC            205             MOV R1, #0CCH
0227 120174          206             LCALL WRITEBYTE
022A 79B8            207             MOV R1, #0B8H           ; 回调设定值, 读取EEROM
022C 120174          208             LCALL WRITEBYTE
022F 22              209             RET
                     210     
                     211     ; 读ID
0230                 212     READID:
0230 120150          213             LCALL INIT18B20 
0233 7933            214             MOV R1, #33H            ; 读ROM命令
0235 120174          215             LCALL WRITEBYTE
0238 AC08            216             MOV R4, 8
023A 1201B2          217             LCALL READ_BYTES
023D 22              218             RET
                     219     
                     220     ; 测量温度处理
023E                 221     TEMP_RESULT:
023E 120150          222             LCALL INIT18B20 
0241 79CC            223             MOV R1, #0CCH
0243 120174          224             LCALL WRITEBYTE
0246 7944            225             MOV R1, #044H           ; 温度转换指令
0248 120174          226             LCALL WRITEBYTE
024B 7FFF            227             MOV R7, #0FFH
024D 12011E          228             LCALL DELAY
0250 00              229             NOP
0251 00              230             NOP
0252 120150          231             LCALL INIT18B20
0255 79CC            232             MOV R1, #0CCH
0257 120174          233             LCALL WRITEBYTE
025A 79BE            234             MOV R1, #0BEH           ; 读取温度指令, 即读scratchpad
025C 120174          235             LCALL WRITEBYTE
025F 00              236             NOP
0260 1201BD          237             LCALL GETTEMP
0263 22              238             RET
                     239     ; HEX 转换为压缩 BCD 码表
0264                 240     TEMP_TAB:
0264 00010203        241             DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
0268 04050607                
026C 0809                    
026E 10111213        242             DB 10H,11H,12H,13H,14H,15H,16H,17H,18H,19H
0272 14151617                
0276 1819                    
0278 20212223        243             DB 20H,21H,22H,23H,24H,25H,26H,27H,28H,29H
027C 24252627                
0280 2829                    
0282 30313233        244             DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
0286 34353637                
028A 3839                    
028C 40414243        245             DB 40H,41H,42H,43H,44H,45H,46H,47H,48H,49H
0290 44454647                
0294 4849                    
0296 50515253        246             DB 50H,51H,52H,53H,54H,55H,56H,57H,58H,59H
A51 MACRO ASSEMBLER  DS18B20                                                              05/23/2006 14:45:00 PAGE     5

029A 54555657                
029E 5859                    
                     247     
                     248     ; 数码管显示七段译码表
02A0 3F065B4F        249     DISTAB: DB 3FH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH
02A4 666D7D07                
02A8 7F6F                    
                     250     
                     251             END
A51 MACRO ASSEMBLER  DS18B20                                                              05/23/2006 14:45:00 PAGE     6

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
A_8255 . . . . . .  N NUMB   7F00H   A   
B_8255 . . . . . .  N NUMB   7F01H   A   
CONFIG18B20. . . .  C ADDR   01F9H   A   
CON_8255 . . . . .  N NUMB   7F03H   A   
DELAY. . . . . . .  C ADDR   011EH   A   
DISPLAY. . . . . .  C ADDR   0121H   A   
DISTAB . . . . . .  C ADDR   02A0H   A   
DPLY1. . . . . . .  C ADDR   012FH   A   
DQ . . . . . . . .  B ADDR   00B0H.4 A   
FLAG . . . . . . .  B ADDR   0020H.0 A   
GETTEMP. . . . . .  C ADDR   01BDH   A   
GTEMP1 . . . . . .  C ADDR   01D4H   A   
HEX_BCD. . . . . .  C ADDR   01E5H   A   
INIT1. . . . . . .  C ADDR   0169H   A   
INIT18B20. . . . .  C ADDR   0150H   A   
INIT2. . . . . . .  C ADDR   016BH   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
RBYTE1 . . . . . .  C ADDR   0193H   A   
READBYTE . . . . .  C ADDR   018DH   A   
READID . . . . . .  C ADDR   0230H   A   
READ_BYTES . . . .  C ADDR   01B2H   A   
R_BYTES1 . . . . .  C ADDR   01B4H   A   
START. . . . . . .  C ADDR   0100H   A   
STLP1. . . . . . .  C ADDR   0116H   A   
TEMP . . . . . . .  N NUMB   0060H   A   
TEMP_RESULT. . . .  C ADDR   023EH   A   
TEMP_TAB . . . . .  C ADDR   0264H   A   
WBYTE1 . . . . . .  C ADDR   017AH   A   
WRITEBYTE. . . . .  C ADDR   0174H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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