下面是一个我从网上下载的一个程序,我想问的是,当任务0里边的os_wait等待的事件也就是5个报时周期到来后,程序会去哪执行?是执行P0++还是去任务1里等待它那个报时周期到来?我用软件仿真的时候在P0++;上边设置了一个断点,但单步执行的时候发现这个系统一直在任务0里边出不去了,并且明明P0值为1但是那个if的判断语句它却会执行,这是怎么回事啊?本人刚开始学RTX51操作系统,很菜,希望有大哥能帮我指点,非常感谢!
#include <RTX51TNY.h>
#include "AT89x52.h"
job0(void) _task_ 0
{
P0=0x00;
P1=0x00;
P2=0X00;
P3=0X00;
os_create_task(1);
os_create_task(2);
os_create_task(3);
os_create_task(4);
while(1)
{
os_wait(K_TMO,5,0);
P0++;
if((P0%100)==0)
os_send_signal(4);
}
}
job1(void) _task_ 1
{
while(1)
{
os_wait(K_TMO,5,0);
P1++;
}
}
job2(void) _task_ 2
{
while(1)
{
os_wait(K_TMO,5,0);
P2++;
}
}
job3(void) _task_ 3
{
while(1)
{
os_wait(K_TMO,5,0);
P3++;
}
}
job4(void) _task_ 4
{
while(1)
{
os_wait(K_SIG,0,0);
P0=0X00;
P1=0X00;
P2=0X00;
P3=0X00;
}
} |