⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os.lst

📁 这是广西大学生设计大赛的源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 378   2        if ( os_EnableVoice[3] & 0x01 )
 379   2        {
 380   3         if ( owbIsSearchEnd( &rom ) )
 381   3         {
 382   4          // finished
 383   4          //owbUnpreSearchDevices(); //no needed
 384   4          owbPreSearchDevices(&rom);
 385   4          bAlarmSearchCycle++;
 386   4          bAlarmSearchCycle %= 3;
 387   4         }
 388   3         else
 389   3         {
 390   4          // unfinished
 391   4         }
 392   3      
 393   3         if (bAlarmSearchCycle < 2)
 394   3         {
 395   4          //ds
 396   4          if ( owbSearchPath(&rom,OWB_DEVICESEARCH) )
 397   4          {
 398   5           // find a device
 399   5           owbReadMeasure(&tempe,TRUE);
 400   5          }
 401   4         }
 402   3         else
 403   3         {
 404   4          //as
 405   4          if ( owbSearchPath(&rom,OWB_ALARMSEARCH) )
 406   4          {
 407   5           // find a alarm
 408   5           g_1HzClock = 0;
 409   5           vocAlarm();
 410   5            lcdTextOut(0,3,"Alm:");
 411   5           for (i=0;i<8;i++) lcdHexOut( owbGetSearchROM(i) );
 412   5          }
 413   4         }
 414   3        }
 415   2        if ((g_1HzClock > 15) && vocIsAlarming())
 416   2        {
 417   3         //alarm time out , stop
 418   3         vocStopAll();
 419   3         lcdTextOut(0,3,"                    ");
 420   3        }
 421   2       }
 422   1      }
 423          
 424          
 425          BYTE osMenu()
 426          {
 427   1       BYTE rt;
C51 COMPILER V8.02   OS                                                                    04/26/2008 21:37:30 PAGE 8   

 428   1      
 429   1       lcdClearDisplay();
 430   1       lcdTextOut(0,0,"1.Sel&Search Device ");
 431   1       lcdTextOut(0,1,"2.Set Date & Time");
 432   1       lcdTextOut(0,2,"3.Alarm Setting");
 433   1       lcdTextOut(0,3,"4.Voice Setting");
 434   1      
 435   1       rt = UIGT_LOOP;
 436   1      
 437   1       while (rt == UIGT_LOOP)
 438   1       {
 439   2        switch ( kbdGetKeyPress() )
 440   2        {
 441   3        case VKEY_CANCEL:
 442   3         rt = UIGT_DESKTOP;
 443   3         break;
 444   3        case VKEY_1:
 445   3         rt = UIGT_SEL_SER_DEVICE;
 446   3         break;
 447   3        case VKEY_2:
 448   3         rt = UIGT_SET_DATETIME;
 449   3         break;
 450   3        case VKEY_3:
 451   3         rt = UIGT_SET_ALARM;
 452   3         break;
 453   3        case VKEY_4:
 454   3         rt = UIGT_SET_VOICE;
 455   3         break;
 456   3        default: ;
 457   3        }
 458   2       }
 459   1      
 460   1       return rt;
 461   1      }
 462          
 463          
 464          void osSetDateTime(void)
 465          {
 466   1       BYTE key,status,unit;
 467   1       DATETIME dtt;
 468   1      
 469   1       lcdClearDisplay();
 470   1       dtt = dttGetCurDateTime();
 471   1       status = OS_STATUS_LOOP | OS_STATUS_REDRAW;
 472   1       unit = 1;  //年位
 473   1      
 474   1       while (status & OS_STATUS_LOOP)
 475   1       {
 476   2        if (dtt.mo == 0) dtt.mo=12;  if (dtt.mo>12) dtt.mo=1;
 477   2        // dd 在下面进行处理
 478   2        if (dtt.hh > 24) dtt.hh=23;  dtt.hh %= 24;
 479   2        if (dtt.mi > 60) dtt.mi=59;  dtt.mi %= 60;
 480   2        if (dtt.ss > 60) dtt.ss=59;  dtt.ss %= 60;
 481   2      
 482   2        if (status & OS_STATUS_REDRAW)
 483   2        {
 484   3         lcdDisplayOnOffControl(1,0,0);   // hide cursor (BIT d, BIT c, BIT b)
 485   3      
 486   3         status &= (~OS_STATUS_REDRAW);
 487   3         lcdTextOut(0,0,"Set Date & Time");
 488   3         lcdTextOut(0,3,"Set with Up/Dn & L/R");
 489   3      
C51 COMPILER V8.02   OS                                                                    04/26/2008 21:37:30 PAGE 9   

 490   3         //" 2000-01-01 00:00:00"
 491   3         lcdTextOut(0,1," ");
 492   3         lcdDateOut(&dtt);
 493   3         lcdTextAddOut(" ");
 494   3         lcdTimeOut(&dtt);
 495   3      
 496   3         switch (unit)
 497   3         {
 498   4         case 1:  key = 4;  break;
 499   4         case 2:  key = 7;  break;
 500   4         case 3:  key = 10;  break;
 501   4         case 4:  key = 13;  break;
 502   4         case 5:  key = 16;  break;
 503   4         case 6:  
 504   4         default: key = 19;
 505   4         }
 506   3         lcdTextOut(key,1,"");
 507   3         lcdDisplayOnOffControl(1,1,0);   // show cursor (BIT d, BIT c, BIT b)
 508   3        }
 509   2      
 510   2        key = kbdGetKeyPress();
 511   2        switch (key)
 512   2        {
 513   3        case VKEY_ENTER:
 514   3         status &= (~OS_STATUS_LOOP);
 515   3         dttSetCurDateTime( &dtt );
 516   3         break;
 517   3        case VKEY_CANCEL:
 518   3         status &= (~OS_STATUS_LOOP);
 519   3         break;
 520   3        case VKEY_UP:
 521   3         switch (unit)
 522   3         {
 523   4         case 1:
 524   4          dtt.yy++;
 525   4          break;
 526   4         case 2:
 527   4          dtt.mo++;
 528   4          break;
 529   4         case 3:
 530   4          if (dtt.dd==31) dtt.dd=1;
 531   4          else   dtt.dd++;
 532   4          break;
 533   4         case 4:
 534   4          dtt.hh++;
 535   4          break;
 536   4         case 5:
 537   4          dtt.mi++;
 538   4          break;
 539   4         case 6:
 540   4          dtt.ss++;
 541   4          break;
 542   4         default:
 543   4          status |= OS_STATUS_REDRAW;
 544   4          unit = 1;
 545   4         }
 546   3         status |= OS_STATUS_REDRAW;
 547   3         break;
 548   3        case VKEY_DOWN:
 549   3         switch (unit)
 550   3         {
 551   4         case 1:
C51 COMPILER V8.02   OS                                                                    04/26/2008 21:37:30 PAGE 10  

 552   4          dtt.yy--;
 553   4          break;
 554   4         case 2:
 555   4          dtt.mo--;
 556   4          break;
 557   4         case 3:
 558   4          if (dtt.dd==1) dtt.dd=31;
 559   4          else           dtt.dd--;
 560   4          break;
 561   4         case 4:
 562   4          dtt.hh--;
 563   4          break;
 564   4         case 5:
 565   4          dtt.mi--;
 566   4          break;
 567   4         case 6:
 568   4          dtt.ss--;
 569   4          break;
 570   4         default:
 571   4          status |= OS_STATUS_REDRAW;
 572   4          unit = 1;
 573   4         }
 574   3         status |= OS_STATUS_REDRAW;
 575   3         break;
 576   3        case VKEY_LEFT:
 577   3         unit--;
 578   3         if (unit<1) unit=6;
 579   3         status |= OS_STATUS_REDRAW;
 580   3         break;
 581   3        case VKEY_RIGHT:
 582   3         unit++;
 583   3         if (unit>6) unit=1;
 584   3         status |= OS_STATUS_REDRAW;
 585   3         break;
 586   3        default: ;
 587   3        }
 588   2       }
 589   1      
 590   1       lcdDisplayOnOffControl(1,0,0);   // hide cursor (BIT d, BIT c, BIT b)
 591   1      
 592   1      // return UIGT_DESKTOP;
 593   1      }
 594          
 595          
 596          // serveic for osSetAlarm
 597          void SetTempe(TEMPE * pT, BYTE bT)
 598          {
 599   1       pT->th = (bT>>4) & 0x0f;
 600   1       if (bT & 0x80) pT->th|=0xf0;
 601   1       pT->tl = (bT<<4) & 0xf0;
 602   1      }
 603          //
 604          void osSetAlarm(void)
 605          {
 606   1       BYTE key,status,tL,tH;
 607   1       BIT  hitTH;
 608   1       TEMPE tempe;
 609   1      
 610   1       lcdClearDisplay();
 611   1       owbReadAlarmValue( &tH, &tL, FALSE );
 612   1       status = OS_STATUS_LOOP | OS_STATUS_REDRAW;
 613   1       hitTH = TRUE;
C51 COMPILER V8.02   OS                                                                    04/26/2008 21:37:30 PAGE 11  

 614   1      
 615   1       while (status & OS_STATUS_LOOP)
 616   1       {
 617   2        if (status & OS_STATUS_REDRAW)
 618   2        {
 619   3         status &= (~OS_STATUS_REDRAW);
 620   3      
 621   3         lcdTextOut(0,0,"Alarm Setting");
 622   3         lcdTextOut(0,1,"    TH: ");
 623   3         SetTempe( &tempe, tH );
 624   3         lcdTempeOut( &tempe, os_TempeUnitInF );
 625   3         lcdTextOut(0,2,"    TL: ");
 626   3         SetTempe( &tempe, tL );
 627   3         lcdTempeOut( &tempe, os_TempeUnitInF );
 628   3         lcdTextOut(0,3,"Set with Up/Dn & L/R");
 629   3      
 630   3         lcdTextOut( 11, (hitTH)?1:2, "" );
 631   3         lcdDisplayOnOffControl(1,1,0);   // show cursor (BIT d, BIT c, BIT b)
 632   3        }
 633   2      
 634   2        key = kbdGetKeyPress();
 635   2        switch (key)
 636   2        {
 637   3        case VKEY_ENTER:
 638   3         status &= (~OS_STATUS_LOOP);
 639   3         owbWriteConfig( tH, tL, OWB_DEFAULTCONFIG, FALSE );
 640   3         break;
 641   3        case VKEY_CANCEL:
 642   3         status &= (~OS_STATUS_LOOP);
 643   3         break;
 644   3        case VKEY_UP:
 645   3         if (hitTH) tH++;
 646   3         else  tL++;
 647   3         status |= OS_STATUS_REDRAW;
 648   3         break;
 649   3        case VKEY_DOWN:
 650   3         if (hitTH) tH--;
 651   3         else  tL--;
 652   3         status |= OS_STATUS_REDRAW;
 653   3         break;
 654   3        case VKEY_LEFT:
 655   3        case VKEY_RIGHT:
 656   3         hitTH = ~hitTH;
 657   3         status |= OS_STATUS_REDRAW;
 658   3         break;
 659   3        default: ;
 660   3        }
 661   2       }
 662   1      
 663   1       lcdDisplayOnOffControl(1,0,0);   // hide cursor (BIT d, BIT c, BIT b)
 664   1      }
 665          
 666          
 667          void osSetVoice(void)
 668          {
 669   1       BYTE key,status;
 670   1       BYTE  hit,y,i;
 671   1       BYTE  enVoc[4];
 672   1      
 673   1       lcdClearDisplay();
 674   1       status = OS_STATUS_LOOP | OS_STATUS_REDRAW;
 675   1       hit = 24;
C51 COMPILER V8.02   OS                                                                    04/26/2008 21:37:30 PAGE 12  

 676   1       for (i=0;i<4;i++) enVoc[i] = os_EnableVoice[i];
 677   1      
 678   1       while (status & OS_STATUS_LOOP)
 679   1       {
 680   2        if (status & OS_STATUS_REDRAW)
 681   2        {
 682   3         status &= (~OS_STATUS_REDRAW);
 683   3         // hit = 0~23 整点报时开关
 684   3         // hit = 24  警报开关
 685   3         for (y=1;y<4;y++)
 686   3         {
 687   4          i = (hit + y + 23) % 25;
 688   4      
 689   4          lcdTextOut( 4, y, "");
 690   4          if (i < 24)
 691   4          {
 692   5           lcdUIntOut( i, 2 );
 693   5           lcdTextAddOut(":00:00");
 694   5          }
 695   4          else
 696   4          {
 697   5           lcdTextAddOut("Alarm   ");
 698   5          }
 699   4      
 700   4          lcdTextOut( 14, y, owbGetRomBit((OWBROM*)enVoc,i)?"on ":"off");
 701   4         }
 702   3      
 703   3         //"Voice Setting       "
 704   3         //"    23:00:00  on    "
 705   3         //" -> Alarm     off   "
 706   3         //"    00:00:00  on    "
 707   3         lcdTextOut(0,0,"Voice Setting");
 708   3         lcdTextOut(1,2,"->");
 709   3        }
 710   2      
 711   2        key = kbdGetKeyPress();
 712   2        switch (key)
 713   2        {
 714   3        case VKEY_ENTER:
 715   3         for (i=0;i<4;i++) os_EnableVoice[i] = enVoc[i];
 716   3         status &= (~OS_STATUS_LOOP);
 717   3         break;
 718   3        case VKEY_CANCEL:
 719   3         status &= (~OS_STATUS_LOOP);
 720   3         break;
 721   3        case VKEY_UP:
 722   3         if (hit>0) hit--;
 723   3         else hit=24;
 724   3         status |= OS_STATUS_REDRAW;
 725   3         break;
 726   3        case VKEY_DOWN:
 727   3         hit++;
 728   3         hit%=25;
 729   3         status |= OS_STATUS_REDRAW;
 730   3         break;
 731   3        case VKEY_LEFT:
 732   3        case VKEY_RIGHT:
 733   3         if ( owbGetRomBit((OWBROM*)enVoc,hit%25) )
 734   3         {
 735   4          owbClrRomBit((OWBROM*)enVoc,hit%25);
 736   4         }
 737   3         else
C51 COMPILER V8.02   OS                                                                    04/26/2008 21:37:30 PAGE 13  

 738   3         {
 739   4          owbSetRomBit((OWBROM*)enVoc,hit%25);
 740   4         }
 741   3         status |= OS_STATUS_REDRAW;
 742   3         break;
 743   3        default: ;
 744   3        }
 745   2       }
 746   1      }
 747          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2635    ----
   CONSTANT SIZE    =    455    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      67
   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 + -