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

📄 atmega.c

📁 Atmega16-ucosii的移植范例
💻 C
字号:
#include "includes.h"

OS_STK Task1Stk[OS_USER_TASK_STK_SIZE]={0};
OS_STK Task2Stk[OS_USER_TASK_STK_SIZE]={0};
OS_STK Task3Stk[OS_USER_TASK_STK_SIZE]={0};

OS_EVENT *MailBox=(OS_EVENT *)0;
unsigned char MailBoxMsg[3];

void Task1(void *pdata)
{
    unsigned char dispdata[1]={1};

    unsigned char *PointerMailBox=(void *)0;
    unsigned char keycode=STATUS_LOOP7;

 	pdata=pdata;

    TargetInit();//
 
	while(1)
	{
        //obtain message
        PointerMailBox=(void *)0;
		PointerMailBox=(unsigned char *)OSMboxPend(MailBox,0,0);
        if(PointerMailBox != 0)
        {
            keycode=PointerMailBox[0];//取得编码
        }
        if(keycode==STATUS_LOOP)
        {
            LedRefresh(dispdata[1],1);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(dispdata[1],2);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(dispdata[1],3);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(dispdata[1],4);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(dispdata[1],5);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(dispdata[1],6);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(dispdata[1],7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(dispdata[1],8);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        if(keycode==STATUS_LOOP1)
        {
            LedRefresh(dispdata[1],1);
            OSTimeDly(OS_TICKS_PER_SEC/2);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        if(keycode==STATUS_LOOP2)
        {
            LedRefresh(dispdata[1],2);
            OSTimeDly(OS_TICKS_PER_SEC/5);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        if(keycode==STATUS_LOOP3)
        {
            LedRefresh(dispdata[1],3);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        if(keycode==STATUS_LOOP4)
        {
            LedRefresh(dispdata[1],4);
            OSTimeDly(OS_TICKS_PER_SEC/20);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        if(keycode==STATUS_LOOP5)
        {
            LedRefresh(dispdata[1],5);
            OSTimeDly(OS_TICKS_PER_SEC/40);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        if(keycode==STATUS_LOOP6)
        {
            LedRefresh(dispdata[1],6);
            OSTimeDly(OS_TICKS_PER_SEC/50);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        if(keycode==STATUS_LOOP7)
        {
            LedRefresh(0x8a,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x8b,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x8c,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x8d,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x8e,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x8f,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x90,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x91,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);

            LedRefresh(0xa8,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);

            LedRefresh(0x92,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x93,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x94,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x95,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x96,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x97,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x98,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x99,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x9a,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x9b,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x9c,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x9d,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);

            LedRefresh(0xa8,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);

            LedRefresh(0x9e,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x9e,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x9e,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0x9f,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa0,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa1,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa2,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa3,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa4,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa5,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa6,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            LedRefresh(0xa7,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);

            LedRefresh(0xa8,7);
            OSTimeDly(OS_TICKS_PER_SEC/10);
        }
        else
        if(keycode==STATUS_LOOP8)
        {
            LedRefresh(dispdata[1],8);
            OSTimeDly(OS_TICKS_PER_SEC/10);
            dispdata[1]++;
            //dispdata[1]%=0x0f;
        }
        else
        {
            keycode=STATUS_LOOP;
        }
	}
}

void Task2(void *pdata)
{
 	pdata=pdata;

 	while(1)
    {
        OSTimeDly(OS_TICKS_PER_SEC*2);//delay 1s
        SpeakerOpen();
        OSTimeDly(OS_TICKS_PER_SEC/20);
        SpeakerClose();
	}
}

/*************************************************************************

*************************************************************************/
int main(void)
{	
	OSInit();/*os initialization*/

	OSTaskCreate(Task1,0,&Task1Stk[OS_USER_TASK_STK_SIZE-1],0);
	OSTaskCreate(Task2,0,&Task2Stk[OS_USER_TASK_STK_SIZE-1],1);
	//OSTaskCreate(Task3,0,&Task3Stk[OS_USER_TASK_STK_SIZE-1],2); 

    MailBox=OSMboxCreate((void *)0); 

	OSStart();/*os start*/
    
	return(1);
}


⌨️ 快捷键说明

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