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

📄 os_cpu_a.lst

📁 uCOS 嵌入式操作系统的改进版,增加了网络通讯.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 196   1              
 197   1      //      UsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;
 198   1      //#Lin@恢复仿真堆栈内容到系统堆栈
 199   1      
 200   1              UserStkCount = *OSTCBHighRdy ->OSTCBStkPtr;             //#Lin@获取堆栈使用长度
 201   1              UserSysStkSP = UserSysSP_Start;                                 //#Lin@获取系统堆栈基地址
 202   1              UserUsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;              //#Lin@获取用户仿真堆栈基地址
 203   1              
 204   1      //      UserUsrStkSP -= UserStkCount;
 205   1              
 206   1              SP = UserSysSP_Start + UserStkCount;                    //#Lin@系统堆栈定位
 207   1      
 208   1      //#Lin@数据传输
 209   1      
 210   1              do
 211   1                      {
 212   2                      UserUsrStkSP ++;
 213   2                      UserSysStkSP ++;
 214   2                      *UserSysStkSP = *UserUsrStkSP;
 215   2                      UserStkCount --;
 216   2                      }
 217   1              while(UserStkCount != 0);
 218   1      
 219   1              
 220   1      #pragma asm
 221   1      
 222   1              USERPOPALL
 223   1              RETI                                                                                    //#Lin@仿真中断返回
 224   1              
 225   1      #pragma endasm
 226   1      }
 227          //
 228          //=======================================================================================================
 229          
 230          //=======================================================================================================
 231          //
 232          //#Lin@中断服务
 233          
 234          void          OSTickISR(void) interrupt 1 //using 3
 235          {
 236   1      
 237   1      //      EA = 0;
 238   1      //    OS_STK    idata   *UsrStkSP;
 239   1      
 240   1      //      *UsrStkSP = SP;
C51 COMPILER V7.06   OS_CPU_A                                                              07/29/2003 20:45:13 PAGE 5   

 241   1          OS_STK      idata   *UserSysStkSP;
 242   1          OS_STK      *UserUsrStkSP;
 243   1              INT8U   UserStkCount;
 244   1              
 245   1              TR0 = 0;
 246   1              TH0 = 0x70;
 247   1              TL0 = 0x0;
 248   1              TR0 = 1;
 249   1              
 250   1              P1 ^= 0x80;
 251   1              
 252   1              OSIntEnter();
 253   1              if (OSIntNesting == 1){
 254   2                      
 255   2                      //      OSTCBCur ->OSTCBStkPtr = UsrStkSP;
 256   2                              UserSysStkSP = UserSysSP_Start;
 257   2                              UserStkCount = SP - UserSysSP_Start;
 258   2                              UserUsrStkSP = OSTCBCur ->OSTCBStkPtr;
 259   2                              
 260   2                      //      SP = UserSysSP_Start;//?
 261   2                              
 262   2                      //      UserUsrStkSP += UserStkCount;
 263   2                              *UserUsrStkSP = UserStkCount;
 264   2                              
 265   2                      //      OSTCBCur ->OSTCBStkPtr = UserUsrStkSP;
 266   2                              
 267   2                              do
 268   2                                      {
 269   3                                      UserUsrStkSP ++;
 270   3                                      UserSysStkSP ++;
 271   3                                      *UserUsrStkSP = *UserSysStkSP;
 272   3                                      UserStkCount --;
 273   3                                      }
 274   2                              while(UserStkCount != 0);
 275   2                      }
 276   1              
 277   1              OSTimeTick();
 278   1              OSIntExit();
 279   1              
 280   1      //      EA = 1;
 281   1      }
 282          //
 283          //=======================================================================================================
 284          
 285          //=======================================================================================================
 286          //
 287          //#Lin@在ISR中执行任务切换
 288          
 289          void          OSIntCtxSw(void) //using 3
 290          {
 291   1      
 292   1      //    OS_STK    idata   *UsrStkSP;
 293   1      
 294   1      //      *UsrStkSP = SP;
 295   1      
 296   1          OS_STK      idata   *UserSysStkSP;
 297   1          OS_STK      *UserUsrStkSP;
 298   1              INT8U   UserStkCount;
 299   1      
 300   1              OSTaskSwHook();
 301   1              
 302   1              
C51 COMPILER V7.06   OS_CPU_A                                                              07/29/2003 20:45:13 PAGE 6   

 303   1              OSTCBCur = OSTCBHighRdy;
 304   1              OSPrioCur = OSPrioHighRdy;
 305   1              
 306   1      //      UsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;
 307   1              UserStkCount = *OSTCBHighRdy ->OSTCBStkPtr;
 308   1              UserSysStkSP = UserSysSP_Start;
 309   1              UserUsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;
 310   1              
 311   1      //      UserUsrStkSP -= UserStkCount;
 312   1              
 313   1              SP = UserSysSP_Start + UserStkCount;
 314   1      
 315   1              do
 316   1                      {
 317   2                      UserUsrStkSP ++;
 318   2                      UserSysStkSP ++;
 319   2                      *UserSysStkSP = *UserUsrStkSP;
 320   2                      UserStkCount --;
 321   2                      }
 322   1              while(UserStkCount != 0);
 323   1      
 324   1              
 325   1      
 326   1      #pragma asm
 327   1      
 328   1              USERPOPALL
 329   1              RETI
 330   1              
 331   1      #pragma endasm
 332   1      }
 333          //
 334          //=======================================================================================================
 335          
 336          //=======================================================================================================
 337          //#Lin@起始
 338          
 339          void          OSStartHighRdy(void) //using 3
 340          {
 341   1      //    OS_STK    idata   *UsrStkSP;
 342   1      
 343   1      //      *UsrStkSP = SP;
 344   1          OS_STK      idata   *UserSysStkSP;
 345   1          OS_STK      *UserUsrStkSP;
 346   1              INT8U   UserStkCount;
 347   1      
 348   1      //      UserSysSP_Start = SP;
 349   1      
 350   1              OSTaskSwHook();
 351   1              
 352   1              OSRunning = TRUE;
 353   1              
 354   1      //      UsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;
 355   1              UserStkCount = *OSTCBHighRdy ->OSTCBStkPtr;
 356   1              UserSysStkSP = UserSysSP_Start;
 357   1              UserUsrStkSP = OSTCBHighRdy ->OSTCBStkPtr;
 358   1              
 359   1      //      UserUsrStkSP -= UserStkCount;
 360   1              
 361   1              SP = UserSysSP_Start + UserStkCount;
 362   1      
 363   1              do
 364   1                      {
C51 COMPILER V7.06   OS_CPU_A                                                              07/29/2003 20:45:13 PAGE 7   

 365   2                      UserUsrStkSP ++;
 366   2                      UserSysStkSP ++;
 367   2                      *UserSysStkSP = *UserUsrStkSP;
 368   2                      UserStkCount --;
 369   2                      }
 370   1              while(UserStkCount != 0);
 371   1      
 372   1              
 373   1              
 374   1      #pragma asm
 375   1      
 376   1              USERPOPALL
 377   1              RETI
 378   1              
 379   1      #pragma endasm
 380   1      
 381   1      }
 382          
 383          //
 384          //=======================================================================================================
 385          


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