📄 text1.lst
字号:
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include"reg51.h"
2 #include<lcd.c>
3 #include <absacc.h>
4 #include <intrins.h>
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit rs=P1^6;
9 sbit rw=P1^5;
10 sbit ep=P1^4;
11 sbit DQ=P3^6;
12 unsigned char DS18B20_F=0;
13
14 uchar code table[]={"0123456789"};
15
16 unsigned char x=0;
17
18 void delay(unsigned int i)//延时函数
19 {
20 1 while(i--);
21 1 }
22
23
24 void xmjc(void) //闲忙检测
25 {
26 1 rs=0;
27 1 rw=1;
28 1 ep=1;
29 1 while(P2&0x80)
30 1 ;
31 1 ep=0;
32 1 }
33
34
35 void xml(unsigned char comm) //写命令
36 {
37 1 xmjc();
38 1 rs=0;
39 1 rw=0;
40 1 ep=1;
41 1 P2=comm;
42 1 ep=0;
43 1 }
44
45 void xsj(unsigned char dat)
46 {
47 1 xmjc();
48 1 rs=1;
49 1 rw=0;
50 1 ep=1;
51 1 P2=dat;
52 1 ep=0;
53 1 }
54 void lcd_init(void) //1602初始化
55 {
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 2
56 1 xml(0x38);
57 1 xml(0x06);//光标和显示模式设置
58 1 xml(0x0c);
59 1 xml(0x01);
60 1 }
61
62
63 void aa(uchar str,uchar lengch)
64 {
65 1 uchar i;
66 1 for(i=0;i<lengch;i++)
67 1 {
68 2 xsj(str);
69 2 }
70 1 }
71
72
73
74 //unsigned char templ=0;
75 //unsigned char temph=0;
76 //float temperature ;
77 //sbit LED1=P1^3;
78 //sbit LED2=P1^2;
79 /*********************************************************************
80 函数功能:延时子程序
81 入口参数:time
82 出口参数:
83 **********************************************************************/
84
85 void wait1(unsigned int j)
86 { while(j--);
87 1 }
88
89 /************************
90 初始化
91 *************************/
92 void Init_DS18B20(void) //复位成功时返回1,否则返回0
93 { //unsigned char n=255;
94 1 DQ=1;
95 1 _nop_();
96 1 _nop_();
97 1 DQ=0; //主机拉低1-Wire总线,延时540us产生复位信号
98 1 wait1(60);
99 1 // wait1(180);
100 1 // wait1(180);
101 1 DQ=1; //主机释放1-Wire总线,延时60us等待DS18B20应答
102 1 wait1(2);
103 1
104 1 DS18B20_F=DQ;
105 1 wait1(50);
106 1 }
107 /******************************************************************
108 函数功能:数码管显示子程序
109 入口参数:
110 出口参数:
111
112
113 void display1(int k)
114 {
115 P1=0xfe;
116 P2=tab[k/1000];
117 wait1(100);
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 3
118 P1=0xfd;
119 P2=tab[k%1000/100];
120 wait1(100);
121 P1=0xfb;
122 P2=tab[k%100/10];
123 wait1(100);
124 P1=0xf7;
125 P2=tab[k%10];
126 wait1(100);
127 }
128 void LedDisp(unsigned char disp)//温度显示子程序
129 { unsigned int time=0;
130 while(time<1000)
131 {
132 P2=tab[disp/10];
133 //LED1=1;
134 //LED2=0;
135 P1=0xf8;
136 wait1(30);
137 P2=tab[disp%10];
138 P1=0xf9;
139 //LED1=0;
140 // LED2=1;
141 wait1(30);
142 ++time;
143 }
144 }
145
146 *********************************************************************/
147 /*********************************************************************
148 函数功能:向ds18b20读一个字节数据
149 入口参数:
150 出口参数:dat
151 *********************************************************************/
152
153
154 unsigned char Readonechar(void)
155 { unsigned char i=0,c;
156 1 c=0;
157 1 for(i=8;i>0;i--)
158 1 {
159 2 DQ=1;
160 2 _nop_();_nop_();
161 2 DQ=0;
162 2 _nop_();_nop_(); //主机拉低1-Wire总线,延时2us
163 2 //wait1(2);
164 2 c>>=1;
165 2 DQ=1;
166 2 //wait1(2);
167 2 if(DQ)
168 2 c|=0x80;
169 2 wait1(7);
170 2 }
171 1 return(c);
172 1 }
173 /**********************************************************************
174 函数功能:向ds18b20写一字节的数据
175 入口参数:dat
176 出口参数:
177 **********************************************************************/
178
179 void Writeonechar(unsigned char c)
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 4
180 { unsigned char i;
181 1 for(i=8;i>0;i--)
182 1 {
183 2 DQ=0; //主机拉低1-Wire总线,延时2us
184 2
185 2 DQ=c&0x01;
186 2 wait1(6); //延时60us等待DS18B20采集数据
187 2 DQ=1; //主机释放总线
188 2
189 2 c>>=1;
190 2 }
191 1 _nop_();_nop_();
192 1 //wait1(7);
193 1 }
194 /***********************************************************************
195 函数功能:向ds18b20读温度值
196 入口参数:
197 出口参数:temperature
198 ************************************************************************/
199 Readtemperature(void)
200 { unsigned char temph=0,templ=0;
201 1 unsigned int temperature=0;
202 1 float temp=0;
203 1 Init_DS18B20();
204 1 if(!DS18B20_F)
205 1 {
206 2 //DS18B20_F=0xff;
207 2 Writeonechar(0xcc);
208 2 Writeonechar(0x44);
209 2 //wait1(50000);
210 2 //wait1(50000);
211 2 Init_DS18B20();
212 2 if(!DS18B20_F)
213 2 {
214 3 Writeonechar(0xcc);
215 3 Writeonechar(0xbe);
216 3 templ=Readonechar();
217 3 temph=Readonechar();
218 3 temperature=temph;
219 3 temperature<<=8;
220 3 temperature=temperature|templ;
221 3 temp=temperature*0.0625;
222 3 temp=temp+0.5;
223 3 //temperature=temp+0.5;
224 3 //temperature=temperature/100;
225 3 //temperature=((temph*256)+templ)*0.0625;
226 3 //return(temperature);
227 3 return(temp);
228 3 }
229 2
230 2 //DS18B20_F=Init_DS18B20();
231 2 //while(DS18B20_F==0xff);
232 2 //DS18B20_F=0xff;
233 2
234 2
235 2
236 2 }
237 1 }
238
239
240 /***********************************************************************
241 函数功能:主程序
C51 COMPILER V8.02 TEXT1 10/24/2008 20:56:23 PAGE 5
242 入口参数:
243 出口参数:
244
245 void main()
246 {
247 unsigned char i=0;
248
249 while(1)
250
251 {
252 i=Readtemperature();
253 LedDisp(i);
254 }
255 }
256 ************************************************************************/
257
258
259
260
261 void main()//主程序
262 {
263 1 unsigned char wendu=0,m, n;
264 1
265 1 lcd_init();
266 1 while(1)
267 1 {
268 2 wendu=ReadTemperature();//读温度
*** WARNING C206 IN LINE 268 OF TEXT1.C: 'ReadTemperature': missing function-prototype
269 2 m=wendu/10;
270 2 n=wendu%10;
271 2 xml(0x82);
272 2 aa(table[m],1);
273 2 xml(0x83);
274 2 aa(table[n],1); //显示温度值
275 2 }
276 1 }
277
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 373 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -