📄 ex1.lst
字号:
C51 COMPILER V7.06 EX1 12/01/2005 16:05:17 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE EX1
OBJECT MODULE PLACED IN ex1.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE ex1.c LARGE BROWSE INCDIR(F:\software\KEIL\) DEBUG OBJECTEXTEND
stmt level source
1 #include <includes.h>
2 #include <cygnalcon.h>
3
4 #include <stdio.h>
5 sbit LED = P0^7; // LED: '1' = ON; '0' = OFF
6
7
8 void TaskA(void*) reentrant;
9 void TaskB(void*) reentrant;
10 void TaskC(void*) reentrant;
11 void TaskD(void*) reentrant;
12 void TaskE(void*) reentrant;
13 //void TaskS(void*) reentrant;
14 void TaskS(void *pdat) ;
15
16 OS_STK TaskStartStkS[MaxStkSize];
17 OS_STK TaskStartStkA[MaxStkSize];//注意:在ASM文件中设置?STACK空间为40H即64。
18 OS_STK TaskStartStkB[MaxStkSize];
19 OS_STK TaskStartStkC[MaxStkSize];
20 OS_STK TaskStartStkD[MaxStkSize];
21 OS_STK TaskStartStkE[MaxStkSize];
22
23 OS_EVENT *TxMbox; //声明一个邮箱
24
25 OS_EVENT *CommQ;
26 void *CommMsg[10];
27
28 char code FILEMSG[]="编译日期:" __DATE__ " | 编译时间:" __TIME__ ;
29 unsigned char code STARTMSG[]={ "\n"
30 "+------------------------+-----------------------+\n"
31 "| Starting ...... |\n"
32 "+------------------------+-----------------------+\n"
33 "| %s | \n"
34 "+------------------------+-----------------------+\n"
35 "| CPU: C8051F060 | OS: UCOS II 2.51 |\n"
36 "+------------------------+-----------------------+\n"
37 "| RAM: 20K | ROM: 64K |\n"
38 "+------------------------+-----------------------+\n"
39 };
40
41 void main(void)
42 {
43 1 INT8U err;
44 1
45 1 config();
46 1 SFRPAGE = UART0_PAGE;
47 1
48 1 printf (STARTMSG,FILEMSG);
49 1 printf ("UCOSII Ver=%d\n",(int)OS_VERSION);
50 1 printf ("OSTime=%d,%d\n",(int)(OSTimeGet()/1000000),(int)(OSTimeGet()%1000000));
51 1
52 1 OSInit();
53 1
54 1 OSTaskCreate(TaskS, (void *)0, TaskStartStkS,2);
55 1
C51 COMPILER V7.06 EX1 12/01/2005 16:05:17 PAGE 2
56 1 TxMbox = OSMboxCreate((void *)0); //创建一个邮箱
57 1 CommQ = OSQCreate(&CommMsg[0], 10); //建立消息队列
58 1 err = OSQFlush(CommQ);
59 1
60 1
61 1 OSTimeSet (100);
62 1 SFRPAGE = UART0_PAGE;
63 1 printf ("UCOSII Verson=%d\n",(int)OSVersion ());
64 1 printf ("UCOSII Starting OK ...\n");
65 1 InitTimer0();
66 1 OSStart();
67 1
68 1
69 1 }
70 void TaskS(void *pdat)
71 {
72 1
73 1 INT8U err;
74 1 pdat=pdat;
75 1 OSStatInit();
76 1 /* err=OSTaskCreateExt(TaskA,
77 1 (void *)0,
78 1 TaskStartStkA,
79 1 8,
80 1 8,
81 1 TaskStartStkA,
82 1 MaxStkSize,
83 1 (void *)0,
84 1 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR
85 1 );
86 1 */
87 1 /* err=OSTaskCreateExt(TaskB,
88 1 (void *)0,
89 1 TaskStartStkB,
90 1 9,
91 1 9,
92 1 TaskStartStkB,
93 1 MaxStkSize,
94 1 (void *)0,
95 1 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR
96 1 );
97 1 */
98 1 OSTaskCreate(TaskA, (void *)0, TaskStartStkA,8);
99 1 OSTaskCreate(TaskB, (void *)0, TaskStartStkB,9);
100 1 OSTaskCreate(TaskC, (void *)0, TaskStartStkC,5);
101 1 OSTaskCreate(TaskD, (void *)0, TaskStartStkD,6);
102 1 // OSTaskCreate(TaskE, (void *)0, TaskStartStkE,7);
103 1
104 1
105 1
106 1
107 1 while(1)
108 1 {
109 2 printf ("taskstart OK...\n");
110 2 OSTaskDel(OS_PRIO_SELF);
111 2 }
112 1
113 1 }
*** WARNING C280 IN LINE 73 OF EX1.C: 'err': unreferenced local variable
114 void TaskA(void *pdat) reentrant
115 {
116 1 static int i;
C51 COMPILER V7.06 EX1 12/01/2005 16:05:17 PAGE 3
117 1 pdat=pdat;
118 1
119 1 for(;;)
120 1 {
121 2 printf("TASKA %d\n",i);
122 2 if (i==1) OSTaskCreate(TaskE, (void *)0, TaskStartStkE,7);
123 2 if (i==5)
124 2 {
125 3 OSTaskDel(7);
126 3 while (OSTaskDelReq(7) != OS_TASK_NOT_EXIST)
127 3 {
128 4 OSTimeDly(1);
129 4 }
130 3 }
131 2 if (++i>=30) i=0;
132 2 if (i==10) OSSchedLock();
133 2 if (i==15) OSSchedUnlock ();
134 2 OSTimeDly(1*OS_TICKS_PER_SEC);
135 2 LED=!LED;
136 2 }
137 1 }
138
139 void TaskB(void *pdat) reentrant
140 {
141 1 static int i;
142 1 INT8U err;
143 1 void *msg;
144 1 pdat=pdat;
145 1
146 1 for(;;)
147 1 {
148 2 msg = OSQPend(CommQ, 500,&err);
149 2 if (err == OS_NO_ERR)
150 2 { /* 在指定时间内接受到消息 */
151 3 printf("TASKB %s ----------------------------------------\n",msg);
152 3 }
153 2 else
154 2 { /* 在指定的时间内没有接受到指定的消息 */
155 3 printf("TASKB 没有接到消息 %d,_____________________________\n",i++);
156 3 }
157 2 }
158 1 }
159
160 void TaskC(void *pdat) reentrant
161 {
162 1 static int i;
163 1 char txmsg[10];
164 1 pdat=pdat;
165 1
166 1 for(;;)
167 1 {
168 2 sprintf(txmsg,"msg c %d",i);
169 2 OSMboxPost(TxMbox, (void *)&txmsg); /* Send message to Task #5 */
170 2 OSQPost(CommQ, "TASKC的消息");
171 2 printf("TASKC %d\n",i++);
172 2 OSTimeDly(2*OS_TICKS_PER_SEC);
173 2 //OSTimeDlyHMSM(0,0,5,00);
174 2 }
175 1 }
176
177 void TaskD(void *pdat) reentrant
178 {
C51 COMPILER V7.06 EX1 12/01/2005 16:05:17 PAGE 4
179 1 static int i;
180 1 char *rxmsg;
181 1 OS_STK_DATA stk_data;
182 1 INT32U stk_size;
183 1 INT8U err;
184 1 pdat=pdat;
185 1 for(;;)
186 1 {
187 2 rxmsg = (char *)OSMboxPend(TxMbox, 0, &err); /* Wait for message from Task #4 */
188 2 printf( "TASKD TIME=%06d%06d "
189 2 "CPU利用率%02d, "
190 2 "邮件接收: c %s, %d\n",
191 2 (unsigned int)(OSTimeGet()/1000000), (unsigned int)(OSTimeGet()%1000000),
192 2 (int)OSCPUUsage,rxmsg,i++);
193 2 /* for (i=8;i<=9;i++)
194 2 {
195 2 err = OSTaskStkChk(3, &stk_data);
196 2 if (err == OS_NO_ERR)
197 2 {
198 2 stk_size = stk_data.OSFree + stk_data.OSUsed;
199 2 printf("TASKD TASKID=%04d,RAM=%04d,Free=%04d,Used=%04d",i,stk_size,stk_data.OSFree , stk_dat
-a.OSUsed);
200 2 }
201 2 else
202 2 {
203 2 printf("TASKD 检查任务堆栈状态");
204 2 }
205 2 }
206 2 */
207 2 //OSTimeDly(15);
208 2 //OSTimeDlyHMSM(0,0,2,000);
209 2 }
210 1 }
*** WARNING C280 IN LINE 181 OF EX1.C: 'stk_data': unreferenced local variable
*** WARNING C280 IN LINE 182 OF EX1.C: 'stk_size': unreferenced local variable
211 void TaskE(void *pdat) reentrant
212 {
213 1 pdat=pdat;
214 1 for(;;)
215 1 {
216 2 OSMboxPost(TxMbox, "任务E邮件");
217 2 //printf("TaskE runing %d\n",i++);
218 2 OSQPost(CommQ, "======TASKe的消息 hello ha ha");
219 2 OSQPost(CommQ, "******TASKe的消息 hello ha ha");
220 2 OSTimeDly(100);
221 2 }
222 1 }
223
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1522 ----
CONSTANT SIZE = 836 ----
XDATA SIZE = 644 2
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 3 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -