📄 main.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 + -