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

📄 test.lst

📁 一个51单片机温度控制器,又一个示范如何在2051这样的小内存小ROM单片机上实现实时多任务小例子.使用时间片和状态机来完成任务的调度,而不是靠任务切换机制(这样小的资源是不足以支持RTOS的)
💻 LST
📖 第 1 页 / 共 3 页
字号:
 482   2                      warm_start = 0;
 483   2                      time_min = 0;
 484   2                      time_sec = 0;
 485   2              }
 486   1      }
 487          
C51 COMPILER V7.04   TEST                                                                  05/10/2004 15:25:07 PAGE 9   

 488          #define FLASH_CHECK(x) disp_flash % x < x / 2
 489          void sys_run(){
 490   1              temper_limit = temper+20;
 491   1              if (temper_limit > TEMPER_LIMIT_MAX)
 492   1                      temper_limit = TEMPER_LIMIT_MAX;
 493   1              while(1){
 494   2                      if (!sys_wake_up)
 495   2                              continue;
 496   2                      sys_wake_up = 0;
 497   2                      temper = temper_gate2temper(temper_gate);
 498   2                      if (set_temper_limit_delay){
 499   3                              set_temper_limit_delay--;
 500   3                              if (set_temper_limit_delay == 0)
 501   3                                      temper_limit = temper+20;
 502   3                      }
 503   2                      key_scan();
 504   2                      if(function_select == FUCTION_NORMAL){
 505   3                              if (warm_start && time_min - warm_timer_start< warm_timer){//timer_long 为0时,定时器不再作输出.
 506   4                                      //打开设备
 507   4                                      if (temper < temper_limit){                     //温度高于或达到设定值停止加热
 508   5                                              WARM = 1;
 509   5                                      }else if (temper >= temper_limit)
 510   4                                              WARM = 0;
 511   4                                      disp_flash++;
 512   4                                      if(FLASH_CHECK(1000))
 513   4      //                                      disp_on = 1;
 514   4                                              time_dot_on = 1;
 515   4                                      else
 516   4      //                                      disp_on = 0;
 517   4                                              time_dot_on = 0;
 518   4                              } else {
 519   4                                              //关闭设备
 520   4                                              WARM = 0;
 521   4      //                                      disp_on = 1;
 522   4                                              time_dot_on = 0;
 523   4                                              warm_start = 0;
 524   4                              }
 525   3                              if (light_start && time_min - light_timer_start < light_timer){//light_timer 为0时,定时器不再作输出.
 526   4                                      //打开设备
 527   4                                              LIGHT = 1;
 528   4                              } else {
 529   4                                      //关闭设备
 530   4                                      LIGHT = 0;
 531   4                                      light_start = 0;
 532   4                              }
 533   3                              if (jx_start && time_min - jx_timer_start < jx_timer){//jx_timer 为0时,定时器不再作输出.
 534   4                                      //打开设备
 535   4                                              JX = 1;
 536   4                              } else {
 537   4                                      //关闭设备
 538   4                                      JX = 0;
 539   4                                      jx_start = 0;
 540   4                              }
 541   3                              if (!(warm_start || light_start || jx_start))//所有功能都关闭时,时间清0
 542   3                                      time_min = 0;
 543   3                      } else {
 544   3                              disp_flash++;
 545   3                              if(FLASH_CHECK(1000))
 546   3                                      disp_on = 1;
 547   3                              else
 548   3                                      disp_on = 0;
 549   3                      }
C51 COMPILER V7.04   TEST                                                                  05/10/2004 15:25:07 PAGE 10  

 550   2                      
 551   2                      if (function_select == FUCTION_TIME_MIN100){
 552   3                              disp_off_cs = 3;
 553   3                              out_time(warm_timer);
 554   3                              out_temper(temper_limit);
 555   3                      }else if (function_select == FUCTION_TIME_MIN10){
 556   3                              disp_off_cs = 4;
 557   3                              out_time(warm_timer);
 558   3                              out_temper(temper_limit);
 559   3                      }else if (function_select == FUCTION_TIME_MIN){
 560   3                              disp_off_cs = 5;
 561   3                              out_time(warm_timer);
 562   3                              out_temper(temper_limit);
 563   3                      }else if (function_select == FUCTION_TEMPER10){
 564   3                              disp_off_cs = 0;
 565   3                              out_time(warm_timer);
 566   3                              out_temper(temper_limit);
 567   3                      }else if (function_select == FUCTION_TEMPER){
 568   3                              disp_off_cs = 1;
 569   3                              out_time(warm_timer);
 570   3                              out_temper(temper_limit);
 571   3                      }else{
 572   3                              disp_off_cs = DISP_WIDTH;
 573   3                              out_time(warm_start?time_min:warm_timer);
 574   3                              if (warm_start && light_start && jx_start)
 575   3                                      out_temper(temper_limit);
 576   3                              else
 577   3                                      out_temper(temper);
 578   3                      }
 579   2                      out_jx_light();
 580   2      #if 0
              {
              unsigned char i;
              disp_buff[0] = disp_buff[1] = disp_buff[2] = disp_buff[3] = disp_buff[4] = disp_buff[5] = 0;
              for(i=0; i<8; i++)
              {
              if (key_reg &(1<<i))
                      disp_buff[4] = font[i];
              }
              }
              #endif
 591   2                      if (!power_status){
 592   3                              disp_off_cs = DISP_WIDTH;
 593   3                              disp_on = 0;
 594   3                      }
 595   2                      out_disp_buff();
 596   2              }
 597   1      }
 598          
 599          
 600          
 601          void main(){
 602   1              timer_init();
 603   1              sys_run();
 604   1      }
 605          
 606          
 607          #if 0
              code temper_tab_t temper_tab[100]={
                      {550, 0},
                      {550, 1},
                      {550, 2},
C51 COMPILER V7.04   TEST                                                                  05/10/2004 15:25:07 PAGE 11  

                      {550, 3},
                      {550, 4},
                      {550, 5},
                      {550, 6},
                      {550, 7},
                      {550, 8},
                      {550, 9},
                      {550, 10},
                      {550, 11},
                      {550, 12},
                      {550, 13},
                      {550, 14},
                      {550, 15},
                      {550, 16},
                      {550, 17},
                      {550, 18},
                      {550, 19},
                      {550, 20},
                      {550, 21},
                      {550, 22},
                      {550, 23},
                      {550, 24},
                      {550, 25},
                      {550, 26},
                      {550, 27},
                      {550, 28},
                      {550, 29},
                      {550, 30},
                      {550, 31},
                      {550, 32},
                      {550, 33},
                      {550, 34},
                      {550, 35},
                      {550, 36},
                      {550, 37},
                      {550, 38},
                      {550, 39},
                      {550, 40},
                      {550, 41},
                      {550, 42},
                      {550, 43},
                      {550, 44},
                      {550, 45},
                      {550, 46},
                      {550, 47},
                      {550, 48},
                      {550, 49},
                      {550, 50},
                      {550, 51},
                      {550, 52},
                      {550, 53},
                      {550, 54},
                      {550, 55},
                      {550, 56},
                      {550, 57},
                      {550, 58},
                      {550, 59},
                      {550, 60},
                      {550, 61},
                      {550, 62},
                      {550, 63},
                      {550, 64},
C51 COMPILER V7.04   TEST                                                                  05/10/2004 15:25:07 PAGE 12  

                      {550, 65},
                      {550, 66},
                      {550, 67},
                      {550, 68},
                      {550, 69},
                      {550, 70},
                      {550, 71},
                      {550, 72},
                      {550, 73},
                      {550, 74},
                      {550, 75},
                      {550, 76},
                      {550, 77},
                      {550, 78},
                      {550, 79},
                      {550, 80},
                      {550, 81},
                      {550, 82},
                      {550, 83},
                      {550, 84},
                      {550, 85},
                      {550, 86},
                      {550, 87},
                      {550, 88},
                      {550, 89},
                      {550, 90},
                      {550, 91},
                      {550, 92},
                      {550, 93},
                      {550, 94},
                      {550, 95},
                      {550, 96},
                      {550, 97},
                      {550, 98},
                      {550, 99},
              };
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1644    ----
   CONSTANT SIZE    =     28    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     47       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =     15       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -