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

📄 text1.lst

📁 一个应用了RTX 51 TINY的工程
💻 LST
字号:
C51 COMPILER V7.06   TEXT1                                                                 04/16/2008 22:21:21 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*------------------------------------------------------------------------
   2          本实例使用12MHZ晶振,采用at89x5x系列单片机,故时间片为10ms
   3          另附proteus仿真工程
   4          制作者:周乾伟
   5          2008年3月31日编写完成
   6          email:huntstart@163.com
   7          -------------------------------------------------------------------------*/
   8          #include <rtx51tny.h>
   9          #include <at89x51.h>
  10          #include <lcd.h>
  11          const seven_seg[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,
  12                                                   0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//共阳0123456789,后十位带点。
  13          unsigned char i=0,j=0,hour=0,minute=0,sec=0,t,a=0;
  14          unsigned int count=0;
  15          unsigned char key_v1[17]={'i','l','o','v','\0'};
  16          unsigned char key_v2[17]={'i','l','o','v','\0'};
  17          
  18          bit b=1,signal_p1=0;
  19          void job0 (void) _task_ 0
  20          {
  21   1              init_LCD();
  22   1              os_create_task(1);//键盘扫描任务
  23   1              os_create_task(2);//键值显示任务
  24   1              os_create_task(3);//计时任务
  25   1              os_create_task(4);//时间显示任务
  26   1              os_create_task(5);
  27   1              os_delete_task(0);//任务0相当于一个父进程,它的任务是创建子进程,完成使命后就可以取消了,免得暂用cpu资源
  28   1      }
  29          void job1 (void) _task_ 1
  30          {
  31   1              while(1)
  32   1              {//每一个任务都必须是一个死循环
  33   2                      if(b==1) 
  34   2                              os_send_signal (4);//当无按键动作时,发送信号量给任务4,半秒刷时,有动作发生后,若连续10s无动作,返回刷
             -时状态
  35   2                      else if(a>100) 
  36   2                      {
  37   3                              os_send_signal (4);
  38   3                              a=0;
  39   3                              b=1;
  40   3                      }
  41   2                      i=scan(key_v1);//启动按键扫描
  42   2              
  43   2                      if(i==100) //如果返回i!=100说明有按键,发送信号量给任务2
  44   2                      {
  45   3                              if(VS_key_V(key_v1,key_v2)==0)//如果于前次按键不一样,怎显示
  46   3                              {
  47   4                                      StrToStr( key_v1, key_v2);
  48   4      
  49   4                                      os_send_signal (2);
  50   4                                      b=0;
  51   4                                      
  52   4                                      
  53   4                              //      os_wait(K_TMO,1,0);
  54   4                                      
C51 COMPILER V7.06   TEXT1                                                                 04/16/2008 22:21:21 PAGE 2   

  55   4                              }
  56   3                              else a++;
  57   3                      }
  58   2                      if((a==15)&&(i==100))
  59   2                      {
  60   3                              count++;
  61   3                              a=0;
  62   3                      }
  63   2                      if(i!=100) a++;
  64   2                      os_wait(K_TMO,10,0);//修改tick,可以改变扫描频率
  65   2              }
  66   1      }
  67          void job2 (void) _task_ 2
  68          {
  69   1              
  70   1              while(1)
  71   1              {       
  72   2                      os_wait1(K_SIG);//等待信号量,若信号量没到,则任务2处于挂起状态
  73   2                      clear_LCD();
  74   2                      //clear_LCD();
  75   2      
  76   2                      gotoxy(1,0);
  77   2                      display_LCD_string(key_v1);
  78   2                      //StrToStr( key_v1, key_v2);
  79   2              //      gotoxy(1,0);
  80   2                      //display_LCD_string(key_v2);
  81   2                      
  82   2                      a=0;
  83   2                      count=0;        
  84   2                      os_clear_signal (2);//释放信号量
  85   2              //      os_wait(K_TMO,1000,0);
  86   2              }
  87   1      }
  88          void job3 (void) _task_ 3
  89          {
  90   1              while(1)
  91   1              {       
  92   2                      sec++;//计秒
  93   2                      if(sec==60){minute++;sec=0;}
  94   2                      if(minute==60){hour++;minute=0;}
  95   2                      os_wait(K_IVL,100,0);//等待时间片中断,没100个时间片发生一次中断,也就是1s钟,任务3运行一次
  96   2              }
  97   1      }
  98          void job4 (void) _task_ 4
  99          {
 100   1              
 101   1              while(1)
 102   1              {
 103   2                      
 104   2                      
 105   2                      os_wait1(K_SIG);//等待信号量
 106   2                      //os_wait(K_TMO+K_SIG,50,0);
 107   2                      if(signal_p1!=0)        os_wait(K_TMO,1,0); 
 108   2                      signal_p1=1;
 109   2                      P2|=0x0f;
 110   2                      clear_LCD();
 111   2                      t=hour/10+48;           
 112   2                      gotoxy(1,4);
 113   2                      write_LCD_data(t);
 114   2                      t=hour%10+48;
 115   2                      write_LCD_data(t);
 116   2                      write_LCD_data(':');
C51 COMPILER V7.06   TEXT1                                                                 04/16/2008 22:21:21 PAGE 3   

 117   2                      t=minute/10+48;         
 118   2                      write_LCD_data(t);
 119   2                      t=minute%10+48;
 120   2                      write_LCD_data(t);
 121   2                      write_LCD_data(':');
 122   2                      t=sec/10+48;            
 123   2                      write_LCD_data(t);
 124   2                      t=sec%10+48;
 125   2                      write_LCD_data(t);
 126   2                      gotoxy(1,0);
 127   2                      signal_p1=0;
 128   2                      os_wait(K_TMO,50,0);
 129   2                      os_clear_signal(4);//释放信号量
 130   2              }
 131   1              
 132   1      }
 133          void job5 (void) _task_ 5
 134          {
 135   1              while(1)
 136   1              {
 137   2                      //os_wait(K_TMO,5,0);
 138   2                      
 139   2                      if(signal_p1!=0)        os_wait(K_TMO,1,0); 
 140   2                      signal_p1=1;
 141   2                      P2|=0x0f;
 142   2                      P1=seven_seg[count%10];
 143   2                      P2&=0xfe;
 144   2                      delay100us(24);
 145   2                      P2|=0x0f;
 146   2                      P1=seven_seg[(count/10)%10];
 147   2                      P2&=0xfd;
 148   2                      delay100us(24);
 149   2                      P2|=0x0f;
 150   2                      P1=seven_seg[(count/100)%10];
 151   2                      P2&=0xfb;
 152   2                      delay100us(24);
 153   2                      P2|=0x0f;
 154   2                      P1=seven_seg[(count/1000)%10];
 155   2                      P2&=0xf7;
 156   2                      delay100us(24);
 157   2              //      up++;
 158   2                      if(count>=10000) count=0;
 159   2                      P2|=0x0f;
 160   2                      signal_p1=0;
 161   2                      os_wait(K_TMO,1,0);
 162   2              }
 163   1      }
 164          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    596    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     83    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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