📄 读ds18b20地址.lst
字号:
A51 MACRO ASSEMBLER 读DS18B20礯址 06/03/2007 09:41:03 PAGE 1
MACRO ASSEMBLER A51 V6.12
OBJECT MODULE PLACED IN .\读DS18B20地址.OBJ
ASSEMBLER INVOKED BY: D:\keil c51\C51\BIN\A51.EXE .\读DS18B20地址.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;12MHZ,默认,读18B20序号
0080 2 sbit TMDAT =P0^0
0000 3 ORG 0000H
0000 0120 4 AJMP MAIN
0020 5 ORG 0020H
0020 7B10 6 MAIN: mov r3,#10h ;清楚存储编号单元
0022 7840 7 mov r0,#40h
0024 7600 8 ss: mov @r0,#0
0026 08 9 inc r0
0027 DBFB 10 djnz r3,ss
0029 758160 11 MOV SP,#60H
002C C2AF 12 CLR EA ;使用ds1820一定要禁止任何中断产生
002E 120062 13 LCALL INT ;初始化ds1820
0031 7433 14 MOV A,#33H
0033 120084 15 LCALL WRITE ;送入读ds1820的ROM命令
0036 12009C 16 LCALL READ ;开始读出当前ds1820序列号
0039 F540 17 MOV 40H,A
003B 12009C 18 LCALL READ
003E F541 19 MOV 41H,A
0040 12009C 20 LCALL READ
0043 F542 21 MOV 42H,A
0045 12009C 22 LCALL READ
0048 F543 23 MOV 43H,A
004A 12009C 24 LCALL READ
004D F544 25 MOV 44H,A
004F 12009C 26 LCALL READ
0052 F545 27 MOV 45H,A
0054 12009C 28 LCALL READ
0057 F546 29 MOV 46H,A
0059 12009C 30 LCALL READ
005C F547 31 MOV 47H,A
005E D2AF 32 SETB EA
0060 80FE 33 SJMP $
34 ;----------------------------------------------------------------
0062 35 INT: ;初始化ds1820子程序
0062 C2AF 36 CLR EA
0064 C280 37 L0: CLR TMDAT ;ds1820总线为低复位电平
0066 7AC8 38 MOV R2,#200
0068 C280 39 L1: CLR TMDAT
006A DAFC 40 DJNZ R2,L1 ;总线复位电平保持400us
006C D280 41 SETB TMDAT ;释放ds1820总线
006E 7A1E 42 MOV R2,#30
0070 DAFE 43 L4: DJNZ R2,L4 ;释放ds1820总线保持60us
0072 2080EF 44 jb TMDAT,L0 ;存在吗 不存在则重新来
0075 7E50 45 MOV R6,#80
0077 7280 46 L5: ORL C,TMDAT
0079 4004 47 JC L3
007B DEFA 48 DJNZ R6,L5
007D 80E5 49 SJMP L0
007F 7AF0 50 L3: MOV R2,#240
0081 DAFE 51 L2: DJNZ R2,L2
0083 22 52 RET
53 ;-----------------------------------------------------------------------------
0084 54 WRITE: ;向ds1820写操作命令子程序
0084 C2AF 55 CLR EA
0086 7B08 56 MOV R3,#8 ;写入ds1820的bit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -