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

📄 d18b203.lst

📁 单片机C语言教程
💻 LST
字号:
A51 MACRO ASSEMBLER  D18B203                                                              08/10/2007 21:45:25 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;****************************************************************
                       2     ;/* 这是DS18B20的汇编程序,  文件名D18B203.ASM                     */
                       3     ;/* 功能:本程序主要是读出多个DS18B20芯片转换后的温度值,这里用   */
                       4     ;/*    两个DS18B20芯片。单片机的P1.0接DS18B20的BQ。第1个DS18B20   */
                       5     ;/*    芯片的温度值放在50H和51H单元(高字节在50H中),第2个DS18B20*/
                       6     ;/*    芯片的温度值放在52H和53H单元(高字节在52H中)。本程序适合  */
                       7     ;/*    多个DS18B20 和51单片机的连接,晶振为12MHZ左右。             */
                       8     ;******************************************************************
  0090                 9     DQ   EQU    P1.0
0000                  10          ORG 0000H
0000 0120             11          AJMP MAIN
0020                  12          ORG 0020H
0020                  13     MAIN:
0020 758160           14          MOV SP,#60H
0023 120028           15          LCALL GET_TEMP
0026 80FE             16          SJMP $
0028                  17     GET_TEMP:
0028 C2D4             18          CLR PSW.4
002A D2D3             19          SETB PSW.3  ;设置工作寄存器当前所在的区域
002C C2AF             20          CLR EA      ;使用ds1820一定要禁止任何中断产生
002E 1200BA           21          LCALL INT   ;调用初使化子程序
0031 74CC             22          MOV A,#0CCH
0033 1200DE           23          LCALL WRITE ;送入跳筊OM命令
0036 7444             24          MOV A, #44H
0038 1200DE           25          LCALL WRITE ;送入温度转换命令
                      26     
003B 1200BA           27          LCALL INT   ;温度转换完全,再次初使化ds1820
003E 7455             28          MOV A,#55H
0040 1200DE           29          LCALL WRITE ;送入匹配ROM命令
0043 7428             30          MOV A,#28H
0045 1200DE           31          LCALL WRITE ;发第1个DS18B20序列号(28H,10H,46H,0E2H,00,00,00,7EH)
0048 7410             32          MOV A,#10H
004A 1200DE           33          LCALL WRITE
004D 7446             34          MOV A,#46H
004F 1200DE           35          LCALL WRITE
0052 74E2             36          MOV A,#0E2H
0054 1200DE           37          LCALL WRITE
0057 7400             38          MOV A,#00H
0059 1200DE           39          LCALL WRITE
005C 7400             40          MOV A,#00H
005E 1200DE           41          LCALL WRITE
0061 7400             42          MOV A,#00H
0063 1200DE           43          LCALL WRITE
0066 747E             44          MOV A,#7EH
0068 1200DE           45          LCALL WRITE
006B 74BE             46          MOV A,#0BEH
006D 1200DE           47          LCALL WRITE ;送入读温度暂存器命令
0070 1200F6           48          LCALL READ
0073 F551             49          MOV 51H,A   ;读出温度值低字节存入51H
0075 11F6             50          CALL READ
0077 F550             51          MOV 50H,A   ;读出谩度值高字节存入50H
                      52     
0079 1200BA           53          LCALL INT   ;再次初使化ds1820
007C 7455             54          MOV A,#55H
007E 1200DE           55          LCALL WRITE ;送入匹配ROM命令
0081 7428             56          MOV A,#28H
0083 1200DE           57          LCALL WRITE ;发第2个DS18B20序列号(28H,24H,0C5H,39H,00,00,00,5FH)
0086 7424             58          MOV A,#24H
A51 MACRO ASSEMBLER  D18B203                                                              08/10/2007 21:45:25 PAGE     2

0088 1200DE           59          LCALL WRITE
008B 74C5             60          MOV A,#0C5H
008D 1200DE           61          LCALL WRITE
0090 7439             62          MOV A,#39H
0092 1200DE           63          LCALL WRITE
0095 7400             64          MOV A,#00H
0097 1200DE           65          LCALL WRITE
009A 7400             66          MOV A,#00H
009C 1200DE           67          LCALL WRITE
009F 7400             68          MOV A,#00H
00A1 1200DE           69          LCALL WRITE
00A4 745F             70          MOV A,#5FH
00A6 1200DE           71          LCALL WRITE
00A9 74BE             72          MOV A,#0BEH
00AB 1200DE           73          LCALL WRITE ;送入读温度暂存器命令
00AE 1200F6           74          LCALL READ
00B1 F553             75          MOV 53H,A   ;读出温度值低字节存入53H
00B3 11F6             76          CALL READ
00B5 F552             77          MOV 52H,A   ;读出谩度值高字节存入52H
00B7 D2AF             78          SETB EA
00B9 22               79          RET
                      80     
00BA                  81     INT:           ;初始化ds1820子程序
00BA C2AF             82         CLR EA
00BC C290             83     L0: CLR DQ     ;ds1820总线为低复位电平
00BE 7AC8             84         MOV R2,#200
00C0 C290             85     L1: CLR DQ
00C2 DAFC             86         DJNZ R2,L1 ;总线复位电平保持400us
00C4 D290             87         SETB DQ    ;释放ds1820总线
00C6 7A1E             88         MOV R2,#30
00C8 DAFE             89     L4: DJNZ R2,L4 ;释放ds1820总线保持60us
00CA C3               90         CLR C      ;清存在信号
00CB 7290             91         ORL C,DQ
00CD 40ED             92         JC L0      ;存在吗?不存在则重新来
00CF 7E50             93         MOV R6,#80
00D1 7290             94     L5: ORL C,DQ
00D3 4004             95         JC L3
00D5 DEFA             96         DJNZ R6,L5
00D7 80E3             97         SJMP L0
00D9 7AF0             98     L3: MOV R2,#240
00DB DAFE             99     L2: DJNZ R2,L2
00DD 22              100         RET
                     101     
00DE                 102     WRITE:          ;向ds1820写操作命令子程序
00DE C2AF            103         CLR EA
00E0 7B08            104         MOV R3,#8   ;写入ds1820的bit

⌨️ 快捷键说明

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