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

📄 main.lst

📁 本文面向首次接触uC/OS-II的程序员
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  07/07/2005 22:40:45 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c LARGE OPTIMIZE(SIZE) REGFILE(.\OS_AT89C5x.ORC) BROWSE NOINTPROMOTE D
                    -EBUG OBJECTEXTEND

stmt level    source

   1          /*
   2          *********************************************************************************************************
   3          *                                               uC/OS-II
   4          *                                         The Real-Time Kernel
   5          *
   6          *                         (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
   7          *                                          All Rights Reserved
   8          *
   9          *                                       AT89C/S5x Specific Code
  10          *                                          LARGE MEMORY MODEL
  11          *
  12          *                                           Keil C/C++ V7.09
  13          *
  14          * 文件名 : Main.C
  15          * 作者   : 华歆 Huaxin@wxzte.com 中兴光电子 研发一部 2005-07-07 22:40
  16          ; 功能   : uC/OS-II在MCS51微控制器上的移植试验
  17          *********************************************************************************************************
  18          */
  19          
  20          #ifndef  OS_MASTER_FILE
  21          #include "includes.h"
  22          #endif
  23          
  24          void TestTask1(void *os_pdata) reentrant;
  25          void TestTask2(void *os_pdata) reentrant;
  26          void TestTask3(void *os_pdata) reentrant;
  27          void TestTask4(void *os_pdata) reentrant;
  28          
  29          OS_STK  TestTask1Stk[MaxStkSize];
  30          OS_STK  TestTask2Stk[MaxStkSize];
  31          OS_STK  TestTask3Stk[MaxStkSize];
  32          OS_STK  TestTask4Stk[MaxStkSize];
  33          
  34          void    InitS0 ( INT16U baud_rate ) reentrant   
  35          {
  36   1              ES              = 0;
  37   1              SCON    = 0x50;
  38   1              TMOD   |= 0x20;  
  39   1              TR1     = 1;
  40   1              PCON    = PCON&0x7f;
  41   1              switch( baud_rate ){            
  42   2                      case 1200:
  43   2                              TL1     = 0xe8; TH1     = 0xe8; break;
  44   2                      case 2400:
  45   2                              TL1     = 0xf4; TH1     = 0xf4; break;
  46   2                      case 4800:
  47   2                              TL1     = 0xfa; TH1     = 0xfa; break;
  48   2                      case 9600:
  49   2                              TL1     = 0xfd; TH1     = 0xfd; break;
  50   2                      case 19200:
  51   2                              PCON = PCON|0x80; TL1 = 0xfd; TH1 = 0xfd; break;
  52   2                      case 38400:
  53   2                              PCON = PCON|0x80; TL1 = 0xfe; TH1 = 0xfe; break;
  54   2                      default:
C51 COMPILER V7.06   MAIN                                                                  07/07/2005 22:40:45 PAGE 2   

  55   2                              TL1 = 0xfd; TH1 = 0xfd; break;  
  56   2              }
  57   1      }
  58          //********************************************************************************************************
  59          //
  60          //      设置时钟节拍中断函数_?OSTickISR的tick率
  61          //      NOTE:   1:  一般tick率为10-100次/秒;
  62          //                      2:  特别注意不要在这里启动时钟节拍!!!
  63          //                      3:  最好在第一个任务(优先级最高的任务)里启动tick时钟节拍
  64          //                      4:  尽量不要更改中断优先级寄存器IP的低2位,当INT0与T0同级时就会影响到正常tick
  65          //
  66          //********************************************************************************************************
  67          void    InitTick ( void ) reentrant
  68          {
  69   1              TMOD |= 0x01;                   
  70   1              TH0       = 0xb8;                               
  71   1              TL0       = 0x00;
  72   1              TI        = 1;
  73   1              IP        = 0x02;                       
  74   1              ET0   = 1;
  75   1              EA        = 1;
  76   1              TR0       = 1;
  77   1      }
  78          
  79          void main (void)
  80          {
  81   1              OSInit();
  82   1              Comm_Port=0;
  83   1              P12887a=0x20;
  84   1          Lcd1602Init();
  85   1      
  86   1              OSTaskCreate (TestTask1,(void *)0, &TestTask1Stk[0], 1);
  87   1              OSTaskCreate (TestTask2,(void *)0, &TestTask2Stk[0], 2);
  88   1              OSTaskCreate (TestTask3,(void *)0, &TestTask3Stk[0], 3);
  89   1              OSTaskCreate (TestTask4,(void *)0, &TestTask4Stk[0], 4);
  90   1      
  91   1              OSStart();
  92   1      }                                           
  93          
  94          void    TestTask1 (void *os_pdata) reentrant
  95          {
  96   1              os_pdata = os_pdata;
  97   1          
  98   1          InitS0(9600);
  99   1              InitTick();
 100   1          
 101   1              while (1)
 102   1              {
 103   2                      printf ("TASK-1\n");
 104   2              OSTimeDly(OS_TICKS_PER_SEC);
 105   2              }
 106   1      
 107   1      }
 108          
 109          INT8S idata LogoStr[]="                This is a Test Program Designed by Huaxin.";
 110          
 111          void    TestTask2(void *os_pdata) reentrant
 112          {
 113   1          INT8U *cp;
 114   1          cp=LogoStr;
 115   1          os_pdata = os_pdata;
 116   1      
C51 COMPILER V7.06   MAIN                                                                  07/07/2005 22:40:45 PAGE 3   

 117   1              while(1)
 118   1              {
 119   2                      Lcd1602Clr(2);    
 120   2              Lcd1602DispStr(1,2,cp);
 121   2                  printf ("TASK-2\n");
 122   2                      OSTimeDly(OS_TICKS_PER_SEC/2);  
 123   2                  cp++;
 124   2              if(*cp=='\0')
 125   2                {
 126   3                  cp=LogoStr;
 127   3                }
 128   2              }
 129   1      }
 130          
 131          void    TestTask3(void *os_pdata) reentrant
 132          {
 133   1              os_pdata = os_pdata;
 134   1      
 135   1              while(1)
 136   1              {
 137   2                      Lcd1602Clr(1);
 138   2                      OSTimeDly(OS_TICKS_PER_SEC/5);
 139   2                      Lcd1602DispStr(2,1,"uC/OS-II");
 140   2              Lcd1602DispCha(10, 1, ' ');
 141   2              Lcd1602DispStr(11,1,"V2.52");
 142   2                  printf ("TASK-3\n");
 143   2                      OSTimeDly(OS_TICKS_PER_SEC/5);
 144   2              }
 145   1      }
 146          
 147          void    TestTask4(void *os_pdata) reentrant
 148          {
 149   1          os_pdata = os_pdata;
 150   1      
 151   1              while(1)
 152   1              {
 153   2                      LED=0;
 154   2                      OSTimeDly(OS_TICKS_PER_SEC/2);
 155   2              LED=1;
 156   2                  printf ("TASK-4\n");
 157   2                      OSTimeDly(OS_TICKS_PER_SEC/2);
 158   2              }
 159   1      }
 160          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    680    ----
   CONSTANT SIZE    =     47    ----
   XDATA SIZE       =   2048    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     59    ----
   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 + -