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

📄 main.c

📁 一个简单的可以用在弹片击上的微操作系统
💻 C
字号:
#include <avr/io.h>
#include<avr/delay.h>
#include "os.h"


#define SET_YEL_LED PORTA&=~_BV(PA0)         //黄灯
#define CLR_YEL_LED PORTA|=_BV(PA0)
#define SET_GEN_LED PORTA&=~_BV(PA1)        //绿灯
#define CLR_GEN_LED PORTA|=_BV(PA1)
#define SET_RED_LED PORTA&=~_BV(PA2)        //红灯
#define CLR_RED_LED PORTA|=_BV(PA2)

void Delay(void);
void FlashLedYel(void);
void FlashLedRed(void);
void FlashLedGen(void);

int main(void)
{
	MainHardwareInit();	//硬件初始化
	OSSchedInit();		//队列初始化设置队首,队尾均为0
	
	MainStdControlInit();	
	MainStdControlStart();	
	
	EnableInterrupt();		//开中断

	PORTA=_BV(PA0)|_BV(PA1)|_BV(PA2);        
	DDRA=_BV(PA0)|_BV(PA1)|_BV(PA2);          //设置PA0,PA1,PA2为输出口
	
	OSPostTask(FlashLedYel);	//添加任务
	
	while (1) {
		OSHRunTask();		//运行任务
    }

	return 1;
}

/****************************************************************************
*名称: FlashLedYel()
*功能:控制黄灯闪烁,并将控制红灯闪烁的函数添加至任务队列
*入口参数:无
*出口参数:无
******************************************************************************/
void FlashLedYel(void)
{
	SET_YEL_LED;
	Delay();
	CLR_YEL_LED;
	Delay();
	OSPostTask(FlashLedRed);
}
/****************************************************************************
*名称: FlashLedRed()
*功能:控制红灯闪烁,并将控制绿灯闪烁的函数添加至任务队列
*入口参数:无
*出口参数:无
******************************************************************************/
void FlashLedRed(void)
{
	SET_RED_LED;
	Delay();
	CLR_RED_LED;
	Delay();
	OSPostTask(FlashLedGen);
}

/****************************************************************************
*名称: FlashLedGen()
*功能:控制绿灯闪烁,并将控制黄灯闪烁的函数添加至任务队列
*入口参数:无
*出口参数:无
******************************************************************************/
void FlashLedGen(void)
{
	SET_GEN_LED;
	Delay();
	CLR_GEN_LED;
	Delay();
	OSPostTask(FlashLedYel);
}

void Delay()
{
	int i;
	for (i = 0; i < 100; i++)
	_delay_loop_2(1843);	//7.3728M/4000
}

⌨️ 快捷键说明

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