📄 18b20hh.lst
字号:
A51 MACRO ASSEMBLER 18B20HH 05/02/2008 02:18:47 PAGE 1
MACRO ASSEMBLER A51 V8.00d
OBJECT MODULE PLACED IN 18B20hh.OBJ
ASSEMBLER INVOKED BY: D:\PROGRA~1\KEIL\C51\BIN\KA51.EXE 18B20hh.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;--------- 下面是DS18B20测温实验源程序 ---------
0000 2 ORG 0000H
0000 758160 3 START: MOV SP,#60H ;开机初始化
0003 7580FF 4 MOV P0,#0FFH
0006 7590FF 5 MOV P1,#0FFH
0009 75A0FF 6 MOV P2,#0FFH
000C 75B0FF 7 MOV P3,#0FFH
8
000F 120017 9 MAIN: LCALL GET_TEMPER ;调用读温度子程序
0012 1200A6 10 LCALL DISP ;调用数码管显示子程序
0015 010F 11 AJMP MAIN ;重复循环
12 ;------ 读DS18B20传感器的温度值 ------
0017 13 GET_TEMPER:
0017 D2B7 14 SETB P3.7
0019 12003B 15 LCALL RET18B20 ;复位
001C 200001 16 JB 00H,DSS2
001F 22 17 RET
0020 74CC 18 DSS2: MOV A,#0CCH ;跳过ROM匹配
0022 12006A 19 LCALL WR18B20
0025 7444 20 MOV A,#44H ;向DS18B20发出温度转换命令
0027 12006A 21 LCALL WR18B20
002A 12003B 22 LCALL RET18B20 ;准备读温度前先复位DS18B20
002D 74CC 23 MOV A,#0CCH ;跳过ROM匹配
002F 12006A 24 LCALL WR18B20
0032 74BE 25 MOV A,#0BEH ;向DS18B20发出读温度命令
0034 12006A 26 LCALL WR18B20
0037 120082 27 LCALL RE18B20 ;读出温度数据
003A 22 28 RET
29 ;------ DS18B20复位初始化程序 ------
003B 30 RET18B20:
003B D2B7 31 SETB P3.7
003D 00 32 NOP
003E C2B7 33 CLR P3.7
0040 786B 34 MOV R0,#06BH ;主机发出复位低脉冲
0042 7903 35 MOV R1,#03H
0044 D8FE 36 DSR1: DJNZ R0,DSR1
0046 786B 37 MOV R0,#6BH
0048 D9FA 38 DJNZ R1,DSR1
004A D2B7 39 SETB P3.7 ;拉高数据线
004C 00 40 NOP
004D 00 41 NOP
004E 00 42 NOP
004F 7825 43 MOV R0,#25H
0051 30B705 44 DSR2: JNB P3.7,DSR3 ;等待DS18B20回应
0054 D8FB 45 DJNZ R0,DSR2
0056 02005E 46 LJMP DSR4
0059 D200 47 DSR3: SETB 00H ;置标志位,表示DS1820存在
005B 020063 48 LJMP DSR5
005E C200 49 DSR4: CLR 00H ;清标志位,表示DS1820不存在
0060 020067 50 LJMP DSR7
0063 786B 51 DSR5: MOV R0,#06BH
0065 D8FE 52 DSR6: DJNZ R0,DSR6 ;延时一段时间
0067 D2B7 53 DSR7: SETB P3.7
0069 22 54 RET
55 ;------ 写DS18B20的子程序 ------
006A 56 WR18B20:
006A 7A08 57 MOV R2,#8
006C C3 58 CLR C
A51 MACRO ASSEMBLER 18B20HH 05/02/2008 02:18:47 PAGE 2
006D C2B7 59 WR1: CLR P3.7
006F 7B06 60 MOV R3,#6
0071 DBFE 61 DJNZ R3,$
0073 13 62 RRC A
0074 92B7 63 MOV P3.7,C
0076 7B17 64 MOV R3,#23
0078 DBFE 65 DJNZ R3,$
007A D2B7 66 SETB P3.7
007C 00 67 NOP
007D DAEE 68 DJNZ R2,WR1
007F D2B7 69 SETB P3.7
0081 22 70 RET
71 ;------ 从DS18B20中读温度数据程序 ------
0082 72 RE18B20:
0082 7C02 73 MOV R4,#2
0084 792F 74 MOV R1,#2FH
0086 7A08 75 RE00: MOV R2,#8
0088 C3 76 RE01: CLR C
0089 D2B7 77 SETB P3.7
008B 00 78 NOP
008C 00 79 NOP
008D C2B7 80 CLR P3.7
008F 00 81 NOP
0090 00 82 NOP
0091 00 83 NOP
0092 D2B7 84 SETB P3.7
0094 7B09 85 MOV R3,#09
0096 DBFE 86 RE10: DJNZ R3,RE10
0098 A2B7 87 MOV C,P3.7
009A 7B17 88 MOV R3,#23
009C DBFE 89 RE20: DJNZ R3,RE20
009E 13 90 RRC A
009F DAE7 91 DJNZ R2,RE01
00A1 F7 92 MOV @R1,A
00A2 19 93 DEC R1
00A3 DCE1 94 DJNZ R4,RE00
00A5 22 95 RET
96 ;-------- 显示子程序 --------
00A6 E52F 97 DISP: MOV A,2FH
00A8 A270 98 MOV C,70H
00AA 13 99 RRC A
00AB A271 100 MOV C,71H
00AD 13 101 RRC A
00AE A272 102 MOV C,72H
00B0 13 103 RRC A
00B1 A273 104 MOV C,73H
00B3 13 105 RRC A
00B4 F52F 106 MOV 2FH,A
00B6 E52F 107 MOV A,2FH
00B8 75F00A 108 MOV B,#10
00BB 84 109 DIV AB
00BC F530 110 MOV 30H,A
00BE 85F031 111 MOV 31H,B
00C1 E530 112 MOV A,30H
00C3 9000E8 113 MOV DPTR,#SGTB
00C6 93 114 MOVC A,@A+DPTR
00C7 F5A0 115 MOV P2,A ;显示温度"十位"值
00C9 758080 116 MOV P0,#80H
00CC 1200FC 117 LCALL YS4722U
00CF E531 118 MOV A,31H
00D1 9000E8 119 MOV DPTR,#SGTB
00D4 93 120 MOVC A,@A+DPTR
00D5 F5A0 121 MOV P2,A ;显示温度"个位"值
00D7 758001 122 MOV P0,#01H
00DA 1200FC 123 LCALL YS4722U
00DD 74C6 124 MOV A,#11000110B
A51 MACRO ASSEMBLER 18B20HH 05/02/2008 02:18:47 PAGE 3
00DF F5A0 125 MOV P2,A ;显示温度符号"C"
00E1 758002 126 MOV P0,#02H
00E4 1200FC 127 LCALL YS4722U
00E7 22 128 RET
129 ;************* 8位共阳数码管显示器字型码表 *****************
00E8 C0F9A4B0 130 SGTB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
00EC 999282F8
00F0 8090
00F2 8883C6A1 131 DB 88H,83H,0C6H,0A1H,86H,8EH,89H,0A3H,8CH,0C8H
00F6 868E89A3
00FA 8CC8
00FC 132 YS4722U:
00FC 7C0A 133 MOV R4,#10 ;延时子程序
00FE 7DD8 134 Y3: MOV R5,#216
0100 DDFE 135 DJNZ R5,$
0102 DCFA 136 DJNZ R4,Y3
0104 22 137 RET
138
139
140 END
A51 MACRO ASSEMBLER 18B20HH 05/02/2008 02:18:47 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
B. . . . . . . . . D ADDR 00F0H A
DISP . . . . . . . C ADDR 00A6H A
DSR1 . . . . . . . C ADDR 0044H A
DSR2 . . . . . . . C ADDR 0051H A
DSR3 . . . . . . . C ADDR 0059H A
DSR4 . . . . . . . C ADDR 005EH A
DSR5 . . . . . . . C ADDR 0063H A
DSR6 . . . . . . . C ADDR 0065H A
DSR7 . . . . . . . C ADDR 0067H A
DSS2 . . . . . . . C ADDR 0020H A
GET_TEMPER . . . . C ADDR 0017H A
MAIN . . . . . . . C ADDR 000FH A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
RE00 . . . . . . . C ADDR 0086H A
RE01 . . . . . . . C ADDR 0088H A
RE10 . . . . . . . C ADDR 0096H A
RE18B20. . . . . . C ADDR 0082H A
RE20 . . . . . . . C ADDR 009CH A
RET18B20 . . . . . C ADDR 003BH A
SGTB . . . . . . . C ADDR 00E8H A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 0000H A
WR1. . . . . . . . C ADDR 006DH A
WR18B20. . . . . . C ADDR 006AH A
Y3 . . . . . . . . C ADDR 00FEH A
YS4722U. . . . . . C ADDR 00FCH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
PA51 中文汇编系统
Version 8.1 (C) Copyright 2007.7
登陆 http://pa51.cn 了解更多咨询
技术论坛 http://bbs.pa51.cn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -