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

📄 main.lst

📁 一个UC/OS的小应用
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  04/04/2006 15:07:20 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\DEBUG\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE INCDIR(F:\test\SOURCE;F:\test;F:\test\Port) DEBUG OBJEC
                    -TEXTEND PRINT(.\LST\main.lst) OBJECT(.\DEBUG\main.obj)

stmt level    source

   1          
   2          #ifndef  OS_MASTER_FILE
   3          #include "includes.h"
   4          #endif
   5          //声明任务堆栈
   6          OS_STK  TestTask4Stk[64];
   7          OS_STK  TestTask5Stk[64];
   8          OS_STK  TestTask6Stk[64];
   9          OS_STK  TestTask7Stk[64];
  10          
  11          
  12          
  13          /*void Init_CAN(void) // 初始化SJA1000主控制器子函数
  14          
  15          {
  16          
  17          MOD=0x01; // 控制寄存器为复位
  18          
  19          CDR=0; // 设置时钟分频器
  20          
  21          ACR=0; // 验收码寄存器
  22          
  23          AMR=0xff; // 验收屏蔽寄存器
  24          
  25          BTR0=0x31; // 总线定时寄存器0
  26          
  27          BTR1=0x18; // 总线定时寄存器1 /*波特率500 K*/
  28          
  29          /*OCR=0x55; // 输出控制寄存器
  30          
  31          MOD=0x6c; // 控制寄存器进入工作
  32          
  33          //EA=1; // CPU开中断
  34          
  35          }*/
  36          
  37          
  38          
  39          
  40          void    InitS0 ( unsigned int baud_rate ) TASK_REENTRANT        //baud_rate,n,8,1
  41          {
  42   1              ES              = 0;//1;                                                                                        //EA=1;ET1=1;  
  43   1              SCON    = 0x50;                                                                                 /* 0x52;//SCON */
  44   1              TMOD    |= 0x20;                                                                        /*0x20;// TMOD */
  45   1              TCON    = 0x40;//0x60;                                                                                  /*0x60;// TCON */
  46   1              PCON    = PCON&0x7f;
  47   1              switch(baud_rate){                                                                              //波特率设置
  48   2                      case 1200:
  49   2                              TL1     = 0xe8;TH1      = 0Xe8;break;                                   //1200
  50   2                      case 2400:
  51   2                              TL1     = 0xf4;TH1      = 0Xf4;break;                                   //2400
  52   2                      case 4800:
  53   2                              TL1     = 0xfa;TH1      = 0Xfa;break;                                   //4800
  54   2                      case 9600:
C51 COMPILER V7.06   MAIN                                                                  04/04/2006 15:07:20 PAGE 2   

  55   2                              TL1     = 0xfd;TH1      = 0Xfd;break;                                   //9600
  56   2                      case 19200:
  57   2                              PCON    = PCON|0x80;TL1 = 0xfd;TH1      = 0Xfd;break;//19200
  58   2                      case 38400:
  59   2                              PCON    = PCON|0x80;TL1 = 0xfe;TH1      = 0Xfe;break;//38400
  60   2                      default:
  61   2                              TL1=0xfd;TH1=0Xfd;break;                                                //9600
  62   2              }
  63   1      }
  64          //********************************************************************************************************
  65          //
  66          //                              设置时钟节拍中断函数_?OSTickISR的tick率
  67          //      NOTE:   1:  一般tick率为10-100次/秒;
  68          //                      2:  特别注意不要在这里启动时钟节拍!!!
  69          //                      3:  最好在第一个任务(优先级最高的任务)里启动tick时钟节拍
  70          //                      4:  请尽量不要更改中断优先级寄存器IP的低2位,当INT0与T0同级时就会影响到正常tick
  71          //
  72          //
  73          //********************************************************************************************************
  74          void    InitTick ( void ) TASK_REENTRANT
  75          {
  76   1      
  77   1              TMOD    |= 0x01;                        //选T0,方式1(16位)
  78   1              TH0             = 0x3c;                         //定时50ms
  79   1              TL0             = 0x0b0;
  80   1              TR0             = 1;
  81   1              TI              = 1;
  82   1              //TF0           = 1;
  83   1              IP              = 0x02;                         //设置中断优先级T0最高
  84   1              ET0     = 1;
  85   1              EA              = 1;
  86   1              //请注意在第一个任务里启动T0,即:TR0=1;
  87   1              //              在OS_CPU_A.ASM的_?OSTickISR里使TH0=0x3ch;TL0=0x0b0h;
  88   1      }
  89          void    TestTask4 (void * os_pdata) TASK_REENTRANT
  90          {//本任务优先级为4
  91   1              os_pdata        = os_pdata;
  92   1      
  93   1              InitS0 ( 38400 );
  94   1              InitTick();                             //初始化OSTickISR()
  95   1              printf ("\n*********************************************************\n");
  96   1              printf ("************************任务:TASK-4************************\n");
  97   1              printf ("***************这是最高优先级任务的第一次启动**************\n");
  98   1              printf ("***************多任务已经启动,tick已经开始     ****************\n");
  99   1              printf ("***********************************************************\n");
 100   1              while (1)
 101   1              {
 102   2                      printf ("*****TASK-44444\n");
 103   2                      OSTimeDly(100);
 104   2              }
 105   1      
 106   1      }
 107          void    TestTask5(void * os_pdata) TASK_REENTRANT
 108          {//本任务优先级为5
 109   1              os_pdata        = os_pdata;
 110   1      
 111   1              while(1)
 112   1              {
 113   2                      printf ("********************TASK-55555\n");
 114   2                      OSTimeDly(200);
 115   2              }
 116   1      }
C51 COMPILER V7.06   MAIN                                                                  04/04/2006 15:07:20 PAGE 3   

 117          void    TestTask6(void * os_pdata) TASK_REENTRANT
 118          {//本任务优先级为6
 119   1              os_pdata        = os_pdata;
 120   1      
 121   1              while(1)
 122   1              {
 123   2                      printf ("***********************************TASK-66666\n");
 124   2                      OSTimeDly(400);
 125   2              }
 126   1      }
 127          void    TestTask7(void * os_pdata) TASK_REENTRANT
 128          {//本任务优先级为7
 129   1              os_pdata        = os_pdata;
 130   1      
 131   1              while(1)
 132   1              {
 133   2                      printf ("**********************************************************************TASK-77777\n");
 134   2                      OSTimeDly(800);
 135   2              }
 136   1      }
 137          
 138          void main (void)
 139          {Init_CAN();
*** WARNING C206 IN LINE 139 OF MAIN.C: 'Init_CAN': missing function-prototype
 140   1          
 141   1              OSInit();
 142   1      
 143   1      /*INT8U  OSTaskCreate (void (*task)(void *pd)TASK_REENTRANT, 
 144   1                                                      void *os_pdata, 
 145   1                                                      OS_STK *ptos, 
 146   1                                                      INT8U prio)TASK_REENTRANT)
 147   1      */
 148   1              OSTaskCreate (TestTask4,(void *)0, &TestTask4Stk[63], 4);
 149   1              OSTaskCreate (TestTask5,(void *)0, &TestTask5Stk[63], 5);
 150   1              OSTaskCreate (TestTask6,(void *)0, &TestTask6Stk[63], 6);
 151   1              OSTaskCreate (TestTask7,(void *)0, &TestTask7Stk[63], 7);
 152   1      
 153   1              OSStart();
 154   1      }                                           
 155          
 156          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    675    ----
   CONSTANT SIZE    =    482    ----
   XDATA SIZE       =    256    ----
   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 + -