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

📄 os_cpu_c.lst

📁 《增强型8051单片机实用开发技术》例程代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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:35:24 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:35:24 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          unsigned int xdata i;
 297   1      
 298   1              TMOD &= 0xF0;  //初始化时钟节拍--定时器0
 299   1              TMOD |= 0x01;  //定时器0:模式1(16位定时器),仅受TR0控制;定时器1:波特率发生器
 300   1          TH0  = 0xB8;   //定义Tick=50次/秒(即0.02秒/次),TH,TL值与CPU的频率有关(11.0592M)!!!!!gai!!!!!!
 301   1          TL0  = 0x00;   //OS_CPU_C.C中定时器中断响应也要设置,OS_CFG.H中OS_TICKS_PER_SEC也有关系
C51 COMPILER V8.18   OS_CPU_C                                                              11/30/2009 13:35:24 PAGE 6   

 302   1          //ET0  = 1;    //允许T0中断(在第一个任务开始执行时才开时钟中断,否则万一中断系统进入不可知状态)
 303   1          TR0  = 1;
 304   1      
 305   1              CMOD=0x00;        //频率:11.0592MHz/12/256=3.6KHz
 306   1              CL=0x00;
 307   1              CH=0x00;
 308   1              CCAP1L=0x40;  //占空比:75%
 309   1          CCAP1H=0x40;
 310   1              CCAPM1=0x42;  //工作于PWM模式
 311   1              PCA_PWM1=0x03;//先一直输出低电平
 312   1              CR=1;             //开始计数
 313   1      
 314   1          SCON=0x50;  //8位数据,串口初始化
 315   1          //SCON=0xD0;//9位数据
 316   1          TMOD&=0x0F;
 317   1          TMOD|=0x20;
 318   1          TL1=0xFD;
 319   1              TH1=0xFD;
 320   1          PCON=0x80;  //19200bps@11.059MHz,TL1=256-(2^SMOD/32*Fosc/12*1/Baudrate)
 321   1          //PCON=0x00;//9600bps@11.059MHz
 322   1          TR1=1;              //Start timer1
 323   1          InitSerialBuffer();
 324   1      
 325   1              ADC_CONTR|=0x80;      //开A/D转换电源,第一次使用时要打开内部模拟电源
 326   1              for (i=0;i<10000;i++);//适当延时                                                                                  
 327   1              P1ASF|=0x40;          //设置P1.6,设置I/O为A/D通道
 328   1              ADC_CONTR=0xE6;       //选择p1.6作为A/D转换通道 
 329   1      
 330   1              AUXR1=0x20;               //将SPI转移到P4口     SPI初始化
 331   1          SPCTL=0xFE;           //SPI使能,主机模式,/SS无关,先发低
 332   1          SPSTAT=0xC0;                  //清传输完成标志和写冲突标志
 333   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    754    ----
   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 + -