?? ds18b20_driver.lst
字號:
C51 COMPILER V7.20 DS18B20_DRIVER 04/29/2007 18:26:40 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE DS18B20_DRIVER
OBJECT MODULE PLACED IN DS18B20_Driver.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE DS18B20_Driver.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /********************************************************************
3 //模 塊 名 : 溫度采集演示程序
4 //創(chuàng) 建 者 : 楊 勇
5 日期 : 2007年4月29日 17:20
6 //修 改 者 :
7 日期 :
8 //功能描述 :
9 //其他說明 : 22.1184MHz晶振
10 //芯片型號 : AT89S52
11 //配 置 :
12 //版 本 : V1.0
13 ********************************************************************/
14
15
16 #include <reg52.h> //包含51單片機的頭文件
17 #include<absacc.h>
18 #include<stdio.h>
19
20 #define uint unsigned int
21 #define uchar unsigned char
22
23
24 sbit dq=P3^7;
25
26
27 void delay(uchar usecinds);
28 uchar ow_reset(void);
29 uchar read_byte(void);
30 void write_byte(char val);
31 int Read_Temperatuture(void);
32
33
34 /*=============================================================================
35 //函 數(shù) 名: void delay(uchar useconds)
36 //參 數(shù): 無
37 //返 回 值: int
38 //函數(shù)功能: 讀取溫度函數(shù)
39 //編 寫 者: 楊 勇
40 //編寫日期: 2007年4月29日 18:11
41 ===============================================================================*/
42 int Read_Temperatuture(void)
43 {
44 1 union{
45 1 uchar c[2];
46 1 int x;
47 1 }temp;
48 1
49 1 ow_reset();
50 1 write_byte(0xcc); //跳過ROM
51 1 write_byte(0xbe); //讀RAM
52 1 temp.c[1]=read_byte();
53 1 temp.c[0]=read_byte();
54 1 ow_reset();
55 1 write_byte(0xcc);
C51 COMPILER V7.20 DS18B20_DRIVER 04/29/2007 18:26:40 PAGE 2
56 1 write_byte(0x44); //開始翻轉(zhuǎn)
57 1 return temp.x/2;
58 1 }
59
60 /*=============================================================================
61 //函 數(shù) 名: uchar read_byte(void)
62 //參 數(shù): 無
63 //返 回 值: uchar
64 //函數(shù)功能: 讀取一個字節(jié)函數(shù)
65 //編 寫 者: 楊 勇
66 //編寫日期: 2007年4月29日 18:11
67 ===============================================================================*/
68
69 uchar read_byte(void)
70 {
71 1 uchar i;
72 1 uchar value=0;
73 1 for(i=8;i>0;i--)
74 1 {
75 2 value>>=1;
76 2 dq=0; // 低電平
77 2 dq=1; // 返回高電平
78 2 delay(2);
79 2 if(dq)value|=0x80;
80 2 delay(12);
81 2 }
82 1 return(value);
83 1 }
84
85 /*=============================================================================
86 //函 數(shù) 名: void write_byte(char val)
87 //參 數(shù): 無
88 //返 回 值: uchar
89 //函數(shù)功能: 寫一個字節(jié)函數(shù)
90 //編 寫 者: 楊 勇
91 //編寫日期: 2007年4月29日 18:11
92 ===============================================================================*/
93
94 void write_byte(char val)
95 {
96 1 uchar i;
97 1 for(i=8;i>0;i--) //一次寫一個字節(jié)
98 1 {
99 2 dq=0;
100 2 dq=val&0x01;
101 2 delay(10); //端口懸掛
102 2 dq=1;
103 2 val=val/2;
104 2 }
105 1 delay(10);
106 1 }
107
108
109 /*=============================================================================
110 //函 數(shù) 名: uchar read_byte(void)
111 //參 數(shù): 無
112 //返 回 值: uchar
113 //函數(shù)功能: 復(fù)位函數(shù)
114 //編 寫 者: 楊 勇
115 //編寫日期: 2007年4月29日 18:11
116 ===============================================================================*/
117 uchar ow_reset(void)
C51 COMPILER V7.20 DS18B20_DRIVER 04/29/2007 18:26:40 PAGE 3
118 {
119 1 uchar presence;
120 1 dq=0; //設(shè)低電平
121 1 delay(58); //延時480us
122 1 dq=1; //高電平
123 1 delay(6); //等待
124 1 presence=dq; //取允許信號
125 1 delay(50);
126 1 return(presence); //返回允許信號
127 1 }
128
129
130 /*=============================================================================
131 //函 數(shù) 名: void delay(uchar useconds)
132 //參 數(shù): uchar useconds
133 //返 回 值: 無
134 //函數(shù)功能: 延時函數(shù)
135 //編 寫 者: 楊 勇
136 //編寫日期: 2007年4月29日 18:11
137 ===============================================================================*/
138
139 void delay(uchar useconds)
140 {
141 1 for(;useconds>0;useconds--);
142 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 170 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -