📄 zj.lst
字号:
293 3 fs_char((sizeof("error(1)\r")),"error(1)\r");
294 3 }
295 2 else
296 2 {
297 3 struct {
298 3 unsigned int id;
299 3 unsigned char sj[8];
300 3 }ls;
301 3 //数据结构装入数局
302 3 ls.id=(id<<5)|0x0008;
303 3 ls.sj[0]=toint(uart_data[ 8]); ls.sj[0]=ls.sj[0]<<4; ls.sj[0]=ls.sj[0]+toint(uart_data[ 9]);
304 3 ls.sj[1]=toint(uart_data[11]); ls.sj[1]=ls.sj[1]<<4; ls.sj[1]=ls.sj[1]+toint(uart_data[12]);
305 3 ls.sj[2]=toint(uart_data[14]); ls.sj[2]=ls.sj[2]<<4; ls.sj[2]=ls.sj[2]+toint(uart_data[15]);
306 3 ls.sj[3]=toint(uart_data[17]); ls.sj[3]=ls.sj[3]<<4; ls.sj[3]=ls.sj[3]+toint(uart_data[18]);
307 3 ls.sj[4]=toint(uart_data[20]); ls.sj[4]=ls.sj[4]<<4; ls.sj[4]=ls.sj[4]+toint(uart_data[21]);
308 3 ls.sj[5]=toint(uart_data[23]); ls.sj[5]=ls.sj[5]<<4; ls.sj[5]=ls.sj[5]+toint(uart_data[24]);
309 3 ls.sj[6]=toint(uart_data[26]); ls.sj[6]=ls.sj[6]<<4; ls.sj[6]=ls.sj[6]+toint(uart_data[27]);
310 3 ls.sj[7]=toint(uart_data[29]); ls.sj[7]=ls.sj[7]<<4; ls.sj[7]=ls.sj[7]+toint(uart_data[30]);
311 3
312 3 //向CANX发送数据
313 3 if(canx_out((unsigned char *)&ls)==1)
314 3 { fs_char((sizeof("error(2) can\r")),"error(2) can\r"); }
315 3 else { fs_char((sizeof("ok\r")),"ok\r"); }
316 3
317 3 }
318 2 goto wancheng;
319 2 } //canx-out 命令处理完毕
320 1
321 1
322 1 //**********************************************
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 6
323 1 if(char_Comparison(uart_data,"bit=")==0)
324 1 {char a;
325 2 a=toint(uart_data[4]);
326 2 if(a>8) goto error;
327 2 fs_char((sizeof("ok\r")),"ok\r");
328 2 write(0,a);
329 2 jq_ys(5);
330 2 uart_bit();
331 2 goto wancheng;
332 2 }
333 1
334 1 //**********************************************
335 1 if(char_Comparison(uart_data,"dir")==0)
336 1 { const unsigned char ascii[]={"0123456789abcdef"};
337 2 unsigned int i;
338 2 for(i=0;i<=255;i++)
339 2 {
340 3 if((i%16)==0) fs_x('\r');
341 3 fs_x(ascii[(EEPROM[(i)])>>4]); fs_x(ascii[(EEPROM[(i)])&0x0f]); fs_x(' ');
342 3 }
343 2 fs_x('\r');
344 2 goto wancheng;
345 2 }
346 1 //**********************************************
347 1 if(char_Comparison(uart_data,"?")==0)
348 1 {unsigned char b;
349 2 unsigned char xdata *j;
350 2 //一般错误处理 更新错误计数器与错误标志
351 2 j=sr; b=(*j);
352 2 can_error=1; can_error_Appearance=1;
353 2 j=ecc; can_error_ecc=*j;
354 2 j=rxerr; can_error_rxerr=*j;
355 2 j=txerr; can_error_txerr=*j;
356 2 if((b&0x40)!=0) can_error_es=1; else can_error_es=0;
357 2 goto wancheng;
358 2 }
359 1 //**********************************************
360 1 if(char_Comparison(uart_data,"id=?")==0)
361 1 {
362 2 unsigned int a;
363 2 unsigned char b;
364 2 fs_char((sizeof("id=")),"id=");
365 2 a=id;
366 2 b=(unsigned char)(a>>12); b=b&0x0f;
367 2 fs_x(ascii[b]);
368 2 b=(unsigned char)(a>>8); b=b&0x0f;
369 2 fs_x(ascii[b]);
370 2 b=(unsigned char)(a>>4); b=b&0x0f;
371 2 fs_x(ascii[b]);
372 2 b=(unsigned char)a; b=b&0x0f;
373 2 fs_x(ascii[b]);
374 2
375 2 fs_x('\r');
376 2
377 2 goto wancheng;
378 2 }
379 1 //**********************************************
380 1 if(char_Comparison(uart_data,"id=")==0)
381 1 {
382 2 unsigned int a;
383 2 unsigned char b;
384 2 b=toint(uart_data[3]);
385 2 a=b; a=a<<4;
386 2 b=toint(uart_data[4]);
387 2 a=a+b; a=a<<4;
388 2 b=toint(uart_data[5]);
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 7
389 2 a=a+b; a=a<<4;
390 2 b=toint(uart_data[6]);
391 2 a=a+b;
392 2
393 2 if(a<0x7ff)
394 2 {
395 3 id=a;
396 3 fs_char((sizeof("ok\r")),"ok\r");
397 3 b=(unsigned char)(a>>8);
398 3 write(1,b);
399 3 b=(unsigned char)(a&0x00ff);
400 3 jq_ys(5);
401 3 write(2,b);
402 3 goto wancheng;
403 3 }
404 2 }
405 1 //**********************************************
406 1 error:
407 1 fs_char((sizeof("error(1)\r")),"error(1)\r");
408 1 wancheng:
409 1 {
410 2 unsigned char i;
411 2 for(i=0;i<sizeof(uart_data);i++) { uart_data[i]=0; }
412 2 }
413 1 uart_data_i=0;
414 1 uart_data_w_Complete=0;
415 1 }
416 //***********************************************************************
417 eeprom_can(unsigned char a,unsigned char xdata *b)
418 {
419 1 struct {
420 1 unsigned int id;
421 1 unsigned char sj[8];
422 1 }ls;
423 1 //数据结构装入数局
424 1 ls.id=(id<<5)|0x0008;
425 1
426 1 ls.sj[0]=a;
427 1 ls.sj[1]=*b; b=b+1;
428 1 ls.sj[2]=*b; b=b+1;
429 1 ls.sj[3]=*b; b=b+1;
430 1 ls.sj[4]=*b;
431 1 ls.sj[5]=0;
432 1 ls.sj[6]=0;
433 1 ls.sj[7]=1;
434 1 //向CANX发送数据
435 1 if(canx_out((unsigned char *)&ls)==1)
436 1 { fs_char((sizeof("error(2) can\r")),"error(2) can\r"); }
437 1 else { fs_char((sizeof("ok\r")),"ok\r"); }
438 1 }
439 //***********************************************************************
440 uart_bit()
441 {
442 1 unsigned char a;
443 1 a=read(0);
444 1 switch (a)
445 1 { //300波特
446 2 case 0: { fs_char((sizeof("bit=300\r")),"bit=300\r");
447 3 TR1=0; TH1=TL1=0X040; PCON=0X00; TR1=1; }
448 2 break;
449 2 //1200波特
450 2 case 1: { fs_char((sizeof("bit=1200\r")),"bit=1200\r");
451 3 TR1=0; TH1=TL1=0X0d0; PCON=0X00; TR1=1; }
452 2 break;
453 2 //2400波特
454 2 case 2: { fs_char((sizeof("bit=2400\r")),"bit=2400\r");
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 8
455 3 TR1=0; TH1=TL1=0X0e8; PCON=0X00; TR1=1; }
456 2 break;
457 2 //4800波特
458 2 case 3: { fs_char((sizeof("bit=4800\r")),"bit=4800\r");
459 3 TR1=0; TH1=TL1=0X0f4; PCON=0X00; TR1=1; }
460 2 break;
461 2 //9600波特
462 2 case 4: { fs_char((sizeof("bit=9600\r")),"bit=9600\r");
463 3 TR1=0; TH1=TL1=0X0fa; PCON=0X00; TR1=1; }
464 2 break;
465 2 //19200波特
466 2 case 5: { fs_char((sizeof("bit=19200\r")),"bit=19200\r");
467 3 TR1=0; TH1=TL1=0X0fd; PCON=0X00; TR1=1; }
468 2 break;
469 2 //38400波特
470 2 case 6: { fs_char((sizeof("bit=38400\r")),"bit=38400\r");
471 3 TR1=0; TH1=TL1=0X0fd; PCON=0X80; TR1=1; }
472 2 break;
473 2 //57600波特
474 2 case 7: { fs_char((sizeof("bit=57600\r")),"bit=57600\r");
475 3 TR1=0; TH1=TL1=0X0fe; PCON=0X80; TR1=1; }
476 2 break;
477 2 //115200波特
478 2 case 8: { fs_char((sizeof("bit=115200\r")),"bit=115200\r");
479 3 TR1=0; TH1=TL1=0X0ff; PCON=0X80; TR1=1; }
480 2 break;
481 2
482 2 default: { fs_char((sizeof("chushihua_bit=19200\r")),"chushihua_bit=19200\r");
483 3 }
484 2
485 2 }
486 1
487 1
488 1
489 1
490 1 }
491 //***********************************************************************
492 bit char_Comparison(unsigned char *a,unsigned char const *b)
493 {
494 1 while(*b!=0)
495 1 {
496 2 if(*a!=*b) return(1);
497 2 a=a+1; b=b+1;
498 2 }
499 1 return(0);
500 1 }
501 //***********************************************************************
502 error_chuli()
503 {
504 1 const unsigned char ascii[]={"0123456789abcdef"};
505 1 if(can_exit_Appearance==1)
506 1 {
507 2 fs_char((sizeof("error(4) can exit\r")),"error(4) can exit\r");
508 2 can_exit_Appearance=0;
509 2 }
510 1 if(can_error_Appearance==1)
511 1 {
512 2 can_error_Appearance=0;
513 2 //输出ERRC
514 2 fs_char((sizeof("error(4) can errc=")),"error(4) can errc=");
515 2 fs_x(ascii[(can_error_ecc&0x80)>>7]);
516 2 fs_x(ascii[(can_error_ecc&0x40)>>6]);
517 2 //输出DIR
518 2 fs_char((sizeof(" dir="))," dir=");
519 2 fs_x(ascii[(can_error_ecc&0x20)>>5]);
520 2 //输出SEG
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 9
521 2 fs_char((sizeof(" seg="))," seg=");
522 2 fs_x(ascii[(can_error_ecc&0x10)>>4]);
523 2 fs_x(ascii[(can_error_ecc&0x08)>>3]);
524 2 fs_x(ascii[(can_error_ecc&0x04)>>2]);
525 2 fs_x(ascii[(can_error_ecc&0x02)>>1]);
526 2 fs_x(ascii[can_error_ecc&0x01]);
527 2 fs_x(' ');
528 2 //输出txerr
529 2 fs_char((sizeof(" txerr="))," txerr=");
530 2 fs_x(ascii[(can_error_txerr&0xf0)>>4]);
531 2 fs_x(ascii[can_error_txerr&0x0f]);
532 2 fs_x(' ');
533 2 //输出rxerr
534 2 fs_char((sizeof(" rxerr="))," rxerr=");
535 2 fs_x(ascii[(can_error_rxerr&0xf0)>>4]);
536 2 fs_x(ascii[can_error_rxerr&0x0f]);
537 2 fs_x(' ');
538 2 //输出es
539 2 fs_char((sizeof("es=")),"es=");
540 2 fs_x(ascii[(unsigned char )can_error_es]);
541 2 fs_x('\r');
542 2 }
543 1 }
544 //***********************************************************************
545 //***********************************************************************
546 //********************************中断***********************************
547 //***********************************************************************
548 //***********************************************************************
549 can_int1() interrupt 2
550 {
551 1 unsigned char a,b;
552 1 unsigned char xdata *j;
553 1
554 1 j=ir; a=(*j);
555 1
556 1
557 1 //检测是否为错误中断
558 1 if(((a&0xa4)!=0))
559 1 {
560 2 CW=!CW;
561 2 //检测是否为总线脱离
562 2 j=sr; b=(*j);
563 2 if((b&0x80)==0x80)
564 2 {
565 3 j=mod; *j=0x00;
566 3 jq_ys(1000);
567 3 can_error=1;
568 3 can_exit_Appearance=1;
569 3 return;
570 3 }
571 2 //一般错误处理 更新错误计数器与错误标志
572 2 can_error=1; can_error_Appearance=1;
573 2 j=ecc; can_error_ecc=*j;
574 2 j=rxerr; can_error_rxerr=*j;
575 2 j=txerr; can_error_txerr=*j;
576 2 if((b&0x40)!=0) can_error_es=1; else can_error_es=0;
577 2 }
578 1
579 1
580 1 //检测是否为发送中断
581 1 if((a&0x02)==0x02) can_ti=1;
582 1
583 1
584 1 //检测是否为接收中断
585 1 if((a&0x01)==0x01)
586 1 {
C51 COMPILER V4.01, ZJ 11/06/03 12:01:37 PAGE 10
587 2 unsigned int ee;
588 2 unsigned char trr;
589 2 ee=can_w_data+1;
590 2 if(ee>=700) ee=0;
591 2 j=sffdlc; trr=*j;
592 2 trr=trr&0xc0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -