📄 ex2.lst
字号:
C51 COMPILER V7.01 EX2 01/09/2003 18:33:33 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE EX2
OBJECT MODULE PLACED IN Ex2.OBJ
COMPILER INVOKED BY: D:\KEILC51\C51\BIN\C51.EXE Ex2.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************************/
2 /* */
3 /* EX2.C: 例子程序 */
4 /* */
5 /* 仿照RtxTiny2 中的EX2 */
6 /* */
7 /******************************************************************************/
8
9 #include <includes.h> /* UCOS_II 的主头文件 */
10
11 void job0(void *yydata); /* 声明4个任务 */
12 void job1(void *yydata);
13 void job2(void *yydata);
14 void job3(void *yydata);
15
16 OS_STK TaskStk[4][MaxStkSize]; /* 任务堆栈 */
17 OS_EVENT *Sem; /* 声明一个信号量 */
18
19 long counter0; /* 任务0 的计数器 */
20 long counter1; /* 任务1 的计数器 */
21 long counter2; /* 任务2 的计数器 */
22 long counter3; /* 任务3 的计数器 */
23
24 void main(void)
25 {
26 1 OSInit();
27 1 InitTimer0();
28 1 Sem = OSSemCreate(0); /* 建立一个信号量 */
29 1 OSTaskCreate(job0, (void *)0, (void *)&TaskStk[0][0],6);
30 1 OSStart();
31 1 }
32
33 /******************************************************************************/
34 /* 任务0 'job0': */
35 /******************************************************************************/
36 void job0 ( void *yydata ) {
37 1 yydata = yydata; /* 避免编译器警告 */
38 1 OSTaskCreate(job1, (void *)0, (void *)&TaskStk[1][0], 7);
39 1 OSTaskCreate(job2, (void *)0, (void *)&TaskStk[2][0], 9);
40 1 OSTaskCreate(job3, (void *)0, (void *)&TaskStk[3][0], 8);
41 1
42 1 while (1) { /* 死循环 */
43 2 counter0++; /* counter0 加一 */
44 2 OSTimeDly(2); /* 等待2个ticks */
45 2 }
46 1 }
47
48 /******************************************************************************/
49 /* 任务1 'job1': */
50 /******************************************************************************/
51 void job1 ( void *yydata ) {
52 1 yydata = yydata; /* 避免编译器警告 */
53 1 while (1) { /* 死循环 */
54 2 counter1++; /* counter1 加一 */
55 2 OSTimeDly(4); /* 等待4个ticks */
C51 COMPILER V7.01 EX2 01/09/2003 18:33:33 PAGE 2
56 2 }
57 1 }
58
59 /******************************************************************************/
60 /* 任务2 'job2': */
61 /******************************************************************************/
62 void job2 ( void *yydata ) {
63 1 yydata = yydata; /* 避免编译器警告 */
64 1 while (1) { /* 死循环 */
65 2 counter2++; /* counter2 加一 */
66 2 if ((counter2 & 0xFFFF) == 0) { /* counter2 溢出 */
67 3 OSSemPost(Sem); /* 发信号给任务3 */
68 3 }
69 2 }
70 1 }
71
72 /******************************************************************************/
73 /* 任务3 'job3': */
74 /******************************************************************************/
75 void job3 ( void *yydata ) {
76 1 INT8U err;
77 1 yydata = yydata; /* 避免编译器警告 */
78 1 while (1) { /* 死循环 */
79 2 OSSemPend(Sem, 0, &err); /* 等待信号 */
80 2 counter3++; /* 处理counter2 溢出 */
81 2 }
82 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 390 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 419 1
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -