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

📄 main.lst

📁 嵌入式操作系统Salvo 在单片机C8051F350上的移植
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  01/15/2008 19:31:23 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\out-file\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c OPTIMIZE(9,SIZE) BROWSE DEFINE(MAKE_WITH_FREE_LIB,SYSI,USE_INTERRUPT
                    -S) DEBUG OBJECTEXTEND PRINT(.\list-file\main.lst) TABS(2) OBJECT(.\out-file\main.obj)

line level    source

   1          /************************************************************ 
   2          Copyright (C) 1995-2002 Pumpkin, Inc. and its
   3          Licensor(s). Freely distributable.
   4          
   5          $Source: C:\\RCS\\d\\salvo\\tut\\tu6\\main.c,v $
   6          $Author: aek $
   7          $Revision: 3.10 $
   8          $Date: 2003-07-08 23:15:13-07 $
   9          
  10          Source for tutorial programs.
  11          
  12          ************************************************************/
  13          
  14          #include "main.h"
  15          #include "salvo.h"
  16          
  17          #define TASK_COUNT_P      OSTCBP(1) /* task #1        */
  18          #define TASK_SHOW_P       OSTCBP(2) /*  ""  #2        */
  19          #define TASK_BLINK_P      OSTCBP(3) /*  ""  #3        */
  20          
  21          
  22          #define PRIO_COUNT        12        /* task priorities*/
  23          #define PRIO_SHOW         10        /*  ""            */
  24          #define PRIO_BLINK        2         /*  ""            */
  25          #define MSG_UPDATE_PORT_P OSECBP(1) /* semaphore #1   */
  26          #define BINSEM_UPDATE_RES    OSECBP(2)
  27          
  28          unsigned int counter;
  29          
  30          char CODE_B = 'B';
  31          char CODE_C = 'C';
  32          
  33          _OSLabel(TaskCount1)
  34          _OSLabel(TaskShow1)
  35          _OSLabel(TaskBlink1)
  36          
  37          
  38          void TaskCount( void )
  39          {
  40   1        counter = 0;
  41   1      
  42   1          for (;;) 
  43   1          {   
  44   2              OS_WaitBinSem(BINSEM_UPDATE_RES, OSNO_TIMEOUT, TaskCount1);
  45   2                      
  46   2              counter++;
  47   2      
  48   2              OSSignalBinSem(BINSEM_UPDATE_RES);
  49   2              
  50   2              if(counter%60==0)
  51   2              //if ( !(counter & 0x01FF) )
  52   2                OSSignalMsg(MSG_UPDATE_PORT_P, (OStypeMsgP) &CODE_C);
  53   2          
  54   2             //OS_Yield(TaskCount1);
C51 COMPILER V8.08   MAIN                                                                  01/15/2008 19:31:23 PAGE 2   

  55   2              OS_Delay(50, TaskCount1);
  56   2              
  57   2          }
  58   1      }
  59          
  60          void TaskShow( void )
  61          {
  62   1          OStypeMsgP msgP;
  63   1          
  64   1          
  65   1          InitPORT();
  66   1          
  67   1          for (;;) 
  68   1          {
  69   2              OS_WaitMsg(MSG_UPDATE_PORT_P, &msgP, OSNO_TIMEOUT, TaskShow1);
  70   2              
  71   2              if ( *(char *)msgP == CODE_C ) 
  72   2              {
  73   3                  PORT = (PORT & ~0xFE) | ((counter >> 8) & 0xFE);
  74   3              }
  75   2              else
  76   2                  PORT ^= 0x01;
  77   2            
  78   2             //printf ("Task show runing\n");   
  79   2          }
  80   1      }
  81          
  82          
  83          void TaskBlink( void )
  84          {
  85   1          OStypeErr err;  
  86   1         
  87   1          //unsigned char i;
  88   1      
  89   1          for (;;) 
  90   1          {
  91   2              OS_WaitBinSem(BINSEM_UPDATE_RES, OSNO_TIMEOUT, TaskBlink1);
  92   2              
  93   2              if(counter>0)       
  94   2                 counter--;
  95   2      
  96   2              OSSignalBinSem(BINSEM_UPDATE_RES);  
  97   2                       
  98   2      
  99   2              err = OSSignalMsg(MSG_UPDATE_PORT_P, (OStypeMsgP) &CODE_B);         
 100   2            
 101   2              if ( err == OSERR_EVENT_FULL ) 
 102   2              {
 103   3                OS_SetPrio(PRIO_SHOW+1, TaskBlink2);
 104   3                OSSignalMsg(MSG_UPDATE_PORT_P, (OStypeMsgP) &CODE_B);
 105   3                OSSetPrio(PRIO_BLINK);
 106   3              } 
 107   2      
 108   2      
 109   2              //printf ("Task Blink runing\n");
 110   2        
 111   2              OS_Delay(20, TaskBlink1);
 112   2      
 113   2              //OS_Yield(TaskBlink1);
 114   2                  
 115   2              
 116   2          }
C51 COMPILER V8.08   MAIN                                                                  01/15/2008 19:31:23 PAGE 3   

 117   1      }
 118          
 119          
 120          
 121          
 122          void Init_UART(void)
 123          {   
 124   1          //SCON0  = 0x10;            /* SCON: mode 1, 8-bit UART, enable rcvr      */
 125   1          //TMOD |= 0x20;             /* TMOD: timer 1, mode 2, 8-bit reload        */
 126   1          //TH1   = 0x96;            /* TH1:  reload value for 19200 baud @ 49MHz   */
 127   1                      
 128   1          //TR1   = 1;                  /* TR1:  timer 1 run                          */
 129   1          //TI0    = 1;                 /* TI:   set TI to send first char of UART    */
 130   1      }
 131          
 132          
 133          
 134          
 135          void Oscillator_Init()
 136          {
 137   1          unsigned char i;
 138   1      
 139   1          OSCICN    = 0x83;
 140   1          FLSCL     = 0x10;
 141   1          CLKMUL    = 0x80;
 142   1          for (i = 0; i < 20; i++);    // Wait 5us for initialization
 143   1          CLKMUL    |= 0xC0;
 144   1          //while ((CLKMUL & 0x20) == 0);
 145   1          CLKSEL    = 0x02;
 146   1      }
 147          
 148          
 149          
 150          void main( void )
 151          {
 152   1      
 153   1          Oscillator_Init();
 154   1      
 155   1          Init();
 156   1      
 157   1          Init_UART();
 158   1      
 159   1          OSInit();     
 160   1          
 161   1          OSCreateTask(TaskCount, TASK_COUNT_P, PRIO_COUNT);
 162   1          OSCreateTask(TaskShow,  TASK_SHOW_P,  PRIO_SHOW);
 163   1          OSCreateTask(TaskBlink, TASK_BLINK_P, PRIO_BLINK);    
 164   1          
 165   1          OSCreateMsg(MSG_UPDATE_PORT_P, (OStypeMsgP) 0);
 166   1          OSCreateBinSem(BINSEM_UPDATE_RES, 1); 
 167   1          
 168   1          OSEi(); // EA = 1
 169   1          
 170   1          for (;;)
 171   1            OSSched();
 172   1            
 173   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    298    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V8.08   MAIN                                                                  01/15/2008 19:31:23 PAGE 4   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       1
   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 + -