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

📄 ex1.lst

📁 51单片机嵌入ucos实例.通过此模块可以对其它型号的51系列单片机进行移值
💻 LST
字号:
C51 COMPILER V7.06   EX1                                                                   07/30/2008 11:19:16 PAGE 1   


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

stmt level    source

   1          //-------------------------------------包涵文件
   2          #include "..\uc_os_II\includes.h"
   3          #include "..\Ex1_Keil\ucos51_bl.h"
   4          
   5          //-------------------------------------定义任务堆栈大小
   6          OS_STK xdata KEYStack[CPU_MAX_STK_SIZE];                                                //定义OS_STK堆栈类型,存放于xdata连续空间,大小为CPU_MAX_STK_S
             -IZE的数组中
   7          OS_STK xdata SPKStack[CPU_MAX_STK_SIZE];
   8          OS_STK xdata LEDStack[CPU_MAX_STK_SIZE];
   9          
  10          //-------------------------------------函数定义
  11          void fsbyte(INT8U byte);
  12          //-------------------------------------按键扫描(10ms-100ms)
  13          void jianpan(void xdata * ppdata) reentrant
  14          {
  15   1              ppdata = ppdata;
  16   1              while(1)
  17   1              {
  18   2                      if(P1&128)
  19   2                      {
  20   3                              keyys=0,keyok=0;
  21   3                              OSTimeDly(10);//100ms
  22   3                      }
  23   2                      else
  24   2                      {
  25   3                              OSTimeDly(1);//10ms
  26   3                              keyys++;
  27   3                              if(keyys>=5 & keyok==0)//连按无效
  28   3                              {
  29   4                                      keyok=1;
  30   4                                      sycd=10,syyx=1;
  31   4                                      keyys=0,key++;
  32   4                                      if(key>=100)    key=0;
  33   4                              }
  34   3                      }
  35   2              }
  36   1      }
  37          
  38          //-------------------------------------喇叭程序(10ms)
  39          void SPK(void xdata * ppdata) reentrant
  40          {
  41   1              ppdata = ppdata;
  42   1              while(1)
  43   1              {
  44   2                      OSTimeDly(1);
  45   2                      if(syyx==1)
  46   2                      {
  47   3                              P3|=1;
  48   3                              if(sycd>0)
  49   3                              {
  50   4                                      sycd--;
  51   4                              }
  52   3                              else
  53   3                              {
  54   4                                      syyx=0;
C51 COMPILER V7.06   EX1                                                                   07/30/2008 11:19:16 PAGE 2   

  55   4                                      P3&=254;
  56   4                              }
  57   3                      }
  58   2                      else
  59   2                      {
  60   3                              sycd=0,P3&=254;
  61   3                      }
  62   2              }
  63   1      }
  64          
  65          //-------------------------------------LED扫描(2ms)
  66          void LedSM(void xdata * ppdata) reentrant
  67          {
  68   1      unsigned char err=0;
  69   1              ppdata = ppdata;
  70   1              while(1)
  71   1              {
  72   2                      OSMboxPend (LEDSM,0,&err);
*** WARNING C259 IN LINE 72 OF EX1.C: 'parameter': pointer: different mspace
  73   2                      js100++;
  74   2                      P1&=252;
  75   2                      switch(ledfen)
  76   2                      {
  77   3                              case 0:
  78   3                              {//个位扫描
  79   4                                      ledfen=1;
  80   4                                      fsbyte(LED[ge]);
  81   4                                      P1|=1;
  82   4                              }
  83   3                              break;
  84   3      
  85   3                              case 1:
  86   3                              {//十位扫描
  87   4                                      ledfen=0;
  88   4                                      fsbyte(LED[shi]);
  89   4                                      P1|=2;
  90   4                              }
  91   3                              break;
  92   3      
  93   3                              default:
  94   3                                      ledfen=0;
  95   3                      }
  96   2      
  97   2                      if(js100>=50)
  98   2                      {//100ms
  99   3                              js100=0;
 100   3                              ge=key%10;
 101   3                              shi=key/10;
 102   3                              if(shi==0)      shi=10;
 103   3                      }
 104   2      
 105   2              }
 106   1      }
 107          
 108          //-------------------------------------字节发送器
 109          void fsbyte(INT8U byte)
 110          {
 111   1      unsigned char fsjsq=0;
 112   1              for(fsjsq=0;fsjsq<8;fsjsq++)
 113   1              {
 114   2                      P1&=251;                        //CLK=0
 115   2                      P1|=((byte<<fsjsq)&128)>>4;
C51 COMPILER V7.06   EX1                                                                   07/30/2008 11:19:16 PAGE 3   

 116   2                      P1|=4;                          //CLK=1 
 117   2                      P1&=247;
 118   2              }
 119   1      }
 120          
 121          //-------------------------------------参数初始化
 122          void ParameterInitial()
 123          {
 124   1              //计数器
 125   1              time0=0;
 126   1              
 127   1              //按键
 128   1              keyys=keyok=key=0;
 129   1              
 130   1              //led分配器
 131   1              ledfen=0;
 132   1              js100=0;
 133   1              
 134   1              //100ms计数器清空
 135   1              js100=0;
 136   1              
 137   1              //声音
 138   1              sycd=0;syyx=0;
 139   1      
 140   1              //LED表
 141   1              //0               ;1             ;2                     ;3                 ;4
 142   1              LED[0]=192;LED[1]=249;LED[2]=164;LED[3]=176;LED[4]=153;
 143   1              //5               ;6             ;7                 ;8             ;9
 144   1              LED[5]=146;LED[6]=130;LED[7]=248;LED[8]=128;LED[9]=144;
 145   1              //Nothing ;
 146   1              LED[10]=255;
 147   1              
 148   1              //邮箱
 149   1              LEDSM=OSMboxCreate((void*)0);
 150   1      }
 151          
 152          //-------------------------------------定时中断初始化
 153          void InterruptInitial()
 154          {
 155   1              /* set timer. 50ms, THTL = 3caf when cpu at 12MHz */
 156   1              TMOD = 0x01;                                            //2ms,mode 1,16 bits
 157   1              TH0 = TIMER_24M_25MS_H;
 158   1              TL0 = TIMER_24M_25MS_L;
 159   1              /* TR0 is set in OSStart() */
 160   1              ET0 = 1;
 161   1      }
 162          
 163          //-------------------------------------主函数
 164          main()
 165          {
 166   1              InterruptInitial();
 167   1          OSInit();
 168   1      
 169   1              ParameterInitial();
 170   1      
 171   1              OSTaskCreate(LedSM,     (void xdata *)0, &LEDStack[0],  1);
 172   1          OSTaskCreate(jianpan,       (void xdata *)0, &KEYStack[0],  2);
 173   1              OSTaskCreate(SPK,               (void xdata *)0, &SPKStack[0],  3);
 174   1              OSStart();
 175   1      }


C51 COMPILER V7.06   EX1                                                                   07/30/2008 11:19:16 PAGE 4   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    495    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    744    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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