// 任务结构
typedef
struct
_TASK_COMPONENTS
{
uint8 Run;
// 程序运行标记:0-不运行,1运行
uint8 Timer;
// 计时器
uint8 ItvTime;
// 任务运行间隔时间
void
(*TaskHook)(
void
);
// 要运行的任务函数
} TASK_COMPONENTS;
// 任务定义
// timer interrupt function
void
TaskRemarks(
void
)
{
uint8 i;
for
(i=0; i<TASKS_MAX; i++)
// 逐个任务时间处理
{
if
(TaskComps[i].Timer)
// 时间不为0
{
TaskComps[i].Timer--;
// 减去一个节拍
if
(TaskComps[i].Timer == 0)
// 时间减完了
{
TaskComps[i].Timer = TaskComps[i].ItvTime;
// 恢复计时器值,从新下一次
TaskComps[i].Run = 1;
// 任务可以运行
}
}
}
}
/**************************************************************************************
* FunctionName : TaskProcess()
* Description : 任务处理
* EntryParameter : None
* ReturnValue : None
**************************************************************************************/
void
TaskProcess(
void
)
{
uint8 i;
for
(i=0; i<TASKS_MAX; i++)
// 逐个任务时间处理
{
if
(TaskComps[i].Run)
// 时间不为0
{
TaskComps[i].TaskHook();
// 运行任务
TaskComps[i].Run = 0;
// 标志清0
}
}
}
static
TASK_COMPONENTS TaskComps[] =
{
{0, 60, 60, TaskDisplayClock},
// 显示时钟
{0, 20, 20, TaskKeySan},
// 按键扫描
{0, 30, 30, TaskDispStatus},
// 显示工作状态
// 这里添加你的任务。。。。
};