📄 ds1802.lst
字号:
C51 COMPILER V8.02 DS1802 06/01/2008 12:34:31 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS1802
OBJECT MODULE PLACED IN DS1802.obj
COMPILER INVOKED BY: D:\ElectronicTools\KeilC51\C51\BIN\C51.EXE C_H\DS1802.C BROWSE DEBUG OBJECTEXTEND PRINT(.\DS1802.ls
-t) OBJECT(DS1802.obj)
line level source
1 /*******************************DS18B20单总线模块*****************************/
2
3 #include "Includes.h" //文件包含
4 /*************************************************
5 模块级变量申明
6 *************************************************/
7 static void OneWire_Rst(void);
8 static void OneWire_Init(void);
9 static void OneWire_WriteByte(unsigned char cmd);
10 static unsigned char OneWire_ReadByte(void);
11 static void OneWire_Idle(void);
12 /*************************************************
13 子函数定义
14 *************************************************/
15
16 /*******************************************************************************
17 *** 函 数 名: static void OneWire_Init(void)
18 *** 功能描述:
19 *** 全局变量:
20 *** 输 入: NO !
21 *** 输 出: NO !
22 *** 创 建 人:huangtiexiong
23 *** 修 改 人:
24 *** 函数说明: 单总线数据传输初始化;
25 /******************************************************************************/
26 static void OneWire_Init(void)
27 {
28 1 DQ = 1;
29 1 NOP();
30 1 DQ = 0; //拉低数据线,准备Reset OneWire Bus
31 1 Delay_Xus(125); //延时510us,Reset One-Wire Bus.
32 1 Delay_Xus(125);
33 1
34 1 DQ = 1; //提升数据线
35 1 Delay_Xus(15); //延时35us
36 1
37 1 while(DQ)
38 1 { //等待Slave 器件Ack 信号
39 2 NOP();
40 2 }
41 1 Delay_Xus(60); //延时125us
42 1 DQ = 1; //提升数据线,准备数据传输
43 1 }
44 /*******************************************************************************
45 *** 函 数 名: static void OneWire_Rst(void)
46 *** 功能描述:
47 *** 全局变量: No !
48 *** 输 入: NO !
49 *** 输 出: NO !
50 *** 创 建 人:huangtiexiong 日期:2006-11-28
51 *** 修 改 人: 日期:2006-11-28
52 *** 函数说明: 单总线Reset pulse;
53 /******************************************************************************/
54 static void OneWire_Rst(void)
C51 COMPILER V8.02 DS1802 06/01/2008 12:34:31 PAGE 2
55 {
56 1 DQ = 0; //拉低数据线,准备Reset OneWire Bus;
57 1 Delay_Xus(125); //延时511us,Reset One-Wire Bus.
58 1 DQ = 0;
59 1 Delay_Xus(125);
60 1 }
61 /*******************************************************************************
62 *** 函 数 名: static void OneWire_WriteByte(unsigned char cmd)
63 *** 功能描述: 写一个字节;
64 *** 全局变量: NO !
65 *** 输 入: cmd:8bit;
66 *** 输 出: NO !
67 *** 创 建 人:huangtiexiong 日期:2006-11-28
68 *** 修 改 人: 日期:2006-11-28
69 *** 函数说明: cmd主要有Rom操作指令和E2Ram操作指令两种;
70 /******************************************************************************/
71 static void OneWire_WriteByte(unsigned char cmd)
72 {
73 1 unsigned char i;
74 1 for(i=0;i<8;i++)
75 1 {
76 2 if(cmd & 0x01) //低位在前;
77 2 {
78 3 DQ = 0; //结束Recovery time;
79 3 NOP();
80 3 NOP();
81 3 NOP();
82 3 DQ = 1; //发送数据;
83 3 }
84 2 else
85 2 {
86 3 DQ = 0; //结束Rec time;
87 3 NOP();
88 3 NOP();
89 3 NOP();
90 3 //DQ = 0; //发送数据;
91 3 }
92 2 Delay_Xus(30); //等待Slave Device采样;
93 2 DQ = 1; //Recovery;
94 2 NOP(); //Recovery Time Start;
95 2 cmd >>= 1;
96 2 }
97 1 }
98 /*******************************************************************************
99 *** 函 数 名: static unsigned char OneWire_ReadByte(void)
100 *** 功能描述: 读取一个字节;
101 *** 全局变量: NO !
102 *** 输 入: NO !
103 *** 输 出: 8bit data;
104 *** 创 建 人:huangtiexiong 日期:2006-11-28
105 *** 修 改 人: 日期:2006-11-28
106 *** 函数说明: 读之前必须首先写1;
107 /******************************************************************************/
108 static unsigned char OneWire_ReadByte(void)
109 {
110 1 unsigned char i;
111 1 unsigned char tmp = 0;
112 1 DQ = 1; //准备读;
113 1 NOP();
114 1 for(i=0;i<8;i++)
115 1 {
116 2 tmp >>= 1; //低位先发;
C51 COMPILER V8.02 DS1802 06/01/2008 12:34:31 PAGE 3
117 2 DQ = 0; //Read init;
118 2 _nop_(); //2ms;
119 2 DQ = 1; //必须写1,否则读出来的将是不预期的数据;
120 2 Delay_Xus(2); //延时9us;
121 2 _nop_();
122 2 if(DQ) //在12us处读取数据;
123 2 tmp |= 0x80;
124 2 Delay_Xus(30); //延时55us;
125 2 DQ = 1; //恢复One Wire Bus;
126 2 NOP();
127 2 }
128 1 return tmp;
129 1 }
130 /*******************************************************************************
131 *** 函 数 名: static void OneWire_Idle(void)
132 *** 功能描述: 总线空闲模式;
133 *** 全局变量: NO !
134 *** 输 入: NO !
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -