📄 main.lst
字号:
179 2 {
C51 COMPILER V7.00 MAIN 10/10/2007 14:42:11 PAGE 4
180 3 case 1:{//启动测量湿度
181 4 MeasureHum();
182 4 /* aaa=0x12;
183 4 TxData();
184 4 if(F0==1)
185 4 aaa=0xaa;//无器件
186 4 else
187 4 aaa=0x55;//有器件
188 4 TxData();
189 4 */ /*TH0=0Xca;
190 4 TL0=0X00;//11.0592MHz 15mS
191 4 TR0=1;*/
192 4 count=0;
193 4 MeasureMode++;}break;
194 3 case 2:if(count==2)
195 3 {MeasureMode++;count=0;}break;//等待延时
196 3 case 3:{//读湿度数据
197 4 if(SDA==0) //等待测量完毕
198 4 {
199 5 canmea=0;
200 5 hum=CalculateHum();
201 5 dat=floor(hum*100);
202 5 dhum[0]=floor(hum/10);//十位
203 5 ftem=1000;ftem=fmod(dat,ftem);
204 5 dhum[1]=floor(ftem/100);//个位
205 5 dat=ftem;ftem=100;ftem=fmod(dat,ftem);
206 5 dhum[2]=floor(ftem/10);//十分一位
207 5 dat=ftem;ftem=10;ftem=fmod(dat,ftem);
208 5 dhum[3]=floor(ftem);//百分一位
209 5 /* for(p=dhum,i=0;i<4;i++,p++)
210 5 {aaa=*p;TxData();}
211 5 */ MeasureMode++;
212 5 }
213 4 }break;
214 3 case 4:if(count==2)
215 3 {MeasureMode++;count=0;}break;//等待延时
216 3 case 5:{//启动测量温度
217 4 MeasureTem();
218 4 /* aaa=0x13;
219 4 TxData();
220 4 if(F0==1)
221 4 aaa=0xaa;//无器件
222 4 else
223 4 aaa=0x55;//有器件
224 4 TxData();
225 4 */ /*TH0=0X28;
226 4 TL0=0X00;//11.0592MHz 60mS
227 4 TR0=1;*/
228 4 count=0;
229 4 MeasureMode++;}break;
230 3 case 6:if(count==4)
231 3 {MeasureMode++;count=0;}break;//等待延时
232 3 case 7:{//读温度数据
233 4 if(SDA==0)//等待测量完毕
234 4 {
235 5 canmea=0;
236 5 tem=CalculateTem();
237 5 // dat=fsign(tem/100);
238 5 // p=&tem;aaa=*p;
239 5 if (tem<0)
240 5 {dtem[0]=0x0f;//符号位
241 6 tem=fabs(tem);
C51 COMPILER V7.00 MAIN 10/10/2007 14:42:11 PAGE 5
242 6 }
243 5 else
244 5 {tem=fabs(tem);
245 6 ftem=100;
246 6 ftem=fmod(tem,ftem);
247 6 dtem[0]=floor(ftem);//百位
248 6 }
249 5 dtem[1]=floor(tem/10);//十位
250 5 ftem=10;
251 5 ftem=fmod(tem,ftem);
252 5 dtem[2]=floor(ftem);//个位
253 5 ftem=fmod(ftem*10,10);
254 5 dtem[3]=floor(ftem);//十分一位
255 5 /* for(p=dtem,i=0;i<4;i++,p++)
256 5 {aaa=*p;TxData();}
257 5 */ MeasureMode=1;uartflasT=1;okmea=0;/*P0=~P0;*/
258 5 }
259 4 }break;
260 3 default:;
261 3 }
262 2 }
263 1 }
264 /*************************************Rmain END *******************************/
265 /**************************************Measure START ******************************/
266 /*void measure(void)
267 {
268 }
269 /**************************************Measure END ******************************/
270 /*void TxData (void)
271 {
272 SBUF=aaa;
273 while(TI==0);
274 TI=0;
275
276 }*/
277 void Inituart(void)
278 {
279 1 TMOD = 0x21; //timer1 working mode 1
280 1 TL1 = 0xfd; //fb=9600 for 18.432mhz Fosc,and ...
281 1 TH1 = 0xfd; //fd=9600 for 11.0592mhz Fosc
282 1 SCON = 0x50; //uart mode 3,ren==1
283 1 //PCON = 0x80; //smod=0
284 1 TR1 = 1; //start timer1
285 1 ES=1;
286 1 }
287 void Inittimer0(void)
288 {
289 1 TMOD = 0x21; //timer0 working mode 1
290 1 TL0 = 0x00; //
291 1 TH0 = 0xb8; //20ms for 11.0592mhz Fosc
292 1 TR0 = 1; //start timer1
293 1 ET0=1;EA=1;
294 1 }
295 //--------------------------------------------------------------------------------------------------
296 // 函数名称: timer0
297 // 定时器0中断函数
298 // 函数功能: 计时
299 //--------------------------------------------------------------------------------------------------
300 void timer0 (void) interrupt 1 using 2
301 {
302 1 TH0=0Xb8;
303 1 TL0=0X00;//11.0592MHz 20mS
C51 COMPILER V7.00 MAIN 10/10/2007 14:42:11 PAGE 6
304 1 if (MeasureMode==2)count++;
305 1 if (MeasureMode==4)count++;
306 1 if (MeasureMode==6)count++;
307 1 second++;
308 1 if (second==100)
309 1 {
310 2 second=0;
311 2 /* switch(MeasureMode)
312 2 {
313 2 case 4:{MeasureMode++;}break;
314 2 case 0:{MeasureMode++;}break;
315 2 default:;
316 2 }*/
317 2 }
318 1 }
319 //--------------------------------------------------------------------------------------------------
320 // 函数名称: uart
321 // 定时器0中断函数
322 // 函数功能: 计时
323 //--------------------------------------------------------------------------------------------------
324 void uart (void) interrupt 4 using 0
325 {
326 1 uchar dsbuf;
327 1 if(RI==1)
328 1 {
329 2 RI=0;dsbuf=SBUF;
330 2 switch(dsbuf)
331 2 {
332 3 case 0X80:{rnum=0;}break;
333 3 case 0X7F:{uartflasR=1;}break;
334 3 // case 0Xaa:{SBUF=0x55;tlen=0;}break;
335 3 default:{receivebuf[rnum]=dsbuf;
336 4 rnum++;}
337 3 }
338 2 }
339 1 if(TI==1)
340 1 {
341 2 TI=0;
342 2 if (tnum<tlen)
343 2 {SBUF=sendbuf[tnum];tnum++;
344 3 }
345 2 }
346 1 }
347
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1147 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 32 4
IDATA SIZE = 27 ----
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 + -