📄 test.lst
字号:
C51 COMPILER V7.50 TEST 03/06/2007 22:39:42 PAGE 1
C51 COMPILER V7.50, 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 PRINT(.\DeBug\test.lst) SRC(.\DeBug\
-test.SRC)
line level source
1 /*
2 *********************************************************************************************************
3 * uC/OS-II
4 * The Real-Time Kernel
5 *
6 * Author:陈是知
7 * All Rights Reserved
8 * v0.1
9 * 密码器包协议
10 *********************************************************************************************************
11 */
12
13 #include <includes.h>
14 /*
15 *********************************************************************************************************
16 * CONSTANTS
17 *********************************************************************************************************
18 */
19
20 #define TASKSTART_ID 4 /* 任务的ID */
21 #define RxTASK_ID 5
22 #define TxTASK_ID 6
23 #define OETASK_ID 7
24
25 #define TASKSTART_PRIO 4 /* 任务的优先级 */
26 #define RxTASK_PRIO 5
27 #define TxTASK_PRIO 6
28 #define OETASK_PRIO 7
29
30 /*
31 *********************************************************************************************************
32 * LOCAL GLOBAL VARIABLES
33 *********************************************************************************************************
34 */
35
36 INT8U RESFlag=0x00;
37 INT8U OEFlag =0x00;
38 INT8U InBuf[130];
39 INT8U OutBuf[256];
40 INT8U TICKS;
41
42 /*
43 *********************************************************************************************************
44 * VARIABLES
45 *********************************************************************************************************
46 */
47 OS_STK TaskStartStk[TASK_STK_SIZE]; /* 声明启动任务堆栈 */
48 OS_STK RxTASKStk[TASK_STK_SIZE]; /* 声明接收任务堆栈 */
49 OS_STK TxTASKStk[TASK_STK_SIZE]; /* 声明发送任务堆栈 */
50 OS_STK OETASKStk[TASK_STK_SIZE]; /* 声明加/解密任务堆栈 */
51
52 /*
53 *********************************************************************************************************
54 * FUNCTION PROTOTYPESZ
C51 COMPILER V7.50 TEST 03/06/2007 22:39:42 PAGE 2
55 *********************************************************************************************************
56 */
57 void TaskStart(void *cszdata) reentrant; /* 声明任务原型 *
-/
58 void RxTASK(void *cszdata) reentrant;
59 void TxTASK(void *cszdata) reentrant;
60 void OETASK(void *cszdata) reentrant;
61 void TaskCreate(void);
62
63 /*
64 *********************************************************************************************************
65 * MAIN
66 *********************************************************************************************************
67 */
68 void main(void)
69 {
70 1 OS_STK *ptos;
71 1 OS_STK *pbos;
72 1 INT32U size;
73 1
74 1 OSInit(); /* 初始化uC/OS-II */
75 1 InitTimer0(); /* 初始化定时器0 */
76 1 CommBufInit(); /* 初始化串口缓冲区 */
77 1 CommInit(); /* 初始化串口 */
78 1
79 1 ptos = &TaskStartStk[0]; /* 51的堆栈是从下向上递增的,所以栈顶为最低地址 */
-
80 1 pbos = &TaskStartStk[TASK_STK_SIZE - 1];
81 1 size = TASK_STK_SIZE;
82 1 /* 建立TaskStart任务 */
83 1 OSTaskCreateExt(TaskStart,
84 1 (void *)0,
85 1 ptos,
86 1 TASKSTART_PRIO,
87 1 TASKSTART_ID,
88 1 pbos,
89 1 size,
90 1 (void *)0,
91 1 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
92 1
93 1 OSStart(); /* 开始执行 */
94 1 }
95
96 /*
97 *********************************************************************************************************
98 * STARTUP TASK
99 *********************************************************************************************************
100 */
101 void TaskStart (void *cszdata) reentrant
102 {
103 1 INT16U i=0;
104 1 INT16U j=0;
105 1 INT16U CRC;
106 1 /*
107 1 命令表如下,用户可以通过虚拟接受来实现脱离实际开发环境的程序调试。
108 1 CMD1: 1B 03 01 F6 E0
109 1 RES1: 1B 0C 01 01 01 01 01 01 01 01 01 01 2C 1F
110 1
111 1 CMD2: 1B 07 02 01 02 03 04 FD 95
112 1 RES2: 1B 0B 02 XX XX XX XX 01 02 03 04 XX XX
113 1
114 1 CMD3: 1B 0A 03 O1 02 03 04 01 02 03 3E CC
C51 COMPILER V7.50 TEST 03/06/2007 22:39:42 PAGE 3
115 1 RES3: 1B OD 03 XX XX XX XX 01 02 03 01 02 03 XX XX
116 1 */
117 1 INT8U Puts[64]={0x1B,0x0A,0x03,0x01,0x02,0x03,0x04,0x01,0x02,0x03}; //这里填上需要虚拟接受的命令包内容
118 1 extern INT8U TICKS;
119 1
120 1 cszdata = cszdata; /* 防止编译警告 */
121 1
122 1 //注意!在最高优先级任务循环前打开定时器中断,以满足在OSStart()前不产生中断的要求。
123 1 //在系统调用OSInit()时会自动创建一个优先级最低的系统任务,创建过程中会调用OS_EXIT_CRITICAL()打开EA
-。
124 1 //若在InitTimer0()里打开T0中断,则违反了在OSStart()前不产生中断的要求。
125 1 //切记将ET0=1;放在最高优先级任务里,OSStart()将调用OSStartHighRdy()第一个运行最高优先级任务,这样ET0=1
-总能被第一个执行。
126 1 ET0=1;
127 1
128 1 //如果需要虚拟接受命令包,将下面的代码加入编译,如果命令包正确,程序运行后会发出响应包
129 1 /*
130 1 CRC = cal_crc(Puts,(Puts[1]));
131 1 j=(INT16U)Puts[1];
132 1 Puts[j+1]=(INT8U)CRC;
133 1 Puts[j]=(INT8U)(CRC>>8);
134 1 j=j+2;
135 1
136 1 for(i=0;i<j;i++)
137 1 {CommPutRxChar(Puts[i]);}
138 1 */
139 1
140 1 TaskCreate(); /* 创建任务 */
141 1
142 1 for(;;)
143 1 {
144 2 TICKS++;
145 2 OSTimeDly(OS_TICKS_PER_SEC); /* 延时一秒 */
-
146 2 }
147 1 }
*** WARNING C280 IN LINE 105 OF TEST.C: 'CRC': unreferenced local variable
148 /*
149 *********************************************************************************************************
150 * CREATE TASKS
151 *********************************************************************************************************
152 */
153 void TaskCreate (void)
154 {
155 1
156 1 OSTaskCreateExt(RxTASK,
157 1 (void *)0,
158 1 &RxTASKStk[0],
159 1 RxTASK_PRIO,
160 1 RxTASK_ID,
161 1 &RxTASKStk[TASK_STK_SIZE - 1],
162 1 TASK_STK_SIZE,
163 1 (void *)0,
164 1 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
165 1
166 1 OSTaskCreateExt(TxTASK,
167 1 (void *)0,
168 1 &TxTASKStk[0],
169 1 TxTASK_PRIO,
170 1 TxTASK_ID,
171 1 &TxTASKStk[TASK_STK_SIZE - 1],
172 1 TASK_STK_SIZE,
C51 COMPILER V7.50 TEST 03/06/2007 22:39:42 PAGE 4
173 1 (void *)0,
174 1 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
175 1
176 1 OSTaskCreateExt(OETASK,
177 1 (void *)0,
178 1 &OETASKStk[0],
179 1 OETASK_PRIO,
180 1 OETASK_ID,
181 1 &OETASKStk[TASK_STK_SIZE-1],
182 1 TASK_STK_SIZE,
183 1 (void *)0,
184 1 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
185 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -