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

📄 ucos51移植心得zt续1(铁匠).htm

📁 ucos移植心得
💻 HTM
📖 第 1 页 / 共 2 页
字号:
        8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//任务地址高8位&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PSW<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x0A;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ACC<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x0B;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//B<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//DPL<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//DPH<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R0<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R1<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x02;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R2<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x03;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R3<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x04;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R4<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x05;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R5<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x06;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R6<BR>&nbsp;&nbsp;&nbsp;&nbsp;*stk++ 
        = 
        0x07;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//R7<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//不用保存SP,任务切换时根据用户堆<BR>栈长度计算得出。&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 
        ((void *)ptos);<BR>}<BR><BR>#if OS_CPU_HOOKS_EN<BR>void OSTaskCreateHook 
        (OS_TCB *ptcb) reentrant<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ptcb = 
        ptcb;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 
        Prevent compiler 
        <BR>warning&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<BR>}<BR><BR>void 
        OSTaskDelHook (OS_TCB *ptcb) 
        reentrant<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;ptcb = 
        ptcb;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* 
        Prevent compiler 
        <BR>warning&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<BR>}<BR><BR>void 
        OSTimeTickHook (void) 
        reentrant<BR>{<BR>}<BR>#endif<BR><BR>//初始化定时器0<BR>void InitTimer0(void) 
        reentrant<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;TMOD=TMOD&amp;0xF0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TMOD=TMOD|0x01;&nbsp;&nbsp;&nbsp;&nbsp;//模式1(16位定时器),仅受TR0控制<BR>&nbsp;&nbsp;&nbsp;&nbsp;TH0=0x70;&nbsp;&nbsp;&nbsp;&nbsp;//定义Tick=50次/秒(即0.02秒/次)<BR>&nbsp;&nbsp;&nbsp;&nbsp;TL0=0x00;&nbsp;&nbsp;&nbsp;&nbsp;//OS_CPU_A.ASM&nbsp;&nbsp;和&nbsp;&nbsp;OS_TICKS_PER_SEC<BR>&nbsp;&nbsp;&nbsp;&nbsp;ET0=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许T0中断<BR>&nbsp;&nbsp;&nbsp;&nbsp;TR0=1;&nbsp;&nbsp;&nbsp;<BR>}<BR><BR>文件名 
        : YY.C<BR><BR>#include <INCLUDES.H><BR><BR>#define MAX_STK_SIZE 
        64<BR><BR>void TaskStartyya(void *yydata) reentrant;<BR>void 
        TaskStartyyb(void *yydata) reentrant;<BR>void TaskStartyyc(void *yydata) 
        reentrant;<BR><BR>OS_STK 
        TaskStartStkyya[MAX_STK_SIZE+1];//注意:我在ASM文件中设置?STACK空间为40H<BR>即64,不要超出范围。<BR>OS_STK 
        TaskStartStkyyb[MAX_STK_SIZE+1];//用户栈多一个字节存长度<BR>OS_STK 
        TaskStartStkyyc[MAX_STK_SIZE+1];<BR><BR>void 
        main(void)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSInit();<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;InitTimer0();<BR>&nbsp;&nbsp;&nbsp;&nbsp;InitSerial();<BR>&nbsp;&nbsp;&nbsp;&nbsp;InitSerialBuffer();<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSTaskCreate(TaskStartyya, 
        (void *)0, 
        &amp;TaskStartStkyya[0],2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSTaskCreate(TaskStartyyb, 
        (void *)0, 
        &amp;TaskStartStkyyb[0],3);<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSTaskCreate(TaskStartyyc, 
        (void *)0, 
        &amp;TaskStartStkyyc[0],4);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;OSStart();<BR>}<BR><BR><BR>void 
        TaskStartyya(void *yydata) 
        reentrant<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;yydata=yydata;<BR>&nbsp;&nbsp;&nbsp;&nbsp;clrscr();<BR>&nbsp;&nbsp;&nbsp;&nbsp;PrintStr('\n\t\t*******************************\n');<BR>&nbsp;&nbsp;&nbsp;&nbsp;PrintStr('\t\t*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hello! 
        The 
        world.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*\n');<BR>&nbsp;&nbsp;&nbsp;&nbsp;PrintStr('\t\t*******************************\n\n\n');<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(;;){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStr('\tAAAAAA111111 
        is 
        active.\n');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDly(OS_TICKS_PER_SEC);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR><BR>void 
        TaskStartyyb(void *yydata) 
        reentrant<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;yydata=yydata; 
        <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(;;){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStr('\tBBBBBB333333 
        is 
        active.\n');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDly(3*OS_TICKS_PER_SEC);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR><BR>void 
        TaskStartyyc(void *yydata) 
        reentrant<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;yydata=yydata; 
        <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(;;){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintStr('\tCCCCCC666666 
        is 
        active.\n');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDly(6*OS_TICKS_PER_SEC);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR><BR><BR><BR><BR>(文章推荐人:丁丁) 
        <BR><BR></BLOCKQUOTE></TD></TR>
  <TR>
    <TD width="100%">
      <P align=center> </P></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>

⌨️ 快捷键说明

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