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

📄 os_cpu_c.lst

📁 《增强型8051单片机实用开发技术》例程代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 160          
 161          /*
 162          *********************************************************************************************************
 163          *                                          任务删除钩挂函数
 164          *
 165          * 描述       : 任务删除时调用
 166          *
 167          * 参数       : ptcb是指向将被删除任务的任务控制块的指针。
 168          *
 169          * 注意       : 1) 调用期间中断被禁止
 170          *********************************************************************************************************
 171          */
 172          #if OS_TASK_DEL_EN > 0
              void OSTaskDelHook (OS_TCB *ptcb) reentrant
              {
                  ptcb = ptcb;                       /* Prevent compiler warning                                     */
              }
              #endif
C51 COMPILER V8.18   OS_CPU_C                                                              11/30/2009 13:25:40 PAGE 4   

 178          
 179          /*
 180          *********************************************************************************************************
 181          *                                          任务切换钩挂函数
 182          *
 183          * 描述       : 执行任务切换时调用。这允许你在上下文切换期间执行其它操作。
 184          *
 185          * 参数       : 无
 186          *
 187          * 注意       : 1) 调用期间中断被禁止
 188          *              2) 假定全局指针'OSTCBHighRdy'已经指向了将要被换入的任务控制块(即:最高优先级任务),并且
 189          *                 'OSTCBCur'指向了将被换出的任务(即:当前任务)。
 190          *********************************************************************************************************
 191          */
 192          void OSTaskSwHook (void) reentrant
 193          {
 194   1      }
 195          
 196          /*
 197          *********************************************************************************************************
 198          *                                          统计任务钩挂函数
 199          *
 200          * 描述       : 这个函数每秒钟被uC/OS-II统计任务调用。这么做使你的应用程序可以增加统计任务的功能。
 201          *
 202          * 注意       : 无
 203          *********************************************************************************************************
 204          */
 205          #if OS_TASK_STAT_EN > 0
              void OSTaskStatHook (void) reentrant
              {
              }
              #endif
 210          
 211          /*
 212          *********************************************************************************************************
 213          *                                           OSTCBInit() HOOK
 214          *
 215          * Description: This function is called by OSTCBInit() after setting up most of the TCB.
 216          *
 217          * Arguments  : ptcb    is a pointer to the TCB of the task being created.
 218          *
 219          * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
 220          *********************************************************************************************************
 221          */
 222          #if OS_VERSION > 203
 223          void OSTCBInitHook (OS_TCB *ptcb) reentrant
 224          {
 225   1          ptcb = ptcb;                                           /* Prevent Compiler warning                 */
 226   1      }
 227          #endif
 228          
 229          /*
 230          *********************************************************************************************************
 231          *                                          定时钩挂函数
 232          *
 233          * 描述       : 本函数每一滴答被调用一次。
 234          *
 235          * 参数       : 无
 236          *
 237          * 注意       : 1) 在本调用期间中断可以或不可以使能。
 238          *********************************************************************************************************
 239          */
C51 COMPILER V8.18   OS_CPU_C                                                              11/30/2009 13:25:40 PAGE 5   

 240          void OSTimeTickHook (void) reentrant
 241          {
 242   1      }
 243          
 244          /*
 245          *********************************************************************************************************
 246          *                                             IDLE TASK HOOK
 247          *
 248          * Description: This function is called by the idle task.  This hook has been added to allow you to do  
 249          *              such things as STOP the CPU to conserve power.
 250          *
 251          * Arguments  : none
 252          *
 253          * Note(s)    : 1) Interrupts are enabled during this call.
 254          *********************************************************************************************************
 255          */
 256          #if OS_VERSION >= 251
 257          void OSTaskIdleHook (void) reentrant
 258          {
 259   1      }
 260          #endif
 261          
 262          #endif
 263          
 264          /*
 265             使用C语言的中断处理函数有助与提高程序的移植性。建议中断程序不要太长,如果长则使用信号量来与任务同步,
 266             在外部任务中实现大量的处理。
 267             中断处理例程都放在下面。
 268          */
 269          
 270          void UserTickTimer(void)
 271          {
 272   1          TH0=0xB8;                   //普通51定时器方式1,必须在发生中断时,重新赋值并再次启动计时
 273   1          TL0=0;              //Tick=50次/秒(即0.02秒/次),晶振11.0592M
 274   1          TR0=1;
 275   1      }
 276          
 277          /* 
 278            uCOS-II系统时钟中断处理程序
 279          */
 280          void OSTickISR(void) interrupt 1
 281          {
 282   1          OSIntEnter();                                       // Must be called first at every hardware interrupt entry point 
 283   1          UserTickTimer();                            // User functions can be called here.
 284   1              OSTimeTick();                                   // Must be called during tick isr 
 285   1              OSIntExit();                                    // Must be called finally at every hardware interupt exit point 
 286   1      }
 287          
 288          /*
 289            设置硬件寄存器的初始值。
 290            初始化定时器0,作为ucOS-II的系统时钟。
 291            还有其他的与硬件相关的初始化也可以放在这里。
 292          */
 293          
 294          void InitHardware(void) reentrant
 295          {   
 296   1          TMOD &= 0xF0;
 297   1              TMOD |= 0x01;   //定时器0:模式1(16位定时器),仅受TR0控制;定时器1:波特率发生器
 298   1          TH0  = 0xB8;   //定义Tick=50次/秒(即0.02秒/次),TH,TL值与CPU的频率有关(11.0592M)!!!!!gai!!!!!!
 299   1          TL0  = 0x00;   //OS_CPU_C.C中定时器中断响应也要设置,OS_CFG.H中OS_TICKS_PER_SEC也有关系
 300   1          //ET0  = 1;    //允许T0中断(在第一个任务开始执行时才开时钟中断,否则万一中断系统进入不可知状态)
 301   1          TR0  = 1;
C51 COMPILER V8.18   OS_CPU_C                                                              11/30/2009 13:25:40 PAGE 6   

 302   1      
 303   1              AUXR1=0x40;
 304   1              CMOD=0x00;
 305   1              CL=0x00;
 306   1              CH=0x00;
 307   1              CCAP0L=0x40;
 308   1          CCAP0H=0x40;
 309   1              CCAPM0=0x42;
 310   1              PCA_PWM0=0x03;
 311   1              CR=1;
 312   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    662    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -