嗨 把我在大四他们毕业旧书摊买的书上的例子 敲下来
尽管例子说的对我目前没啥用 因为我目前对实时性 要求不是太高 对我有点**肋 弄不好还不稳定 不过 可以 瞧瞧-
- static WORD wSignals;
- #define SIGNAL_A 0x0001
- #define SIGNAL_B 0x0002
- #define SIGNAL_C 0x0004
- #define SIGNAL_D 0x0008
- .
- .
- .
- void interrupt vHandleDeviceA(void)
- {
- //重复设置A
- wSignals |= SIGNAL_A;
- }
- void interrupt vHandleDeviceB(void)
- {
- //重复设置B
- wSignals |= SIGNAL_B;
- }
- .
- .
- .
- void main(void)
- {
- WORD wHighestPriorityFcn;
-
- while (1)
- {
- /*等待事情发生*/
- while(wSignals == 0)
- ;
- /*找到后续处理中最高优先级的来进行处理*/
- wHighestPrioritFcn = SIGNAL_A;
-
- disable();
- /*如果一个信号没有进行设置。。。。*/
- while ( (wSignals & wHighestPriorityFcn) == 0) {
- /*...进行下一步*/
- wHighestPriorityFcn <<= 1;
- }
- /*重新设该信号;将要对其进行服务*/
- wSignals &= ~wHighestPriorityFcn;
- enable();
-
- /*现在执行函数*/
- switch (wHighestPriorityFcn)
- {
- case SIGNAL_A:
- // 处理相关的活动
- break;
- case SIGNAL_B:
- // 处理相关的活动
- break;
- 。
- 。
- 。
- 。
- }
- }
- }
|