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

📄 main.c

📁 源代码实现的是uC/OS-II在ATmega128L上的移植
💻 C
字号:
#include <mega128.h>
#include "delay.h"
#include "ucos_ii.h"
#include "app.h"
 
#define uchar unsigned char
uchar flash dispcode[16]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x7b,0x71}; 

#define  OS_TASK_1_STK_SIZE            OS_TASK_STK_SIZE
#define  OS_TASK_1_HARD_STK_SIZE       OS_TASK_HARD_STK_SIZE

#define  OS_TASK_2_STK_SIZE            OS_TASK_STK_SIZE
#define  OS_TASK_2_HARD_STK_SIZE       OS_TASK_HARD_STK_SIZE

/****************函数声明*****************/       
void AppIOInit(void); 

//任务一
OS_STK Task1_Stack[OS_TASK_1_STK_SIZE];
void Task1_Task(void *p_arg);
#define Task1_PRIO  2 

//任务二
OS_STK Task2_Stack[OS_TASK_2_STK_SIZE];
void Task2_Task(void *p_arg);
#define Task2_PRIO  3

/*************主函数***************/
void main(void)
{   
    delay_ms(1000);
    AppIOInit();            //初始化MCU的硬件       
    OSInit();               //初始化uC/OS-II      
    OSTaskStkSize     = OS_TASK_1_STK_SIZE;
    OSTaskHardStkSize = OS_TASK_1_HARD_STK_SIZE;
    OSTaskCreate(Task1_Task, (void *)0, (OS_STK *)&Task1_Stack[OSTaskStkSize-1], Task1_PRIO);
    OSTaskCreate(Task2_Task, (void *)0, (OS_STK *)&Task2_Stack[OSTaskStkSize-1], Task2_PRIO);       
    OSStart();              //开始运行uC/OS-II
}                             
/**********************子程序***********************/
/*------------------子任务函数定义-------------------*/
void Task1_Task(void *p_arg)
{   
    OS_CPU_SR  cpu_sr;	
	p_arg = p_arg;	
    while(1)
    {        
        LCD_disp();                           
    }
}
void Task2_Task(void *p_arg)
{   
    uchar i;
    OS_CPU_SR  cpu_sr;	
	p_arg = p_arg;
    while(1)
    {  
        for(i=0;i<16;i++)
        {  
            SPDR=dispcode[i];
            while(!SPSR.7);     //一个字节发送完中断标志
            SPSR.7=0;        
            delay_ms(600);             
        }
        OSTimeDly(1);          //调用系统时钟延时以让出CPU好让下一个任务得到执行
    }                          
     
}

/*****************IO寄存器初始化****************/
void AppIOInit (void)
{   
    MCUCR=0;
	DDRA=0xff;
	PORTA=0xff;
	DDRC=0x08;
	PORTC=0xff;
	DDRE=0x80;
	PORTE=0xff;
    DDRB=0xff;      //初始化时要使能方向寄存器为1
    SPCR=0x7d;      //数据移出串口的顺序是LSB即低位在先
    SPSR=0x01;    	
}
 

⌨️ 快捷键说明

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