1 / 14
文档名称:

多任务编程.pptx

格式:pptx   大小:145KB   页数:14页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

多任务编程.pptx

上传人:分享精品 2018/7/20 文件大小:145 KB

下载得到文件列表

多任务编程.pptx

文档介绍

文档介绍:三种编程方式
While(1)大循环
定时器中断编程
多任务编程
While(1)大循环
void main()
{
初始化(initialize bulabula..)
while(1)
{
查询判断键值
数据处理
显示

}
}
定时器中断编程
void main()
{
初始化(initialize bulabula..)
while(1);
}
定时器中断
{
刷新显示,重复性事件处理
}
按键中断
{
判断键值,一次性处理
}
多任务编程
目的:通过某种方法,让处理器的多个任务,比如:按键扫描任务、刷新显示任务、其他周期性处理任务。在宏观上看,是并行运行,互不干扰。
void tsk1()
{
led1=~led1;
tsk1_time=10;
}
void tsk2()
{
led2=~led2;
tsk2_time=20;
}
void tsk3()
{
led3=~led3;
tsk3_time=100;
}
void tsk_sw()
{
if(tsk1_time<=0)
tsk1();
if(tsk2_time<=0)
tsk2();
if(tsk3_time<=0)
tsk3();
}
void main()
{
timer_initilaze();
while(1)
tsk_sw();
}
timer_interrupt ()
{
tsk1_time--;
tsk2_time--;
tsk3_time--;
}
周期为T的定时器初始化
10T执行一次
20T执行一次
100T执行一次
void tsk1()
{
led1=~led1;
tsk1_time=10;
}
void tsk2()
{
led2=~led2;
tsk2_time=20;
}
void tsk3()
{
led3=~led3;
tsk3_time=100;
}
void tsk1()
{
while(1){
do sth;
delay(10*T);
}
}
void tsk2()
{
while(1){
do sth;
delay(20*T);
}
}
void tsk3()
{
while(1){
do sth;
delay(100*T);
}
}
void tsk2()
{
switch(step2)
{
case 0:
step2=1;
步骤1
break;
case 1:
step2=0;
步骤2
break;
}
tsk2_time=10;
}
void tsk1()
{
switch(step1)
{
case 0:
step1=1;
tsk1_time=20;
初始化
break;
case 1:
step1=1;
tsk1_time=10;
循环刷新
break;
}
}
Tsk1()
{
初始化
delay(20*T)
while(1)
{
循环刷新
delay(10*T)
}
}
Tsk2()
{
while(1)
{
步骤1
delay(10*T)
步骤2
delay(10*T)
}
}
Tsk2()
{
while(1)
{
step1
delay(n1*T)
}
}
#define TSK_MAX 10 //任务最大个数
typedef void (*FUNC)(int* step); //任务函数指针
typedef struct
{
unsigned char FLAG; //任务存在标志位,1任务存在,0
FUNC func;
T; //节拍计数器
int step; //步骤计数器
}TSK; //任务参数结构体
TSK tsk[TSK_MAX];
unsigned char t; //任务计数器
void TSK_STEP_Init() //节拍时钟初始化 1ms为节拍
{
TL0 = CCIE; // CCR0 interrupt enabled
R0 = 32;
TA0CTL = TASSEL__ACLK + MC__UP + TACLR; // SMCLK, upmode, clear TAR
}
void TSK_CLEAR() //任务清零
{
unsigned char i;
for(i=0;i<TSK_MAX;i++)
{
tsk[i].FLAG=0;
tsk[i].func=0;
tsk[i].CNT=0;
tsk[i].step=0;
}
}
void TSK_Init() //初始化
{
t=