📄 计价器存储.lst
字号:
389 3 }
390 2 if(shangjian()==1) //按下三键,停止
391 2 {
392 3 k=~k;
393 3 if(k==1) //第一次按下,停止计价
394 3 {
395 4 TR1=0;
396 4 a=4;
397 4 }
398 3 if(k==0) //第二次按下,显示时间,数据清0
399 3 {
400 4 a=0;
401 4 lucheng[5]=0;
402 4 lucheng[6]=18;
403 4 lucheng[7]=0;
404 4 lucheng[0]=0;
405 4 lucheng[1]=0;
406 4 lucheng[2]=18;
407 4 lucheng[3]=0;
408 4 zongjia[0]=18;
409 4 zongjia[1]=0;
410 4 zongjia[5]=0;
411 4 zongjia[6]=18;
412 4 zongjia[7]=0;
413 4 break;
414 4 }
415 3 }
416 2 }
417 1 }
418
419 gaijia() //改价子程序
420 {
421 1 a=2; //改价显示
422 1 i=8;
423 1 while(1)
424 1 {
425 2 if(shangjian()==1) //三键按下,退出程序
426 2 goto loop;
C51 COMPILER V8.02 计价芲存储 03/12/2007 20:08:55 PAGE 8
427 2 if(erjian()==1) //二键按下,进入输密码程序
428 2 {
429 3 //if(mi()==1) //密码正确,跳出循环
430 3 // {
431 3 a=2;
432 3 break;
433 3 // }
434 3 // else
435 3 // {
436 3 // a=0;goto loop; //密码错误,退出
437 3 // }
438 3 }
439 2 if(yijian()==1) //按下一键,进入改密码单元
440 2 {
441 3 gaimi();
442 3 goto loop;
443 3 }
444 2 }
445 1 for(i=7;i>=0;i--) //循环8次
446 1 {
447 2 if(i==5|i==2) continue; //如果是第二位或第五位,不改
448 2 if((i==7|i==4|i==1)&jiage[i]<18) jiage[i]=18; //一、四、七位显示小数点
449 2 while(1)
450 2 {
451 3 if(shangjian()==1) //按下三键,价格减1
452 3 {
453 4 jiage[i]--;
454 4 if(jiage[i]<0|jiage[i]==17)
455 4 jiage[i]=jiage[i]+10;
456 4 }
457 3 if(erjian()==1) //按下二键,价格加1
458 3 {
459 4 jiage[i]++;
460 4 if(jiage[i]==10|jiage[i]==28)
461 4 jiage[i]=jiage[i]-10;
462 4 }
463 3 if(yijian()==1) break; //按下一键,移到下一位
464 3 }
465 2 }
466 1 wrtorom(jiage,8,8);
467 1
468 1 loop:;
469 1 a=0; //退出后显示时间
470 1 i=0;
471 1 }
472
473
474
475
476 void main() //主程序
477 {
478 1 TMOD=0x42; //初始化
479 1 TH0=0x06;
480 1 TL0=0x06;
481 1 TH1=7192;
482 1 TL1=7192;
483 1 TR0=1;
484 1 ET0=1;
485 1 ET1=1;
486 1 EA=1;
487 1 P0=duanma[shijian[dis]] ; //P0口输出段码
488 1 P2=weima[dis]; //P2口输出位码
C51 COMPILER V8.02 计价芲存储 03/12/2007 20:08:55 PAGE 9
489 1
490 1 rdfromrom(jiage,8,8) ;
491 1 while(1)
492 1 {
493 2 if(yijian()==1) //一键按下,进入改时间程序
494 2 {
495 3 tiaoshi();
496 3 }
497 2 if(erjian()==1) //二键按下,进入计价程序
498 2 {
499 3 jijia();
500 3 }
501 2 if(shangjian()==1) //三键按下,进入改价格程序
502 2 {
503 3 gaijia();
504 3 }
505 2 if(kaiguan()==1) //白天,晚上转换开关
506 2 {
507 3 m=1;
508 3 }
509 2 else m=0;
510 2 }
511 1 }
512
513 void t0(void) interrupt 1 using 1 //定时器0中断
514 {
515 1 tcnt++;
516 1 ms++;
517 1 if(ms==8)
518 1 {
519 2 ms=0;
520 2 switch(a) //显示模块开关
521 2 {
522 3 case 0: if((i==dis|(i-1)==dis)&i>0) //0:显示时间
523 3 {
524 4 if(tcnt<1500) //闪动程序
525 4 {
526 5 P0=duanma[17];
527 5 }
528 4 else P0=duanma[shijian[dis]];
529 4 break;
530 4 }
531 3 else P0=duanma[shijian[dis]]; break;
532 3 case 1: P0=duanma[lucheng[dis]]; break; //1:显示路程
533 3 case 2: if(i==dis&i>=0) //2:显示价格
534 3 {
535 4 if(tcnt<1500)
536 4 {
537 5 P0=duanma[17];
538 5 }
539 4 else P0=duanma[jiage[dis]] ; break;
540 4 }
541 3 else P0=duanma[jiage[dis]] ; break;
542 3 case 3: if(shijian[1]%2==1) //3:路程,总价循环显示
543 3 {
544 4 P0=duanma[lucheng[dis]] ; break;
545 4 }
546 3 else P0=duanma[zongjia[dis]]; break;
547 3 case 4: P0=duanma[zongjia[dis]]; break; //4:总价显示
548 3 case 5: if(i==dis&i>=0) //5:输密码显示
549 3 {
550 4 if(tcnt<1500)
C51 COMPILER V8.02 计价芲存储 03/12/2007 20:08:55 PAGE 10
551 4 {
552 5 P0=duanma[17];
553 5 }
554 4 else P0=duanma[mima[dis]];
555 4 break;
556 4 }
557 3 else P0=duanma[mima[dis]]; break;
558 3 case 6: if(i==dis&i>=0) //6:改密码显示
559 3 {
560 4 if(tcnt<1500)
561 4 {
562 5 P0=duanma[17];
563 5 }
564 4 else P0=duanma[mima1[dis]];
565 4 break;
566 4 }
567 3 else P0=duanma[mima1[dis]]; break;
568 3 }
569 2 P2=weima[dis]; //位码扫描
570 2 dis++;
571 2 if(dis==8)
572 2 {
573 3 dis=0;
574 3 }
575 2 }
576 1
577 1 if(tcnt==3685)
578 1 {
579 2 if(TR1==1) //计数器开始状态,计时间
580 2 {
581 3 lucheng[0]++;
582 3 if(lucheng[0]==10)
583 3 {
584 4 lucheng[0]=0;
585 4 lucheng[1]++;
586 4 if(lucheng[1]==6)
587 4 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -