📄 text1.lst
字号:
235 3 a[i]=a[i+1];
236 3 a[i+1]=temp;}
237 2 }
238 1
239 1 for(i=1;i<=4;i++)
240 1 {
241 2 sum+=a[i];
C51 COMPILER V8.02 TEXT1 02/26/2009 16:22:34 PAGE 5
242 2 }
243 1 baochi=(uint)(sum/4);
244 1 wendu=(baochi-1394)*10/87;
245 1 }
246
247
248 /*******************显示设置温度用**********************************/
249
250 void dtwd()
251 {
252 1
253 1 if(hide_t1<2)
254 1 {display_char(10,1,(table[0]+'0'));
255 2
256 2
257 2 }
258 1 else
259 1 {
260 2
261 2 display_char(10,1,' ');
262 2
263 2 }
264 1 if(hide_t2<2)
265 1 {display_char(11,1,(table[1]+'0'));
266 2
267 2
268 2 }
269 1 else
270 1 {
271 2
272 2 display_char(11,1,' ');
273 2
274 2 }
275 1 }
276
277 /*****************************************************/
278
279 /********************设置**************************/
280 void set()
281 {
282 1 switch(count)
283 1 {case 1:do{lstemp=table[0];
284 3 if(up==1){up=0;lstemp++;}
285 3 if(down==1){down=0;lstemp--;}
286 3 if(lstemp>0x09)lstemp=0;
287 3 if(lstemp==-1)lstemp=0x09;
288 3 table[0]=lstemp;
289 3 hide_t1++;
290 3 hide_t2=0;
291 3 if(hide_t1>3)
292 3 hide_t1=0;
293 3 dtwd();
294 3 }
295 2 while(count==2);break;
296 2 case 2:
297 2 do{
298 3 lstemp=table[1];
299 3 if(up==1){up=0;lstemp++;}
300 3 if(down==1){down=0;lstemp--;}
301 3 if(lstemp>0x09)lstemp=0;
302 3 if(lstemp==-1)lstemp=0x09;
303 3 table[1]=lstemp;
C51 COMPILER V8.02 TEXT1 02/26/2009 16:22:34 PAGE 6
304 3 hide_t2++;
305 3 hide_t1=0;
306 3 if(hide_t2>3)
307 3 hide_t2=0;
308 3 dtwd();
309 3 }
310 2 while(count==3);break;
311 2 case 3: do {(stPID.setpoint)=wen_du=(uint)((table[0])*10+table[1]); ET1=0;count=0;done=0;dl_1ms(
-);display_char(10,1,(table[0]+'0'));dl_1ms();display_char(11,1,(table[1]+'0')); ET1=1;dl_1ms();EX0=1;}while (count==4);
-break;
312 2
313 2 default: (stPID.setpoint)=wen_du=(uint)((table[0])*10+table[1]); ET1=0;count=0;done=0;dl_1ms();
-display_char(10,1,(table[0]+'0'));dl_1ms();display_char(11,1,(table[1]+'0')); ET1=1;dl_1ms(); EX0=1; break;
314 2 }
315 1 }
316
317 /*****************************************************/
318
319 void key_clockontrol(void) //键盘映射
320 { switch(key)
321 1 {case 0x10:done=1;up=0;down=0;count++;break;
322 2 case 0x20:up=1;break;
323 2 case 0x40:down=1;break;
324 2 case 0x80:done=1;count=3;break;
325 2 default:break;}
326 1 }
327 /******************************************************************/
328
329 void keyboard() interrupt 2 using 3 //键盘扫描
330 {
331 1 unsigned char i,j,w;
332 1
333 1
334 1 EX1=0;
335 1 EX0=0;
336 1 key=0;
337 1 delay();
338 1 if(~XBYTE[0xf800]&0x0f)
339 1 {
340 2 w=XBYTE[0xf8f0]&0x0f;
341 2 if(~w&0x0f)
342 2 {
343 3 i=4;
344 3 j=w;
345 3 w=0xff;
346 3 }
347 2 w=XBYTE[0xf8e8]&0x0f;
348 2 if(~w&0x0f)
349 2 {
350 3 i=3;
351 3 j=w;
352 3 w=0xff;
353 3 }
354 2 w=XBYTE[0xf8d8]&0x0f;
355 2 if(~w&0x0f)
356 2 {
357 3 i=2;
358 3 j=w;
359 3 w=0xff;
360 3 }
361 2 w=XBYTE[0xf8b8]&0x0f;
362 2 if(~w&0x0f)
C51 COMPILER V8.02 TEXT1 02/26/2009 16:22:34 PAGE 7
363 2 {
364 3 i=1;
365 3 j=w;
366 3 w=0xff;
367 3 }
368 2 w=XBYTE[0xf878]&0x0f;
369 2 if(~w&0x0f)
370 2 {
371 3 i=0;
372 3 j=w;
373 3 w=0xff;
374 3 }
375 2 w=~j;
376 2 key=(w<<4)|i;
377 2 }
378 1 while(~XBYTE[0xf800]&0xf);
379 1 key_clockontrol();
380 1 EX1=1;
381 1 }
382
383
384
385
386
387
388 /****************************************************************/
389
390 void main()
391 {
392 1 stPID.proportion=4;
393 1 stPID.integral=0;
394 1 stPID.derivative=2;
395 1 inttilcs(); //液晶初始化
396 1 EX0=1;
397 1
398 1 TH1=(65536-1000)/256;
399 1 TL1=(65536-1000)%256;
400 1 EX1=1;
401 1 IT0=1;
402 1 TCON=0x55;
403 1 TMOD=0X19;
404 1 TH0=TL0=0;
405 1 TR0=1;
406 1 p12=1;
407 1
408 1 EA=1;
409 1
410 1 while(1)
411 1 {if(c>6||c==6)
412 2 {
413 3 pxbj();
414 3 c=0;
415 3 diswendu();
416 3 /*******************发射所得到的温度数据***************************************/
417 3 TR0=0;
418 3 TR1=0;
419 3 EX0=0;
420 3 EX1=0;
421 3 transmit(wendu);
422 3 EX0=1;
423 3 EX1=1;
424 3 TR0=1;
C51 COMPILER V8.02 TEXT1 02/26/2009 16:22:34 PAGE 8
425 3 TR1=1;
426 3
427 3
428 3
429 3 /*****************************************************************************/
430 3 p12=1;
431 3 dtwd();
432 3 fout=PIDCalc(&stPID,wendu);
433 3 ET1=1;
434 3 if(fout>0)
435 3 { p15=1;
436 4 display_char(10,0,'k');
437 4 }
438 3 if(fout<0){
439 4 p15=0;
440 4 display_char(10,0,'g');}
441 3 }
442 2 if(fout==0)
443 2 {ET1=0;
444 3 p15=0;
445 3 display_char(10,0,' ');
446 3 }
447 2 if(done==1)
448 2 {
449 3
450 3 set();} //进入调整模式
451 2
452 2 delay();
453 2
454 2 }
455 1
456 1
457 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1757 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 79 27
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -