📄 rxr_cs.lst
字号:
552 4 sl_n=recebuf_com[4];sl_n=(sl_n<<8)|(recebuf_com[5]); //读取的数量
553 4 sendbuf[2]=0x00; //线圈Hi
554 4 sendbuf[3]=recebuf_com[3]; //线圈Li
555 4 sendbuf[4]=recebuf_com[4]; //
556 4 sendbuf[5]=recebuf_com[5]; //
557 4 switch (sl_n)
558 4 {
559 5 case 0xff00: //on
560 5 {
561 6 command_05();
562 6 switch (star_fun)
563 6 {
564 7 case 0:{jd_on(0x01);break;}
565 7 case 1:{jd_on(0x02);break;}
566 7 case 2:{jd_on(0x04);break;}
567 7 case 3:{jd_on(0x08);break;}
568 7 case 4:{jd_on(0x10);break;}
569 7 case 5:{jd_on(0x20);break;}
570 7 default:{break;}
571 7 }
572 6 group_out_ad();
573 6 break;
574 6 }
575 5 case 0x0000: //off
576 5 {
577 6 command_05();
578 6 switch (star_fun)
579 6 {
580 7 case 0:{jd_off(0x01);break;}
581 7 case 1:{jd_off(0x02);break;}
582 7 case 2:{jd_off(0x04);break;}
583 7 case 3:{jd_off(0x08);break;}
584 7 case 4:{jd_off(0x10);break;}
585 7 case 5:{jd_off(0x20);break;}
586 7 default:{break;}
587 7 }
588 6 group_out_ad();
589 6 break;
590 6 }
591 5 default :
592 5 sendbuf[0]=addr; //取地址
593 5 sendbuf[1]=0xff; //命令号
594 5 send_Len=2; //发送数据长度
595 5 group_out_ad();
596 5 break;
597 5 }
598 4 break;
599 4 }
600 3 default:
601 3 {
602 4 sendbuf[0]=addr; //取地址
603 4 sendbuf[1]=0xff; //命令号
604 4 send_Len=2; //发送数据长度
605 4 group_out_ad();
606 4 break;
607 4 }
608 3 }
609 2 }
610 1 XJ=1;RUN=1;
611 1 command_ok=0; //消息处理完
612 1 }
C51 COMPILER V7.06 RXR_CS 06/26/2006 22:51:01 PAGE 11
613
614 void command_01(void)
615 {
616 1 sendbuf[0]=addr; //取地址
617 1 sendbuf[1]=0x01; //命令号
618 1 sendbuf[2]=0x01; //返回字节数
619 1 send_Len=4; //发送数据长度
620 1 }
621
622 void command_02(void)
623 {
624 1 sendbuf[0]=addr; //取地址
625 1 sendbuf[1]=0x02; //命令号
626 1 sendbuf[2]=0x01; //返回字节数
627 1 send_Len=4; //发送数据长度
628 1 }
629
630 void command_03(void)
631 {
632 1 sendbuf[0]=addr; //取地址
633 1 sendbuf[1]=0x03; //命令号
634 1 }
635
636 void command_05(void)
637 {
638 1 sendbuf[0]=addr; //取地址
639 1 sendbuf[1]=0x05; //命令号
640 1 send_Len=6; //发送数据长度
641 1 }
642
643
644 /*=================================*/
645 /*=======定时器0中断处理函数=======*/
646 /* 中断计时1ms */
647 /*=================================*/
648 void timer0(void) interrupt 1 using 2
649 {
650 1 TH0 = 0xf8;
651 1 TL0 = 0x14;
652 1 if(timer0_cn<2)
653 1 {timer0_cn++;}
654 1 else
655 1 {
656 2 TR0=0;
657 2 rece_Len=0;
658 2 XJ=1;
659 2 command_ok=1; //一个消息接收完成!等待处理
660 2 }
661 1 }
662 /*===========================*/
663 /*======串口配置函数函数=====*/
664 /* bruad:波特率 */
665 /*===========================*/
666 void Serial(void)
667 {
668 1 SCON = 0xDC;
669 1 TMOD = 0x21;
670 1 TH1 = 0xFA;
671 1 TL1 = 0xFA;
672 1 PCON &= 0x7F;
673 1 TR1 = 1;
674 1 }
C51 COMPILER V7.06 RXR_CS 06/26/2006 22:51:01 PAGE 12
675
676
677 /*===========================*/
678 /*========奇偶校验函数=======*/
679 /*===========================*/
680 void chenck_fun(uchar x)
681 {
682 1 ACC=x;
683 1 if(P) {TB8=1;} //若P=1,说明有奇数个1,TB8置1
684 1 else {TB8=0;}
685 1 }
686 /*=================================*/
687 /*=========中断接收数据函数========*/
688 /*=================================*/
689 void com(void) interrupt 4 using 3
690 {
691 1 EA=0;
692 1 if (RI)
693 1 {
694 2 RI=0;TR0=0;
695 2 if(timer0_cn>1) //>1.5个字符停顿,刷新不完整消息 1x2ms
696 2 {
697 3 rece_Len=0; //command_ok=0;
698 3 TH0=0xf8;TL0=0x14;timer0_cn=0;TR0=1;
699 3 }
700 2 recebuf[rece_Len]=SBUF; //接收数据
701 2 recebuf_com[rece_Len]=recebuf[rece_Len];
702 2 rece_Len++;
703 2 command_Len=rece_Len; //消息长度
704 2 ACC=recebuf[rece_Len];
705 2 /*以下进行奇偶校验*/
706 2 if(P) //P=1时,说明接收到的数据为奇数个1,接收第9位RB8为1正确,否则错误!
707 2 {
708 3 if(RB8){js_check=1;}//偶校验正确
709 3 else{js_check=2;}//偶校验错误!
710 3 }
711 2 else //P=0时,说明接收到的数据为偶数个1,接收第9位RB8为0正确,否则错误!
712 2 {
713 3 if(!RB8){js_check=1;}//偶校验正确
714 3 else{js_check=2;}//偶校验错误!
715 3 }
716 2 rece_Len&=0x0f;
717 2 timer0_cn=0;TR0=1;//接收完数据,启动接收计时,检测是否停顿超过1.5个字符时间停顿!
718 2 }
719 1 EA=1;
720 1 }
721
722
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1935 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 11
IDATA SIZE = 105 ----
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 + -