?? d18b203.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芯片轉(zhuǎn)換后的溫度值,這里用 */
4 ;/* 兩個DS18B20芯片。單片機的P1.0接DS18B20的BQ。第1個DS18B20 */
5 ;/* 芯片的溫度值放在50H和51H單元(高字節(jié)在50H中),第2個DS18B20*/
6 ;/* 芯片的溫度值放在52H和53H單元(高字節(jié)在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 ;設(shè)置工作寄存器當(dāng)前所在的區(qū)域
002C C2AF 20 CLR EA ;使用ds1820一定要禁止任何中斷產(chǎn)生
002E 1200BA 21 LCALL INT ;調(diào)用初使化子程序
0031 74CC 22 MOV A,#0CCH
0033 1200DE 23 LCALL WRITE ;送入跳筊OM命令
0036 7444 24 MOV A, #44H
0038 1200DE 25 LCALL WRITE ;送入溫度轉(zhuǎn)換命令
26
003B 1200BA 27 LCALL INT ;溫度轉(zhuǎn)換完全,再次初使化ds1820
003E 7455 28 MOV A,#55H
0040 1200DE 29 LCALL WRITE ;送入匹配ROM命令
0043 7428 30 MOV A,#28H
0045 1200DE 31 LCALL WRITE ;發(fā)第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 ;讀出溫度值低字節(jié)存入51H
0075 11F6 50 CALL READ
0077 F550 51 MOV 50H,A ;讀出謾度值高字節(jié)存入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 ;發(fā)第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 ;讀出溫度值低字節(jié)存入53H
00B3 11F6 76 CALL READ
00B5 F552 77 MOV 52H,A ;讀出謾度值高字節(jié)存入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總線為低復(fù)位電平
00BE 7AC8 84 MOV R2,#200
00C0 C290 85 L1: CLR DQ
00C2 DAFC 86 DJNZ R2,L1 ;總線復(fù)位電平保持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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -