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

📄 os_cpu_c.lst

📁 新版本ucosii移植
💻 LST
📖 第 1 页 / 共 5 页
字号:
  28      =2  extern int printf   (const char *, ...);
  29      =2  extern int sprintf  (char *, const char *, ...);
  30      =2  extern int vprintf  (const char *, char *);
  31      =2  extern int vsprintf (char *, const char *, char *);
  32      =2  extern char *gets (char *, int n);
  33      =2  extern int scanf (const char *, ...);
  34      =2  extern int sscanf (char *, const char *, ...);
  35      =2  extern int puts (const char *);
  36      =2  
  37      =2  #pragma RESTORE
  29      =1  #include <REG52.H>
   1      =2  /*--------------------------------------------------------------------------
   2      =2  REG52.H
   3      =2  
   4      =2  Header file for generic 80C52 and 80C32 microcontroller.
   5      =2  Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc.
   6      =2  All rights reserved.
   7      =2  --------------------------------------------------------------------------*/
   8      =2  
   9      =2  /*  BYTE Registers  */
  10      =2  sfr P0    = 0x80;
  11      =2  sfr P1    = 0x90;
  12      =2  sfr P2    = 0xA0;
  13      =2  sfr P3    = 0xB0;
  14      =2  sfr PSW   = 0xD0;
  15      =2  sfr ACC   = 0xE0;
  16      =2  sfr B     = 0xF0;
  17      =2  sfr SP    = 0x81;
  18      =2  sfr DPL   = 0x82;
  19      =2  sfr DPH   = 0x83;
  20      =2  sfr PCON  = 0x87;
  21      =2  sfr TCON  = 0x88;
  22      =2  sfr TMOD  = 0x89;
  23      =2  sfr TL0   = 0x8A;
  24      =2  sfr TL1   = 0x8B;
  25      =2  sfr TH0   = 0x8C;
C51 COMPILER V7.01  OS_CPU_C                                                               01/09/2003 18:37:26 PAGE 16  

  26      =2  sfr TH1   = 0x8D;
  27      =2  sfr IE    = 0xA8;
  28      =2  sfr IP    = 0xB8;
  29      =2  sfr SCON  = 0x98;
  30      =2  sfr SBUF  = 0x99;
  31      =2  
  32      =2  /*  8052 Extensions  */
  33      =2  sfr T2CON  = 0xC8;
  34      =2  sfr RCAP2L = 0xCA;
  35      =2  sfr RCAP2H = 0xCB;
  36      =2  sfr TL2    = 0xCC;
  37      =2  sfr TH2    = 0xCD;
  38      =2  
  39      =2  
  40      =2  /*  BIT Registers  */
  41      =2  /*  PSW  */
  42      =2  sbit CY    = PSW^7;
  43      =2  sbit AC    = PSW^6;
  44      =2  sbit F0    = PSW^5;
  45      =2  sbit RS1   = PSW^4;
  46      =2  sbit RS0   = PSW^3;
  47      =2  sbit OV    = PSW^2;
  48      =2  sbit P     = PSW^0; //8052 only
  49      =2  
  50      =2  /*  TCON  */
  51      =2  sbit TF1   = TCON^7;
  52      =2  sbit TR1   = TCON^6;
  53      =2  sbit TF0   = TCON^5;
  54      =2  sbit TR0   = TCON^4;
  55      =2  sbit IE1   = TCON^3;
  56      =2  sbit IT1   = TCON^2;
  57      =2  sbit IE0   = TCON^1;
  58      =2  sbit IT0   = TCON^0;
  59      =2  
  60      =2  /*  IE  */
  61      =2  sbit EA    = IE^7;
  62      =2  sbit ET2   = IE^5; //8052 only
  63      =2  sbit ES    = IE^4;
  64      =2  sbit ET1   = IE^3;
  65      =2  sbit EX1   = IE^2;
  66      =2  sbit ET0   = IE^1;
  67      =2  sbit EX0   = IE^0;
  68      =2  
  69      =2  /*  IP  */
  70      =2  sbit PT2   = IP^5;
  71      =2  sbit PS    = IP^4;
  72      =2  sbit PT1   = IP^3;
  73      =2  sbit PX1   = IP^2;
  74      =2  sbit PT0   = IP^1;
  75      =2  sbit PX0   = IP^0;
  76      =2  
  77      =2  /*  P3  */
  78      =2  sbit RD    = P3^7;
  79      =2  sbit WR    = P3^6;
  80      =2  sbit T1    = P3^5;
  81      =2  sbit T0    = P3^4;
  82      =2  sbit INT1  = P3^3;
  83      =2  sbit INT0  = P3^2;
  84      =2  sbit TXD   = P3^1;
  85      =2  sbit RXD   = P3^0;
  86      =2  
  87      =2  /*  SCON  */
C51 COMPILER V7.01  OS_CPU_C                                                               01/09/2003 18:37:26 PAGE 17  

  88      =2  sbit SM0   = SCON^7;
  89      =2  sbit SM1   = SCON^6;
  90      =2  sbit SM2   = SCON^5;
  91      =2  sbit REN   = SCON^4;
  92      =2  sbit TB8   = SCON^3;
  93      =2  sbit RB8   = SCON^2;
  94      =2  sbit TI    = SCON^1;
  95      =2  sbit RI    = SCON^0;
  96      =2  
  97      =2  /*  P1  */
  98      =2  sbit T2EX  = P1^1; // 8052 only
  99      =2  sbit T2    = P1^0; // 8052 only
 100      =2               
 101      =2  /*  T2CON  */
 102      =2  sbit TF2    = T2CON^7;
 103      =2  sbit EXF2   = T2CON^6;
 104      =2  sbit RCLK   = T2CON^5;
 105      =2  sbit TCLK   = T2CON^4;
 106      =2  sbit EXEN2  = T2CON^3;
 107      =2  sbit TR2    = T2CON^2;
 108      =2  sbit C_T2   = T2CON^1;
 109      =2  sbit CP_RL2 = T2CON^0;
  30      =1  
  31      =1  //用户头文件加在最后面
  32      =1  //Your head file add here.
  21          
  22          /*
  23          *********************************************************************************************************
  24          *                                        初始化任务堆栈
  25          *
  26          * 描述       : 这个函数被OSTaskCreate()或OSTaskCreateExt()调用,以便初始化新创建任务的堆栈结构。本函数
  27          *              与处理器高度相关。
  28          *
  29          * 参数       : task          指向任务代码的指针
  30          *
  31          *              pdata         当任务第一次执行时将要传入任务的用户数据结构指针
  32          *
  33          *              ptos          栈顶指针。ptos指针被默认为用户堆栈入口指针。如果OS_STK_GROWTH被置1,那么,
  34          *                            ptos指向用户堆栈的最高有效地址。同样地,如果OS_STK_GROWTH清0,ptos将指向
  35          *                            用户堆栈的最低有效地址。
  36          *
  37          *              opt           指定可以改变OSTaskStkInit()行为的选项。(见uCOS_II.H for OS_TASK_OPT_???)。
  38          *
  39          * 返回值     : 我修改了原来的程序,使函数总是返回用户堆栈空间的最低有效地址。这样修改提高了TCB换入换出
  40          *              的效率。
  41          *
  42          * 注意       : 任务堆栈结构:
  43          *
  44          *                                    
  45          *                 
  46          *                                    
  47          *                                    
  48          *----------                          
  49          *|OSTCBCur|               
  50          *----------                          
  51          *    |                               
  52          *    |     -----------------------                                        ----------
  53          *    \---->|OSTCBCur->OSTCBStkPtr|                                 SP---->|        |
  54          *          -----------------------                                        ----------
  55          *                     |                                                   |        |
  56          *                     |              ---------- -                         ----------
  57          *                     |              |        | |                         |   .    |
C51 COMPILER V7.01  OS_CPU_C                                                               01/09/2003 18:37:26 PAGE 18  

  58          *                     |              ---------- |                         |   .    |
  59          *                     |              |        | |                         |   .    |
  60          *                     |              ---------- |                         ----------
  61          *                     |              |   .    |长度                       |        | +1
  62          *                     |              |   .    | |                         ----------
  63          *                     |              |   .    | |             OSStack---->|        | 0
  64          *                     |              ---------- |                         ----------
  65          *                     |              |        | |          OSStkStart---->| 不关心 | -1  低地址
  66          *                     |              ---------- -                         ----------
  67          *                     \------------->|  长度  | 低地址                   系统硬件堆栈
  68          *                                    ----------
  69          *                                     用户堆栈                       长度=SP-OSStkStart
  70          *********************************************************************************************************
  71          */
  72          
  73          void *OSTaskStkInit (void (*task)(void *pd), void *ppdata, void *ptos, INT16U opt) 
  74          {    
  75   1          OS_STK *stk;
  76   1      
  77   1          ppdata = ppdata;
  78   1          opt    = opt;                               //opt没被用到,保留此语句防止告警产生    
  79   1          stk    = (OS_STK *)ptos;                    //用户堆栈最低有效地址
  80   1          *stk++ = 15;                                //用户堆栈长度
  81   1          *stk++ = (INT16U)task & 0xFF;               //任务地址低8位
  82   1          *stk++ = (INT16U)task >> 8;                 //任务地址高8位    
  83   1          *stk++ = 0x00;                              //PSW
  84   1          *stk++ = 0x0A;                              //ACC
  85   1          *stk++ = 0x0B;                              //B
  86   1          *stk++ = 0x00;                              //DPL
  87   1          *stk++ = 0x00;                              //DPH
  88   1          *stk++ = 0x00;                              //R0
  89   1          *stk++ = 0x01;                              //R1
  90   1          *stk++ = 0x02;                              //R2
  91   1          *stk++ = 0x03;                              //R3
  92   1          *stk++ = 0x04;                              //R4
  93   1          *stk++ = 0x05;                              //R5
  94   1          *stk++ = 0x06;                              //R6
  95   1          *stk++ = 0x07;                              //R7
  96   1                                                      //不用保存SP,任务切换时根据用户堆栈长度计算得出。    
  97   1      // ***** 不再需要仿真堆栈指针 *****
  98   1      
  99   1      //    *stk++ = (INT16U) (ptos+MaxStkSize) >> 8;   ?C_XBP 仿真堆栈指针高8位
 100   1      //    *stk++ = (INT16U) (ptos+MaxStkSize) & 0xFF; ?C_XBP 仿真堆栈指针低8位
 101   1              
 102   1          return ((void *)ptos);
 103   1      }
 104          
 105          #if OS_CPU_HOOKS_EN
 106          /*
 107          *********************************************************************************************************
 108          *                                          任务创建钩挂函数
 109          *
 110          * 描述       : 任务创建时调用
 111          *
 112          * 参数       : ptcb是指向将被创建任务的任务控制块的指针。
 113          *
 114          * 注意       : 1) 调用期间中断被禁止
 115          *********************************************************************************************************
 116          */
 117          void OSTaskCreateHook (OS_TCB *ptcb) 
 118          {
 119   1          ptcb = ptcb;                       /* Prevent compiler warning                                     */
C51 COMPILER V7.01  OS_CPU_C                                                               01/

⌨️ 快捷键说明

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