📄 bdz.lst
字号:
281 int jiajian(int min,int max,int savx) //加减,上限,下限
282 {
283 1 bit i=1;
284 1 int j=0,x=0;
285 1 js(savx);
286 1 delay(1500);
287 1 while(i)
288 1 {
289 2 if((SUB==1)&&(ADD==1)) //没有键按下时,X一直记数
290 2 { j=0;x=x+1;
291 3 }
292 2 else {j=j+1;x=0;} //有键按下时,J一直记数
293 2 if(ADD==0)
294 2 {
295 3 delay(100);
296 3 if(ADD==0) //有加按下
297 3 { if(j<15)
298 4 savx=savx+1;
299 4 if((j>=15)&&(j<30))
300 4 savx=savx+10;
301 4 if(j>=30)
C51 COMPILER V7.20 BDZ 08/25/2006 20:43:45 PAGE 6
302 4 savx=savx+100;
303 4 }
304 3 }
305 2 if(SUB==0)
306 2 {
307 3 delay(100); //有减按下
308 3 if(SUB==0)
309 3 {
310 4 if(j<15)
311 4 savx=savx-1;
312 4 if((j>=15)&&(j<30))
313 4 savx=savx-10;
314 4 if(j>=30)
315 4 savx=savx-100;
316 4 }
317 3 }
318 2 if(savx>max) //如果数值大于上限,不再加
319 2 savx=max;
320 2 if(savx<min) //如果数值小于下限,不再减
321 2 savx=min;
322 2 js(savx);
323 2 if(SET==0)
324 2 {
325 3 delay(100);
326 3 if(SET==0)
327 3 i=0; //退出循环
328 3 }
329 2 if(x>=25)
330 2 {i=0; savx=OV_TIM;} //一定时间内没有键按下,退出循环,返回OV_TIM
331 2 delay(1200);
332 2 }
333 1 return(savx);
334 1 }
335
336 /*---------------------------------------------------
337 功能: 将三位数码管对应的值读出后,修改,再写入
338 参数: 1 24C02器件地址, min 下限 max 上限 vidao 自定义字符
339 返回: int型 修改后的值
340 -------------------------------------------------------*/
341 int shd_3(int addrss,int min,int max)
342 { int save=0,sav=0;
343 1 save=read(addrss,iic);
344 1 js(save);
345 1 delay(800);
346 1 sav=jiajian(min,max,save);
347 1 if(sav!=OV_TIM)
348 1 {
349 2 write(addrss,sav,iic);
350 2 }
351 1 return(sav);
352 1 }
353 byte caiji(void)
354 {
355 1 byte cai=0,i;
356 1 CS=1; _nop_();_nop_();
357 1 CS=0;
358 1 for(i=0;i<=7;i++)
359 1 {
360 2 cai=cai<<1;
361 2 CLK=0;
362 2 _nop_();_nop_();CLK=1;
363 2 cai|=(DA&0x01);
C51 COMPILER V7.20 BDZ 08/25/2006 20:43:45 PAGE 7
364 2 }
365 1 CS=1;
366 1 return(cai);
367 1
368 1 }
369 byte zh(byte ca)
370 {
371 1 byte tem_n;
372 1 tem_n=(230-50)*ca/256+50;
373 1 return(tem_n);
374 1 }
375 void stin(void)
376 { uint time;
377 1 //uint time,tem_shax,tem_xiax;
378 1 tem_xiax=read(tem_xiax_addr,iic);
379 1 tem_shax=read(tem_shax_addr,iic);
380 1 if((tem_xiax>230)||(tem_xiax<50))
381 1 {
382 2 tem_xiax=50;
383 2 }
384 1 if((tem_shax>230)||(tem_xiax<50)||(tem_shax<tem_xiax))
385 1 {
386 2 tem_shax=230;
387 2 }
388 1 time=read(time_addr,iic);
389 1 if((time>999)||(time<0))
390 1 {
391 2 time=0;
392 2 }
393 1 JDQ=1;
394 1 FMQ=1;
395 1 }
396 /*============================中断与主程序部分============================================================
-==*/
397 void T1_int() interrupt 3 using 3
398 {
399 1 TH1=HI;
400 1 TL1=LO;
401 1 if(cai_N>=150)
402 1 {
403 2 TH0=0;
404 2 TL0=0;
405 2 cai_N=0;
406 2 cai_flag=1;
407 2 }
408 1 else
409 1 cai_N++;
410 1
411 1 if((n>=1)&&(n<=3))
412 1 switch(n)
413 1 {
414 2 case 1:
415 2 duan|=0x7f;
416 2 _nop_();_nop_();_nop_();_nop_();
417 2 com0=0;com1=1;com2=1; //high
418 2 duan=smg[t2];
419 2 _nop_();_nop_();_nop_();_nop_();
420 2 break;
421 2 case 2:
422 2 duan|=0x7f;
423 2 _nop_();_nop_();_nop_();_nop_();
424 2 com0=1;com1=0;com2=1; //high
C51 COMPILER V7.20 BDZ 08/25/2006 20:43:45 PAGE 8
425 2 duan=smg[t1];
426 2 _nop_();_nop_();_nop_();_nop_();
427 2 break;
428 2 case 3:
429 2 duan|=0x7f;
430 2 _nop_();_nop_();_nop_();_nop_();
431 2 com0=1;com1=1;com2=0; //high
432 2 duan=smg[t0];
433 2 _nop_();_nop_();_nop_();_nop_();
434 2 break;
435 2 }
436 1 n++;
437 1 if(n>=4) n=1;
438 1 }
439 void init_t01(void)
440 {
441 1 P0=0xff;P1=0xff;P2=0xff;P3=0xff;
442 1 TH1 = HI;
443 1 TL1 = LO;
444 1 TH0=0; //| EA | |--| |--| | ES | | ET1 | |EX0| |ET0| |EX0|
445 1 TL0=0; // 1 0 1 0 0 0
446 1 TMOD = 0x11; //| GATE | C/T | M1 | M2| GATE | C/T| M1| M2 |
447 1 IE=0x88; // 0 0 0 1 0 1 0 1
448 1 TR0=1; //T1工作在定时器方式,T0工作在定时器方式
449 1 TR1=1;
450 1 }
451 main()
452 {
453 1
454 1 I_init(); //IIC处处市
455 1 init_t01(); //定时器,计数器初始化
456 1 stin(); //读出2402中存储的数据
457 1
458 1 while(1)
459 1 {
460 2 if(MOD==0)
461 2 { delay(200); //2
462 3 if(MOD==0) //
463 3 { // mod_flag=1;
464 4 count++;
465 4 if(count==1)
466 4 {
467 5 mod_led=0;
468 5 xiax_linshi=shd_3(tem_xiax_addr,50,230);
469 5 if(xiax_linshi!=OV_TIM)
470 5 tem_xiax=xiax_linshi;
471 5 mod_led=1;
472 5 }
473 4 if(count==2)
474 4 {
475 5 mod_led=0;
476 5 if(xiax_linshi==OV_TIM)
477 5 shd_3(tem_shax_addr,(tem_xiax+1),230);
478 5 else
479 5 shd_3(tem_shax_addr,(xiax_linshi+1),230);
480 5 mod_led=1;
481 5 }
482 4 if(count==3)
483 4 {
484 5 mod_led=0;
485 5 shd_3(time_addr,0,999);
486 5 mod_led=1;
C51 COMPILER V7.20 BDZ 08/25/2006 20:43:45 PAGE 9
487 5 }
488 4 if(count==4)
489 4 {
490 5 mod_led=0;
491 5 js(0);
492 5 delay(20000);
493 5 j=10000;
494 5 count=0;
495 5 JDQ=1; //断开
496 5 mod_led=1;
497 5 }
498 4 }
499 3 }
500 2
501 2 caij=caiji();
502 2 tem_now=zh(caij);
503 2 if((tem_now>230)&&(tem_now<50))
504 2 {
505 3 tem_now=0;
506 3 }
507 2 js(tem_now);
508 2
509 2 if(flag==1)
510 2 { JDQ=0;
511 3 if(tem_now>=tem_shax)
512 3 { JDQ=1;
513 4 FMQ=0;
514 4 cai_N=0;
515 4 cai_flag=0;
516 4 if(cai_flag==1)
517 4 {FMQ=1;cai_flag=0;flag=0;}
518 4 }
519 3 }
520 2 else
521 2 { JDQ=0;
522 3 if(tem_now>=tem_shax)
523 3 { JDQ=1;
524 4 FMQ=0;
525 4 cai_N=0;
526 4 cai_flag=0;
527 4 if(cai_flag==1)
528 4 {FMQ=1;cai_flag=0;}
529 4 }
530 3 }
531 2
532 2 if(tem_now<tem_shax)
533 2 {
534 3 if((SET==0))
535 3 {
536 4 delay(200);
537 4 if(SET==0)
538 4 {
539 5 flag=1;
540 5 }
541 4 }
542 3 else
543 3 {
544 4 flag=0;
545 4 }
546 3 }
547 2 }
548 1
C51 COMPILER V7.20 BDZ 08/25/2006 20:43:45 PAGE 10
549 1 }
550
551 /*========================================================================================================
-=*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1545 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 21 36
IDATA SIZE = ---- ----
BIT SIZE = 1 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -