📄 test.lst
字号:
C51 COMPILER V8.08 TEST 04/08/2008 09:22:25 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN TEST.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TEST.C LARGE BROWSE DEBUG OBJECTEXTEND
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 * EXAMPLE #1
10 *********************************************************************************************************
11 */
12
13 #include "includes.h"
14 #include "display.h"
15
16 /*
17 *********************************************************************************************************
18 * CONSTANTS
19 *********************************************************************************************************
20 */
21
22 #define TASK_STK_SIZE 512 /* Size of each task's stacks (# of WORDs) */
23 #define N_TASKS 10 /* Number of identical tasks */
24
25
26 /*
27 *********************************************************************************************************
28 * VARIABLES
29 *********************************************************************************************************
30 */
31
32 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; /* Tasks stacks */
33 OS_STK TaskStartStk[TASK_STK_SIZE];
34 char TaskData[N_TASKS]; /* Parameters to pass to each task */
35 OS_EVENT *RandomSem;
36
37 /*
38 *********************************************************************************************************
39 * FUNCTION PROTOTYPES
40 *********************************************************************************************************
41 */
42
43 void Task(void *pd) reentrant; /* Function prototypes of tasks
- */
44 void TaskStart(void *pdata) reentrant; /* Function prototypes of Startup task
- */
45 static void TaskStartCreateTasks(void) reentrant;
46 unsigned char HexToAscii (unsigned char num) reentrant;
47
48 /*
49 *********************************************************************************************************
50 * MAIN
51 *********************************************************************************************************
52 */
53
C51 COMPILER V8.08 TEST 04/08/2008 09:22:25 PAGE 2
54 void main (void)
55 {
56 1 OSInit(); /* Initialize uC/OS-II */
57 1
58 1 OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
59 1
60 1 OSStart(); /* Start multitasking */
61 1 }
62
63 /*
64 *********************************************************************************************************
65 * STARTUP TASK
66 *********************************************************************************************************
67 */
68
69 void TaskStart (void *pdata) reentrant
70 {
71 1 INT8U i = 0;
72 1 INT32U time = 0;
73 1
74 1 pdata = pdata; /* Prevent compiler warning */
75 1
76 1 nt7606_init();
77 1
78 1 OS_ENTER_CRITICAL();
79 1 // clock init
80 1 TMOD = 0x11;
81 1 ET0 = 1;
82 1 TR0 = 1;
83 1 OS_EXIT_CRITICAL();
84 1
85 1 OSStatInit(); /* Initialize uC/OS-II's statistics */
86 1
87 1 TaskStartCreateTasks(); /* Create all the application tasks */
88 1
89 1 i = 0;
90 1 OSTimeSet(0);
91 1 while (1)
92 1 {
93 2 time = OSTimeGet() / 20;
94 2
95 2 movcur(1, 5);
96 2 if ((time / 1000) > 0)
97 2 {
98 3 putch(HexToAscii(time / 1000));
99 3 }
100 2 else
101 2 {
102 3 putch('0');
103 3 }
104 2 if ((time % 1000 / 100) > 0)
105 2 {
106 3 putch(HexToAscii(time % 1000 / 100));
107 3 }
108 2 else
109 2 {
110 3 putch('0');
111 3 }
112 2
113 2 putch(HexToAscii(time % 100 / 10));
114 2 putch(HexToAscii(time % 10));
115 2 putch('s');
C51 COMPILER V8.08 TEST 04/08/2008 09:22:25 PAGE 3
116 2
117 2 OSTimeDlyHMSM(0, 0, 1, 0); /* Wait one second */
118 2 }
119 1 }
120
121 /*
122 *********************************************************************************************************
123 * CREATE TASKS
124 *********************************************************************************************************
125 */
126
127 static void TaskStartCreateTasks (void) reentrant
128 {
129 1 INT8U i;
130 1
131 1 for (i = 0; i < N_TASKS; i++) { /* Create N_TASKS identical tasks */
132 2 TaskData[i] = '0' + i; /* Each task will display its own letter */
133 2 OSTaskCreate(Task, (void *)&TaskData[i], &TaskStk[i][TASK_STK_SIZE - 1], i + 1);
134 2 }
135 1 }
136
137
138 /*
139 *********************************************************************************************************
140 * TASKS
141 *********************************************************************************************************
142 */
143
144 void Task (void *pd) reentrant
145 {
146 1 INT8U i;
147 1 INT8U * p;
148 1
149 1 //pdata = pdata;
150 1
151 1 i = 0;
152 1 for (;;) {
153 2 OSTimeDly(OS_TICKS_PER_SEC); /* Delay 1 clock tick */
154 2
155 2 i = TL0 % 17;
156 2 if (i == 0)
157 2 {
158 3 i = 16;
159 3 }
160 2
161 2 movcur(2, i);
162 2 p = (char *)pd;
163 2 putch(*p);
164 2 }
165 1 }
166
167
168 unsigned char HexToAscii (unsigned char num) reentrant
169 {
170 1 num &= 0x0F;
171 1
172 1 if (num < 10)
173 1 {
174 2 return (num + 0x30);
175 2 }
176 1 else
177 1 {
C51 COMPILER V8.08 TEST 04/08/2008 09:22:25 PAGE 4
178 2 return (num + 0x37);
179 2 }
180 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 790 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 5645 ----
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 + -