hotpower 早就把这道题的题意和解法基本说穿了。可惜没人注意到:
1、不能打断的(函数)时间必须小于节拍时间。字谜实际在函数的间隙上。 2、只要不出现时间的误差积累,就应该"算准"。否则就别玩了。 3、只要秒脉冲不丢,什么都好奔出来。
三个努力方向,一清二楚。追求其他的细节问题,连方向都不对了。
还有所长好像说过:“裸奔是串行处理,OS是并行处理。”(所谓并发....)。简单明确的概括。所以OS只要符合任务分割规则,其他的只需要编程员单独考虑每个任务,互相牵连正是裸奔的缺点。
所以,这道题这不合理,那互相矛盾,都是对裸奔编程员来说的,对利用OS编程者,只需处理简单的事。
没那么多合理的联系。 有网友说:用OS实际就是请了个“管家”。很形象。要是我什么都考虑,请管家干什么? 还有网友说,OS是给傻瓜用的。没错,傻瓜根本不会像裸奔高手那样考虑到的那么多合理的关系。
/******************************************************************************/ /* */ /* wxj1952.C: A RTX-51 Application */ /* */ /******************************************************************************/
#include <rtx51tny.h>
/******************************************************************************/ /* Task 0 'job0': */ /******************************************************************************/ job0 () _task_ 0 { os_create_task (1); os_create_task (2); os_create_task (3); os_create_task (4); //os_create_task (5); //os_create_task (6);
while (1) { os_wait (K_IVL, 1, 0); . . . DX_1; F05(); EX_1;
os_switch_tast(); } }
/******************************************************************************/ /* Task 1 'job1': */ /******************************************************************************/ job1 () _task_ 1 { while (1) { os_wait (K_IVL, 60, 0); . . . DX_1; F071(); EX_1; // os_send_signal (2);
os_switch_tast(); } }
/******************************************************************************/ /* Task 2 'job2': */ /******************************************************************************/ job2 () _task_ 2 { while (1) { //os_wait1 (K_SIG, 1); . . . DX_1; F072(); EX_1; // os_send_signal (3);
os_switch_tast(); } }
/******************************************************************************/ /* Task 3 'job3': */ /******************************************************************************/ job3 () _task_ 3 { while (1) { //os_wait1 (K_SIG, 2); . . . DX_1; F073(); EX_1; // os_send_signal (4);
os_switch_tast(); } }
/******************************************************************************/ /* Task 3 'job4': */ /******************************************************************************/ job3 () _task_ 4 { while (1) { //os_wait1 (K_SIG, 3); . . . DX_1; F074(); EX_1;
os_switch_tast(); } }
DX_1/EX_1 语句高手一看就知道是什么,这是陈明计书上提供的语句.
哇!睡了一觉,没想到“窝里斗”这么快就开演啦!
12月5号 以前挺安静的,高手好像都没时间,怎么现在突然一下都那么兴奋起来了。都有时间了。
|