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