📄 af.lst
字号:
C51 COMPILER V7.06 AF 08/25/2008 22:11:52 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AF
OBJECT MODULE PLACED IN af.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE af.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "configur.h"
2 #define uchar unsigned char
3
4 sbit DQ = P2^0;
5 uchar TempBuffer[5] ;
6 uchar temp_value;
7
8 /***********ds18b20子程序*************************/
9
10 /***********ds18b20延迟子函数(晶振12MHz )*******/
11
12 void delay_18B20(unsigned int i)
13 {
14 1 while(i--);
15 1 }
16
17 /**********ds18b20初始化函数**********************/
18
19 void Init_DS18B20(void)
20 {
21 1 unsigned char x=0;
22 1 DQ = 1; //DQ复位
23 1 delay_18B20(8); //稍做延时
24 1 DQ = 0; //单片机将DQ拉低
25 1 delay_18B20(80); //精确延时 大于 480us
26 1 DQ = 1; //拉高总线
27 1 delay_18B20(14);
28 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
29 1 delay_18B20(20);
30 1 }
31
32 /***********ds18b20读一个字节**************/
33
34 unsigned char ReadOneChar(void)
35 {
36 1 uchar i=0;
37 1 uchar dat = 0;
38 1 for (i=8;i>0;i--)
39 1 {
40 2 DQ = 0; // 给脉冲信号
41 2 dat>>=1;
42 2 DQ = 1; // 给脉冲信号
43 2 if(DQ)
44 2 dat|=0x80;
45 2 delay_18B20(4);
46 2 }
47 1 return(dat);
48 1 }
49
50 /*************ds18b20写一个字节****************/
51
52 void WriteOneChar(uchar dat)
53 {
54 1 unsigned char i=0;
55 1 for (i=8; i>0; i--)
C51 COMPILER V7.06 AF 08/25/2008 22:11:52 PAGE 2
56 1 {
57 2 DQ = 0;
58 2 DQ = dat&0x01;
59 2 delay_18B20(5);
60 2 DQ = 1;
61 2 dat>>=1;
62 2 }
63 1 }
64
65 /**************读取ds18b20当前温度************/
66
67 void ReadTemp(void)
68 {
69 1 unsigned char a=0;
70 1 unsigned char b=0;
71 1 unsigned char t=0;
72 1
73 1 Init_DS18B20();
74 1 WriteOneChar(0xCC); // 跳过读序号列号的操作
75 1 WriteOneChar(0x44); // 启动温度转换
76 1
77 1 delay_18B20(100); // this message is wery important
78 1
79 1 Init_DS18B20();
80 1 WriteOneChar(0xCC); //跳过读序号列号的操作
81 1 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
82 1
83 1 delay_18B20(100);
84 1
85 1 a=ReadOneChar(); //读取温度值低位
86 1 b=ReadOneChar(); //读取温度值高位
87 1 temp_value=b<<4;
88 1 temp_value+=(a&0xf0)>>4;
89 1
90 1 TempBuffer[0]=temp_value/10+'0'; //十位
91 1 TempBuffer[1]=temp_value%10+'0'; //个位
92 1 TempBuffer[2]=0xdf; //温度符号
93 1 TempBuffer[3]='C';
94 1 TempBuffer[4]='\0';
95 1 }
96
97
98
99
100 void main()
101 {char disp1[]={"Today is sunday"};
102 1 char disp2[]={"Tempture is: "};
103 1 lcdinit();
104 1 Init_DS18B20( ) ;
105 1
106 1 while(1)
107 1 {
108 2
109 2 ReadTemp();
110 2 writestring(0x80,disp1);
111 2 writestring(0xc0,disp2);
112 2 writestring(0xcc,TempBuffer);
113 2
114 2 //writestring(0x80,disp2);
115 2
116 2 }
117 1 }
C51 COMPILER V7.06 AF 08/25/2008 22:11:52 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 391 ----
CONSTANT SIZE = 30 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 31
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 + -