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

📄 test.c

📁 关于UCOS在PIC18F458上的测试移植范例,编译是在MICCHIP的C18上通过的.
💻 C
字号:
#include    "includes.h"
#include    <timers.h>
OS_STK  TestTaskStk[100L];
OS_STK  PUTIOTaskStk[100L];
OS_STK  SemTaskStk[100L];
OS_EVENT *SecFlag;
OS_EVENT *Flag;
void PUTIOTask(void *pdata);
void TestTask(void *pdata);
void HardWareInit(void);

void HardWareInit(void)
{
   ADCON1 = 0X00001110;
   PORTA = 0x0000000;
   TRISAbits.TRISA4 = 0;
   TRISAbits.TRISA5 = 0;
   TRISBbits.TRISB0 = 1;
   TRISBbits.TRISB4 = 0;
   PORTBbits.RB4 = 0;
}
void PUTIOTask(void *pdata)
{
   INT8U err;
    for(;;)
    {
       OSSemPend(SecFlag, 0, &err);
       //PORTBbits.RB4 = 1;
       PORTAbits.RA5 = 1;
       //PORTAbits.RA4 = 0;
      // OSTimeDly(60);
     }
}
void SemTask(void *pdata)
{
   INT8U TimCntr = 0;
    for(;;)
    {
       OSTimeDly(2);
       PORTBbits.RB4 = 1;
       TimCntr++;
       if(TimCntr == 20)
         {
           OSSemPost(SecFlag);
           TimCntr = 0;
          } 
     }
}
void TestTask(void *pdata)
{
    pdata = pdata;
    // enable interrupts
    OpenTimer0(TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_1);
    WriteTimer0(-25000);

    // Initialize statistics task
    OSStatInit();

    // Start up other tasks
    OSTaskCreate(PUTIOTask, (void *)0, &PUTIOTaskStk[0], 9);
    OSTaskCreate(SemTask, (void *)0, &SemTaskStk[0], 6);
    //Initialize PORTC
    //ADCON1=0X00001110;
    //PORTA = 0x0000000;
    //TRISAbits.TRISA4 = 0;
    //TRISAbits.TRISA5 = 0;
    //TRISBbits.TRISB0 = 1;
    //TRISBbits.TRISB4 = 0;
    //PORTBbits.RB4 = 0;
    // task loop
    HardWareInit();
    for(;;)
    {
        //PORTBbits.RB4 = 1;
        PORTAbits.RA5 = 0;
        //PORTAbits.RA4 = 0;
        OSTimeDly(20);
    }
}

void main (void)
{
    INTCONbits.GIEH = 0;
    OSInit();
    OSTaskCreate(TestTask, (void *)0, &TestTaskStk[0], 4);
    SecFlag = OSSemCreate(0);
    OSStart();
}

⌨️ 快捷键说明

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