📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 08/19/2008 10:59:07 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Source\main.c LARGE OBJECTADVANCED BROWSE DEBUG PRINT(.\lst\main.lst) OBJEC
-T(.\obj\main.obj)
line level source
1 /*
2 *********************************************************************************************************
3 * uC/OS-II
4 * OSTaskStatHook Applation Funtion
5 *
6 *
7 * File : main.c
8 * By : Tj
9 * Time : 2008.8.8
10 *
11 *
12 *********************************************************************************************************
13 */
14 //#pragma warning( disable: C196 )
15
16 #define Reentrant reentrant
17 #include "includes.h"
18 #include "..\driver\lcd\lcd.h"
19 #include "..\driver\c51.h"
20 extern unsigned char Os_Enter_Sum;
21
22
23 #define TASK_STK_SIZE MaxStkSize
24 #define TASK_START_ID 0 /* Application tasks IDs */
25 #define TASK_CLK_ID 1
26 #define TASK_1_ID 2
27 #define TASK_2_ID 3
28 #define TASK_3_ID 4
29 #define TASK_4_ID 5
30 #define TASK_5_ID 6
31
32 #define TASK_START_PRIO 10 /* Application tasks priorities */
33 #define TASK_CLK_PRIO 11
34 #define TASK_1_PRIO 12
35 #define TASK_2_PRIO 13
36 #define TASK_3_PRIO 14
37 #define TASK_4_PRIO 15
38 #define TASK_5_PRIO 16
39 #define MSG_QUEUE_SIZE 20
40
41
42
43
44
45
46 OS_EVENT *MsgQueue; /* Message queue pointer */
47 void *MsgQueueTbl[20]; /* Storage for messages */
48
49 OS_STK TaskStartStk[TASK_STK_SIZE]; /* Startup task stack */
50 OS_STK TaskClkStk[TASK_STK_SIZE]; /* Clock task stack */
51 OS_STK Task1Stk[TASK_STK_SIZE]; /* Task #1 task stack */
52 OS_STK Task2Stk[TASK_STK_SIZE]; /* Task #2 task stack */
53 OS_STK Task3Stk[TASK_STK_SIZE]; /* Task #3 task stack */
54 OS_STK Task4Stk[TASK_STK_SIZE]; /* Task #4 task stack */
C51 COMPILER V8.08 MAIN 08/19/2008 10:59:07 PAGE 2
55 OS_STK Task5Stk[TASK_STK_SIZE]; /* Task #5 task stack */
56
57 OS_EVENT *AckMbox; /* Message mailboxes for Tasks #4 and #5 */
58 OS_EVENT *TxMbox;
59
60 OS_EVENT *pPrintSem;
61 OS_EVENT *pPutSem;
62
63 TASK_USER_DATA TaskUserData[7];
64
65
66
67 void TaskStart(void *ppdata) Reentrant; /* Function prototypes of tasks
- */
68 static void TaskStartCreateTasks(void)Reentrant;
69 static void TaskStartDispInit(void)Reentrant;
70 static void TaskStartDisp(void)Reentrant;
71 void TaskClk(void *ppdata)Reentrant;
72 void Task1(void *ppdata)Reentrant;
73 void Task2(void *ppdata)Reentrant;
74 void Task3(void *ppdata)Reentrant;
75 void Task4(void *ppdata)Reentrant;
76 void Task5(void *ppdata)Reentrant;
77 void InitSerial()
78 {
79 1
80 1 SCON = 0x2; /* SM0 SM1 =0 SM2 0 REN=0 TB8=0 RB8=0 TI=1 RI=0 */
81 1 TI=1;
82 1
83 1 }
84
85 void main(void)
86 {
87 1 INT8U i;
88 1 Os_Enter_Sum=0;
89 1 InitHardware();
90 1 InitSerial();
91 1 lcd_init();
92 1 lcd_clr(0x0);
93 1 /* for(i=0;i<128;i++)
94 1 {
95 1 LCD_ClrLine(0,29,i);
96 1 } */
97 1 C51_ElapsedInit();
98 1 OSInit();
99 1 strcpy(TaskUserData[TASK_START_ID].TaskName, "TkStart");
100 1 OSTaskCreateExt(TaskStart,
101 1 (void *)0,
102 1 &TaskStartStk[0],
103 1 TASK_START_PRIO,
104 1 TASK_START_ID,
105 1 &TaskStartStk[TASK_STK_SIZE - 1],
106 1 TASK_STK_SIZE,
107 1 &TaskUserData[TASK_START_ID],
108 1 0);
109 1
110 1 OSStart();
111 1 }
*** WARNING C280 IN LINE 87 OF SOURCE\MAIN.C: 'i': unreferenced local variable
112
113
114 void Taskstart(void *ppdata) Reentrant
C51 COMPILER V8.08 MAIN 08/19/2008 10:59:07 PAGE 3
115 {
116 1 ppdata=ppdata;
117 1 ET0=1;
118 1 TR0=1;
119 1 TR1 = 1;
120 1 ET1=1;
121 1 EA=1;
122 1 OSStatInit();
123 1 pPrintSem = OSSemCreate(1);
124 1 pPutSem = OSSemCreate(1);
125 1 TaskStartDispInit();
126 1 MsgQueue = OSQCreate(&MsgQueueTbl[0], MSG_QUEUE_SIZE);
127 1 TaskStartCreateTasks();
128 1 for(;;){
129 2 LCD_Print(8,13,0,"%2d ",(int)OSTaskCtr);
130 2 LCD_Print(25,13,0,"%3d%% ",(int)OSCPUUsage);
131 2 LCD_Print(12,15,0,"%3d ",(int)OSCtxSwCtr);
132 2 OSTimeDly(100);
133 2 OSCtxSwCtr = 0; /* Clear the context switch counter */
134 2 // OSTimeDly(OS_TICKS_PER_SEC); /* Wait one second *
-/
135 2
136 2 }
137 1 }
138
139
140 static void TaskStartCreateTasks (void) Reentrant
141 {
142 1 strcpy(TaskUserData[TASK_CLK_ID].TaskName, "Clock");
143 1 OSTaskCreateExt(TaskClk,
144 1 (void *)0,
145 1 &TaskClkStk[0],
146 1 TASK_CLK_PRIO,
147 1 TASK_CLK_ID,
148 1 &TaskClkStk[TASK_STK_SIZE - 1],
149 1 TASK_STK_SIZE,
150 1 &TaskUserData[TASK_CLK_ID],
151 1 0);
152 1
153 1
154 1 strcpy(TaskUserData[TASK_1_ID].TaskName, "MQ Rx");
155 1 OSTaskCreateExt(Task1,
156 1 (void *)0,
157 1 &Task1Stk[0],
158 1 TASK_1_PRIO,
159 1 TASK_1_ID,
160 1 &Task1Stk[TASK_STK_SIZE - 1],
161 1 TASK_STK_SIZE,
162 1 &TaskUserData[TASK_1_ID],
163 1 0);
164 1
165 1
166 1 strcpy(TaskUserData[TASK_2_ID].TaskName, "MQ Tx#2");
167 1 OSTaskCreateExt(Task2,
168 1 (void *)0,
169 1 &Task2Stk[0],
170 1 TASK_2_PRIO,
171 1 TASK_2_ID,
172 1 &Task2Stk[TASK_STK_SIZE - 1],
173 1 TASK_STK_SIZE,
174 1 &TaskUserData[TASK_2_ID],
175 1 0);
C51 COMPILER V8.08 MAIN 08/19/2008 10:59:07 PAGE 4
176 1
177 1 strcpy(TaskUserData[TASK_3_ID].TaskName, "MQ Tx#3");
178 1 OSTaskCreateExt(Task3,
179 1 (void *)0,
180 1 &Task3Stk[0],
181 1 TASK_3_PRIO,
182 1 TASK_3_ID,
183 1 &Task3Stk[TASK_STK_SIZE - 1],
184 1 TASK_STK_SIZE,
185 1 &TaskUserData[TASK_3_ID],
186 1 0);
187 1
188 1 strcpy(TaskUserData[TASK_4_ID].TaskName, "MQ Tx#4");
189 1 OSTaskCreateExt(Task4,
190 1 (void *)0,
191 1 &Task4Stk[0],
192 1 TASK_4_PRIO,
193 1 TASK_4_ID,
194 1 &Task4Stk[TASK_STK_SIZE-1],
195 1 TASK_STK_SIZE,
196 1 &TaskUserData[TASK_4_ID],
197 1 0);
198 1
199 1 strcpy(TaskUserData[TASK_5_ID].TaskName, "DlyTask");
200 1 OSTaskCreateExt(Task5,
201 1 (void *)0,
202 1 &Task5Stk[0],
203 1 TASK_5_PRIO,
204 1 TASK_5_ID,
205 1 &Task5Stk[TASK_STK_SIZE-1],
206 1 TASK_STK_SIZE,
207 1 &TaskUserData[TASK_5_ID],
208 1 0);
209 1 }
210
211 static void TaskStartDispInit (void) Reentrant
212 {
213 1 LCD_Print(0,0,0,"-------UC/OS Example #3-------");
214 1 LCD_Print(0,1,0,"-------Designed by Tj -------");
215 1 LCD_Print(0,3,0,"Task Cnt ExeT ToT %%Tot");
216 1
217 1 LCD_Print(0,13,0,"tasks:");
218 1 LCD_Print(20,13,0,"cpu:");
219 1 LCD_Print(0,15,0,"Task sw/sec:");
220 1 LCD_Print(24,15,0,"V%1d.%02d", OSVersion() / 100, OSVersion() % 100);
221 1
222 1 }
223
224 static void TaskStartDisp (void) Reentrant
225 {
226 1
227 1 }
228
229
230 void Task1 (void *ppdata) Reentrant
231 {
232 1 char *msg;
233 1 INT8U err;
234 1
235 1
236 1 ppdata = ppdata;
237 1 for (;;) {
C51 COMPILER V8.08 MAIN 08/19/2008 10:59:07 PAGE 5
238 2 msg = (char *)OSQPend(MsgQueue, 0, &err);
239 2 LCD_PutStr(20,12,1, msg);
240 2 // OSTimeDlyHMSM(0, 0, 0,500);
241 2 }
242 1 }
243
244
245 void Task2 (void *ppdata) Reentrant
246 {
247 1 char msg[20];
248 1
249 1 ppdata = ppdata;
250 1 strcpy(&msg[0], "Task 2");
251 1 for (;;) {
252 2 OSQPost(MsgQueue, (void *)&msg[0]);
253 2 OSTimeDlyHMSM(0, 0, 2,0);
254 2 }
255 1 }
256
257 void Task3 (void *ppdata) Reentrant
258 {
259 1
260 1 char msg[20];
261 1
262 1
263 1 ppdata = ppdata;
264 1 strcpy(&msg[0], "Task 3");
265 1 for (;;) {
266 2 OSTimeDlyHMSM(0, 0, 0, 500);
267 2 OSQPost(MsgQueue, (void *)&msg[0]);
268 2 OSTimeDlyHMSM(0, 0, 1, 500);
269 2
270 2 }
271 1 }
272
273
274 void Task4 (void *ppdata) Reentrant
275 {
276 1 char msg[20];
277 1
278 1
279 1 ppdata = ppdata;
280 1 strcpy(&msg[0], "Task 4");
281 1 for (;;) {
282 2 OSTimeDlyHMSM(0, 0, 1, 0);
283 2 OSQPost(MsgQueue, (void *)&msg[0]);
284 2 OSTimeDlyHMSM(0, 0, 1, 0);
285 2 }
286 1 }
287
288
289 void Task5 (void *ppdata) Reentrant
290 {
291 1 char msg[20];
292 1
293 1
294 1 ppdata = ppdata;
295 1 strcpy(&msg[0], "Task 5");
296 1 for (;;) {
297 2 OSTimeDlyHMSM(0, 0, 1, 500);
298 2 OSQPost(MsgQueue, (void *)&msg[0]);
299 2 OSTimeDlyHMSM(0, 0, 0, 500);
C51 COMPILER V8.08 MAIN 08/19/2008 10:59:07 PAGE 6
300 2 }
301 1 }
302
303 void TaskClk (void *ppdata) Reentrant
304 {
305 1 ppdata = ppdata;
306 1 for (;;) {
307 2 OSTimeDly(OS_TICKS_PER_SEC);
308 2 OSTimeDly(OS_TICKS_PER_SEC);
309 2 }
310 1 }
311
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2423 ----
CONSTANT SIZE = 226 ----
XDATA SIZE = 3827 1
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -