📄 text.lst
字号:
200 3 case 'F':
201 3 if(Serial0_Receive.pre_char=='F'){
202 4 Serial0_Receive.buf[Serial0_Receive.buf_present_pos++]=c;
203 4 Serial0_Receive.pre_char=c;
204 4 Serial0_Receive.cmd_finish=FALSE;
205 4 }
206 3 else
207 3 {Serial0_Receive.buf[Serial0_Receive.buf_present_pos++]=c;
208 4 Serial0_Receive.pre_char=c;
209 4 }
210 3 break;
211 3
212 3 case 'E':
213 3 if(Serial0_Receive.pre_char=='E'){
214 4 Serial0_Receive.buf[Serial0_Receive.buf_present_pos++]=c;
215 4 Serial0_Receive.pre_char=c;
216 4 Serial0_Receive.cmd_finish=TRUE;
217 4 isr_send_signal (INCEPTBUF0); //唤醒串口1数据处理任务
218 4 }
219 3 else {
220 4 Serial0_Receive.buf[Serial0_Receive.buf_present_pos++]=c;
221 4 Serial0_Receive.pre_char=c;
222 4 }
223 3 break;
224 3
225 3 default: /* read all other characters into inbuf */
-
226 3 if (Serial0_Receive.cmd_finish==FALSE){
227 4 Serial0_Receive.buf[Serial0_Receive.buf_present_pos++]=c;
228 4 Serial0_Receive.pre_char=c;
229 4 }
230 3 break;
231 3 };
232 2 }
233 1
234 1 }
235
236 /*辅助中断服务程序*/
237 assistant_proc() interrupt 6 using 3
238 {
C51 COMPILER V7.01 TEXT 01/18/2006 15:17:31 PAGE 5
239 1 signed long int xdata result;
240 1 switch(PAI&0x0f)
241 1 {
242 2 case 0x06://adc滤波中断
243 2 {
244 3 if (ccnun--) result=unipolar(); // Dummy read to clear ADCIRQ
245 3 else
246 3 {
247 4 result=unipolar(); // read to clear ADCIRQ
248 4 adcsum.buf[adcsum.ps]=result>>8; // read to clear ADCIRQ
249 4 switch ((chanl_n++)&0x01)
250 4 {
251 5 case 0:
252 5 {
253 6 ADMUX=((chanl_n+1)<<3)|0x08;
-
254 6 adcsum.ps=(chanl_n+1)>>1;
255 6 }break;
256 5 case 1:
257 5 {
258 6 ADMUX=0x08;
259 6 adcsum.ps=0;
260 6 }break;
261 5 }
262 4 chanl_n= (chanl_n<8)? chanl_n : 0 ;
263 4 ccnun=4;
264 4 }
265 3 }break;
266 2
267 2 }
268 1 AI=CLEAR;
269 1 }
270
271 /******************************************************************************/
272 /* Task 0 'init': Initialize */
273 /******************************************************************************/
274 void init (void) _task_ INIT /* program execution starts here */
275 {
276 1 init_spi();
277 1 serial0_init();
278 1 init_adc();
279 1 PDCON |= PDWDT; /* turn oFF WatchDog */
280 1 WDTCON |= EWDT; /* set ewbt */
281 1 WDTCON &= ~EWDT; /* clear ewbt set timeout=8,900ms */
282 1 PDCON &= ~(PDSPI|PDAD); /* turn on SPI and ADC device */
283 1 h_cmd.in_p = CLEAR;
284 1 h_cmd.exe_p = CLEAR;
285 1 h_cmd.cont = CLEAR;
286 1 Serial0_Receive.buf_present_pos = 0; /*Now location of buffer,initial value is buf_start*/
287 1 Serial0_Receive.pre_char = 0; /*Prechar of present position,initial value is 0*/
288 1 Serial0_Receive.cmd_finish = 0; /*This is 1 command end has been accepted ,initial value i
-s 0*/
289 1 TI_0=0;
290 1 TI_1=0;
291 1 DAC8532 =1;
292 1 os_create_task (LOGIC_JUDGE);
293 1 os_create_task (COMMAND);
294 1 os_create_task (INCEPTBUF0);
295 1 os_delete_task (INIT); /* stop init task (no longer needed) */
296 1 }
297
298 /*--------------------------------------------------------------------------
C51 COMPILER V7.01 TEXT 01/18/2006 15:17:31 PAGE 6
299 读写CPLD
300 ---------------------------------------------------------------------------*/
301
302 void logic_judge (void) _task_ LOGIC_JUDGE
303 {
304 1 int data i=0;
305 1 while(1)
306 1 {
307 2 os_wait (K_TMO, 50,0);
308 2 for(i=0;i<5;i++)
309 2 {
310 3 *(W_ADDRESS+i)= adcsum.buf[i]>>1;
311 3 data_buf[i]=adcsum.buf[i]>>1;
312 3 }
313 2 Uart0Send(card_addr,cmdf_read,0,data_buf,0,7);
314 2 // for(i=0;i<10;i++)
315 2 // {
316 2 // DA[i]=*(W_ADDRESS+64+i);
317 2 // }
318 2 // printf("\n%d,%d,%d,%d,%d,%d,%d,%d,%d,%d mmm\n",DA[0],DA[1],DA[2],DA[3],DA[4],DA[5],DA[6],DA[7],DA[8],D
-A[9]);
319 2 //daval=DA[0];
320 2 // write_8532(daval,2);
321 2 // Uart0Send(card_addr,cmdf_read,0,DA,0,10);
322 2 }
323 1 }
324 /******************************************************************************/
325 /* 串口0数据处理任务 */
326 /******************************************************************************/
327 void inceptbuf0 (void) _task_ INCEPTBUF0
328 {
329 1 while(1)
330 1 {
331 2 os_wait (K_SIG, 0, 0);
332 2 if(h_cmd.in_p<4)
333 2 {
334 3 read_cmd(h_cmd.in_p, Serial0_Receive.buf);
335 3 h_cmd.in_p++;
336 3 h_cmd.in_p=h_cmd.in_p&3;
337 3 h_cmd.cont++;
338 3 }
339 2 os_clear_signal(INCEPTBUF0);
340 2 }
341 1 }
342
343 /******************************************************************************/
344 /* 命令处理任务 */
345 /******************************************************************************/
346 void command (void) _task_ COMMAND
347 {
348 1 uint valtemp=0,i;
349 1 while(1)
350 1 {
351 2 os_wait (K_TMO, 20,0);
352 2 if(h_cmd.cont>0) //h_cmd.cont命令数大于0
353 2 {
354 3 if(h_cmd.buf[h_cmd.exe_p].n==ADDRESS) //如果站地址等于'z'
355 3 {
356 4 if(h_cmd.buf[h_cmd.exe_p].a==card_addr) //功能地址为板地址
357 4 {
358 5 if(h_cmd.buf[h_cmd.exe_p].f==cmdf_read)
359 5 {
C51 COMPILER V7.01 TEXT 01/18/2006 15:17:31 PAGE 7
360 6 if(h_cmd.buf[h_cmd.exe_p].da[0]==0)
361 6 {
362 7 Uart0Send(card_addr,cmdf_read,0,data_buf,0,7);
363 7 }
364 6 }
365 5 else if(h_cmd.buf[h_cmd.exe_p].f==cmdf_write)
366 5 {
367 6 if(h_cmd.buf[h_cmd.exe_p].da[0]==1)
368 6 {
369 7 valtemp=h_cmd.buf[h_cmd.exe_p].da[1];
370 7 data_buf[5]=valtemp;
371 7 write_8532(valtemp,1);
372 7 valtemp=0;
373 7 }
374 6 else if(h_cmd.buf[h_cmd.exe_p].da[0]==2)
375 6 {
376 7 valtemp=h_cmd.buf[h_cmd.exe_p].da[1];
377 7 data_buf[6]=valtemp;
378 7 write_8532(valtemp,2);
379 7 valtemp=0;
380 7 }
381 6 }
382 5 }
383 4 }
384 3 h_cmd.cont--;
385 3 h_cmd.exe_p++;
386 3 h_cmd.exe_p=h_cmd.exe_p&3;
387 3 }
388 2 }
389 1 }
*** WARNING C280 IN LINE 348 OF TEXT.C: 'i': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1863 ----
CONSTANT SIZE = 3 ----
XDATA SIZE = 279 35
PDATA SIZE = ---- ----
DATA SIZE = 8 15
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -