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

📄 led.lst

📁 使用RTX51 TNY 的闪灯测试程序。在单片机最小系统上测试通过! KEIL C 需安装 RTX51 系统软件包! 在此网站上可以下载到FULL版本
💻 LST
字号:
C51 COMPILER V7.06   LED                                                                   03/29/2008 13:29:09 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2          
   3          **  RTX-51的移植
   4          
   5          **  移植到AT89S52
   6          
   7          **  此程序是循环花样显示LED灯
   8          
   9          **  有三个显示样式,分别对应下面的三个进程
  10          
  11          **  下面的算法中用到了“时间到空间”的转换,使得算法简化不少
  12          
  13          **  此程序我已在最小系统板上试验通过。
  14          
  15          */
  16          
  17          #include <reg51.h>
  18          
  19          #include <rtx51tny.h>
  20          
  21          
  22          const unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
  23          
  24                                                         ,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,0x00};
  25          
  26          /*时间到空间的转换,如果table是:
  27          
  28          const unsigned char table[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  29          
  30          则算法和代码会多出一倍来。table数组虽然增加了一倍,算法也随之减少了一半,
  31          
  32          好处当然不止在这里体现,下面的进程2也减少了一半*/
  33          
  34          
  35          //进程0 左->右->左
  36          
  37          void LED0 (void) _task_ 0
  38          
  39          {
  40   1      
  41   1           int i;
  42   1      
  43   1           os_create_task(1);//创建进程1
  44   1      
  45   1           os_create_task(2);//创建进程2
  46   1      
  47   1           while(1)
  48   1      
  49   1           {
  50   2      
  51   2                  for (i = 0; i < 15; i++) 
  52   2      
  53   2                  {
  54   3      
  55   3                            P1 = table[i];
C51 COMPILER V7.06   LED                                                                   03/29/2008 13:29:09 PAGE 2   

  56   3      
  57   3                         os_wait(K_TMO,30,0);//等待30*10000微妙 = 0.3秒
  58   3      
  59   3                  }
  60   2      
  61   2                  os_send_signal(1);    //发送Signal信号,激活进程1
  62   2      
  63   2                  os_wait(K_SIG,0,0);   //等待信号
  64   2      
  65   2           }
  66   1      
  67   1      }
  68          
  69          
  70          //进程1 全亮->全灭->全亮
  71          
  72          void LED1 (void) _task_ 1
  73          
  74          {
  75   1      
  76   1           int i;
  77   1      
  78   1           while(1)
  79   1      
  80   1           {
  81   2      
  82   2                  os_wait(K_SIG,0,0);
  83   2      
  84   2                  for (i = 0; i < 3; i++)
  85   2      
  86   2                  {
  87   3      
  88   3                            P1 = table[15];   //全亮
  89   3      
  90   3                         os_wait(K_TMO,30,0);
  91   3      
  92   3                         P1 = table[16];       //全灭
  93   3      
  94   3                         os_wait(K_TMO,30,0);
  95   3      
  96   3                  }
  97   2      
  98   2               os_send_signal(2);
  99   2      
 100   2           }
 101   1      
 102   1      }
 103          
 104          
 105          //进程2 两边->中间中间->两边
 106          
 107          void LED2 (void) _task_ 2
 108          
 109          {
 110   1      
 111   1           int i;
 112   1      
 113   1           while(1)
 114   1      
 115   1           {
 116   2      
 117   2                  os_wait(K_SIG,0,0);
C51 COMPILER V7.06   LED                                                                   03/29/2008 13:29:09 PAGE 3   

 118   2      
 119   2                  for (i = 0; i < 8; i++)
 120   2      
 121   2                  {
 122   3      
 123   3                         P1 =  table[i] | table[i+7];  //由于table长度多一倍,省去了一个循环,而且算法也简化了。
 124   3      
 125   3                         os_wait(K_TMO,30,0);
 126   3      
 127   3                  }
 128   2      
 129   2                  os_send_signal(0);
 130   2      
 131   2           }
 132   1      
 133   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    200    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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