📄 main.lst
字号:
C51 COMPILER V9.01 MAIN 10/31/2012 17:19:08 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Output\main.obj
COMPILER INVOKED BY: D:\keil c51完全版\an_zhuang_51\C51\BIN\C51.EXE APP\main.c LARGE BROWSE INCDIR(.\ucos-ii\inc\) DEBUG
- OBJECTEXTEND PRINT(.\Listing\main.lst) OBJECT(.\Output\main.obj)
line level source
1 /*
2 *********************************************************************************************************
3 * uC/OS-II
4 * The Real-Time Kernel
5 *
6 * (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
7 * All Rights Reserved
8 *
9 *
10 * uCOS_51 for MCS-51
11 *
12 * File : main.c
13 * By : Jean J. Labrosse
14 * Created by : QQ 591881218
15 *********************************************************************************************************
16 */
17
18 #include "..\ucos_51\ucos-ii\inc\includes.h"
19
20 // ---------------------------------
21
22 #define APPSTARTPRIO TASK_START_PRIO
23 #define POWERLEDPRIO OS_LOWEST_PRIO-2
24
25 #define OK 0
26 #define ACK 1
27 #define ENTER 0x0D
28
29 // ---------------------------------
30
31 sbit WorkLedCtrl=P3^4;
32
33
34 OS_STK AppStartStk[TASK_STK_SIZE];
35 OS_STK P1UpStk[TASK_STK_SIZE];
36 OS_STK P1DownStk[TASK_STK_SIZE];
37
38
39 // ---------------------------------
40
41 void AppStart(void *ppdata) REENTRANT;
42 void P1Up(void *ppdata) REENTRANT;
43 void P1Down(void *ppdata) REENTRANT;
44
45 void Delay(void) REENTRANT
46 {
47 1 int i,j;
48 1 for(i=0;i<200;i++)
49 1 for(j=0;j<200;j++);
50 1 }
51
52 void DelayMS(int x) REENTRANT
53 {
54 1 int i,j;
C51 COMPILER V9.01 MAIN 10/31/2012 17:19:08 PAGE 2
55 1 for(i=0;i<x;i++)
56 1 for(j=0;j<200;j++);
57 1 }
58
59 // ---------------------------------
60
61 int main(void)
62 {
63 1 InitSystem();
64 1 OSTaskCreate(AppStart, (void *)0, AppStartStk, 4);
65 1 P1=0xfe;
66 1 Delay();
67 1 P1=0x7f;
68 1 Delay();
69 1 OSStart();
70 1 return OK;
71 1 }
72
73 /*
74 *********************************************************************************************************
75 * 系统开始任务
76 *
77 * 描述 : 开定时器T0中断,创建消息邮箱以及所有其他的任务,然后自我删除。
78 *
79 * 参数 : ppdata
80 *
81 * 注意 : 系统启动后第一时间开定时器中断,否则系统其它任务无法得到执行。
82 *********************************************************************************************************
83 */
84 void AppStart(void *ppdata) REENTRANT
85 {
86 1 ppdata=ppdata;
87 1 ET0=1; /* 谨记:系统启动后第一时间开定时器中断 */
88 1
89 1 // LogoDisp();
90 1 // PrintStr("You can input by the terminal!\n\n\n");
91 1
92 1
93 1 OSTaskCreate(P1Up, (void *)0, P1UpStk, 5);
94 1 OSTaskCreate(P1Down, (void *)0, P1DownStk, 6);
95 1
96 1 OSTaskDel(OS_PRIO_SELF);
97 1
98 1 }
99
100 /*
101 *********************************************************************************************************
102 * 工作状态指示任务
103 *
104 * 描述 : CPU正常工作时,每秒钟闪烁5次,不工作时不闪烁,控制端口P3.4。
105 *
106 * 参数 : ppdata
107 *
108 * 注意 : 一个时钟节拍为0.02s,建议优先级设为最低,高于系统空闲任务和系统统计任务。强烈引起您的重视:
109 * ..\ucos_51\ucos-ii\src\ucos_ii.h
110 * OS_EXT DF_IDATA volatile INT32U OSIdleCtr;
111 * "OSIdleCtr" 变量务必设置为 "idata" 存储类型,否则任务运行节拍变慢。
112 *********************************************************************************************************
113 */
114 void P1Up(void *ppdata) REENTRANT
115 {
116 1 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
C51 COMPILER V9.01 MAIN 10/31/2012 17:19:08 PAGE 3
OS_CPU_SR cpu_sr;
#endif
119 1
120 1 ppdata=ppdata;
121 1
122 1 while(1)
123 1 {
124 2
125 2 OS_ENTER_CRITICAL();
126 2 P1=0xfe;
127 2 Delay();
128 2 P1=0x7f;
129 2 Delay();
130 2 OS_EXIT_CRITICAL();
131 2 OSTimeDly(20);
132 2 }
133 1
134 1 /* for(;;)
135 1 {
136 1 OS_ENTER_CRITICAL();
137 1
138 1 P1=0xfe;
139 1 OS_EXIT_CRITICAL();
140 1 DelayMS(4);
141 1
142 1 // OSTimeDlyHMSM(0,0,0,400);
143 1 // OSTimeDly(10);
144 1
145 1 } */
146 1 }
147
148 void P1Down(void *ppdata) REENTRANT
149 {
150 1 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
153 1
154 1 ppdata=ppdata;
155 1
156 1 while(1)
157 1 {
158 2
159 2 OS_ENTER_CRITICAL();
160 2 P1=253;
161 2 Delay();
162 2 P1=191;
163 2 Delay();
164 2 OS_EXIT_CRITICAL();
165 2 OSTimeDly(50);
166 2 }
167 1
168 1 /* for(;;)
169 1 {
170 1 OS_ENTER_CRITICAL();
171 1
172 1 P1=0x7f;
173 1 DelayMS(4);
174 1
175 1 OS_EXIT_CRITICAL();
176 1
177 1 // OSTimeDlyHMSM(0,0,0,200);
178 1 OSTimeDly(200);
C51 COMPILER V9.01 MAIN 10/31/2012 17:19:08 PAGE 4
179 1 } */
180 1 }
181
182 /*
183 *********************************************************************************************************
184 * 串口收发任务
185 *
186 * 描述 : UartRcv任务负责从键盘接收,通过消息邮箱发送给UartSend任务处理并在终端打印。
187 *
188 * 参数 : ppdata
189 *
190 * 注意 : 多任务的并发执行,须妥善处理对临界资源的访问以及多任务之间的通信。
-
191 *********************************************************************************************************
192 */
193 // ------------------------------------------------------------------------------------------------------
194 /*void UartRcv(void *ppdata) REENTRANT
195 {
196 static INT8U RxBuf;
197 static INT8U err;
198
199 ppdata=ppdata;
200
201 for(;;)
202 {
203 if(Getch(&RxBuf))
204 {
205 OSMboxPost(UartMbox, (void *)&RxBuf);
206 OSMboxPend(AckMbox, 0, &err);
207 }
208
209 OSTimeDlyHMSM(0,0,0,100);
210 }
211 }
212
213 void UartSend(void *ppdata) REENTRANT
214 {
215 static INT8U *TxBuf;
216 static INT8U err;
217 INT16U count=0;
218
219 ppdata=ppdata;
220
221 for(;;)
222 {
223 TxBuf=(INT8U *)OSMboxPend(UartMbox,0,&err);
224
225 if(OS_NO_ERR==err)
226 {
227 PrintChar(*TxBuf);
228
229 count++;
230
231 if((*TxBuf == ENTER) || (count == 0xFFFF)) count=1;
232
233 if(!(count%69))
234 {
235 PrintStr("\n");
236 }
237 }
238 else
239 {
C51 COMPILER V9.01 MAIN 10/31/2012 17:19:08 PAGE 5
240 PrintStr("\n\nMboxRcv err!\n\n\n");
241 }
242
243 OSMboxPost(AckMbox,(void *)ACK);
244 }
245 } */
246 // ------------------------------------------------------------------------------------------------------
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 538 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1536 ----
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 + -