📄 www.ourhc.cn.lst
字号:
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 21:32:57 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:STC12C5A60S2单片机之DS18B20温度传感器12T
5 使用芯片:STC12C5A60S2
6 晶振:11.0592MHZ
7 波特率:115200
8 编译环境:Keil
9 作者:zhangxinchun
10 网站:www.ourhc.cn
11 淘宝店:
12 汇诚科技 http://ourhc.taobao.com
13 郑兴电子直销部 http://shop68451856.taobao.com
14 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
15
16
17 *********************************************************************/
18 #include "REG52.H"
19 #include "INTRINS.H"
20
21 typedef unsigned char BYTE;
22
23 sbit DQ = P3^3; //DS18B20的数据口位P3.3
24 BYTE TPH; //存放温度值的高字节
25 BYTE TPL; //存放温度值的低字节
26
27 void DelayXus(BYTE n);
28 void DS18B20_Reset();
29 void DS18B20_WriteByte(BYTE dat);
30 BYTE DS18B20_ReadByte();
31
32 void main()
33 {
34 1 DS18B20_Reset(); //设备复位
35 1 DS18B20_WriteByte(0xCC); //跳过ROM命令
36 1 DS18B20_WriteByte(0x44); //开始转换命令
37 1 while (!DQ); //等待转换完成
38 1
39 1 DS18B20_Reset(); //设备复位
40 1 DS18B20_WriteByte(0xCC); //跳过ROM命令
41 1 DS18B20_WriteByte(0xBE); //读暂存存储器命令
42 1 TPL = DS18B20_ReadByte(); //读温度低字节
43 1 TPH = DS18B20_ReadByte(); //读温度高字节
44 1
45 1 while (1);
46 1 }
47
48 /**************************************
49 延时X*10微秒(STC90C52RC@12M)
50 不同的工作环境,需要调整此函数
51 当改用1T的MCU时,请调整此延时函数
52 **************************************/
53 void DelayX0us(BYTE n)
54 {
55 1 while (n--)
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 21:32:57 PAGE 2
56 1 {
57 2 _nop_();
58 2 _nop_();
59 2 }
60 1 }
61
62 /**************************************
63 复位DS18B20,并检测设备是否存在
64 **************************************/
65 void DS18B20_Reset()
66 {
67 1 CY = 1;
68 1 while (CY)
69 1 {
70 2 DQ = 0; //送出低电平复位信号
71 2 DelayX0us(48); //延时至少480us
72 2 DQ = 1; //释放数据线
73 2 DelayX0us(6); //等待60us
74 2 CY = DQ; //检测存在脉冲
75 2 DelayX0us(42); //等待设备释放数据线
76 2 }
77 1 }
78
79 /**************************************
80 从DS18B20读1字节数据
81 **************************************/
82 BYTE DS18B20_ReadByte()
83 {
84 1 BYTE i;
85 1 BYTE dat = 0;
86 1
87 1 for (i=0; i<8; i++) //8位计数器
88 1 {
89 2 dat >>= 1;
90 2 DQ = 0; //开始时间片
91 2 _nop_(); //延时等待
92 2 _nop_();
93 2 DQ = 1; //准备接收
94 2 _nop_(); //接收延时
95 2 _nop_();
96 2 if (DQ) dat |= 0x80; //读取数据
97 2 DelayX0us(6); //等待时间片结束
98 2 }
99 1
100 1 return dat;
101 1 }
102
103 /**************************************
104 向DS18B20写1字节数据
105 **************************************/
106 void DS18B20_WriteByte(BYTE dat)
107 {
108 1 char i;
109 1
110 1 for (i=0; i<8; i++) //8位计数器
111 1 {
112 2 DQ = 0; //开始时间片
113 2 _nop_(); //延时等待
114 2 _nop_();
115 2 dat >>= 1; //送出数据
116 2 DQ = CY;
117 2 DelayX0us(6); //等待时间片结束
C51 COMPILER V8.05a WWW_OURHC_CN 06/03/2012 21:32:57 PAGE 3
118 2 DQ = 1; //恢复数据线
119 2 }
120 1 }
121
122 /********************************************************************
123 结束
124 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 140 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -