📄 sysmain.lst
字号:
580 {
581 1 if(ModeTmp == 3)
582 1 ModeTmp = 0;
583 1 else ModeTmp++;
584 1 PrintStr_xy(15,0,CurveStr[ModeTmp]);
585 1 }
586 void CH_ModeDec()
587 {
588 1 if(ModeTmp == 0)
589 1 ModeTmp = 3;
590 1 else ModeTmp++;
591 1 PrintStr_xy(15,0,CurveStr[ModeTmp]);
592 1 }
593 void ModeSave()
594 {
595 1 unsigned int data i;
596 1 EA = 0;
597 1 if(ChannelSel == 0 )
598 1 {
599 2 for(i=1;i<513;i++)
600 2 chMode[i] = ModeTmp;
601 2 }
602 1 else
603 1 chMode[ChannelSel] = ModeTmp;
604 1 EA = 1;
605 1 PrintStr_xy(0,0,SettingSaved);
606 1 }
607 void ChSelfCheck()
608 {
609 1 PrintStr_xy(0,0,SelfCheckStr);
610 1 bLocalControl=True; /*置标志由主程序根据标志调用相应函数自检*/
611 1 bSelfCheck = True;
612 1 LV = 0;
613 1 }
C51 COMPILER V6.23a SYSMAIN 05/22/2003 17:10:26 PAGE 11
614 void TimeCoutInc()
615 {
616 1 if(TimeCout == 20)
617 1 TimeCout = 1;
618 1 else TimeCout++;
619 1 PrintNum2_xy(17,0,TimeCout);
620 1 Cursor_xy(17,0);
621 1 }
622 void TimeCoutDec()
623 {
624 1 if(TimeCout == 1)
625 1 TimeCout = 20;
626 1 else TimeCout--;
627 1 PrintNum2_xy(17,0,TimeCout);
628 1 Cursor_xy(17,0);
629 1 }
630 void CharseCheck()
631 {
632 1 unsigned int i;
633 1 PrintStr_xy(0,0,CharseCheckStr);
634 1 while(bOutEnd == False);
635 1 for(i=0;i<512;i++)
636 1 dmx_outbuf[i]=0;
637 1 bLocalControl = True; /*置标志由主程序根据标志调用相应函数自检*/
638 1 bCharseCheck = True;
639 1 }
640 void CueNumInc()
641 {
642 1 if(CueNum == CUE_MAX)
643 1 CueNum = 1;
644 1 else CueNum++;
645 1 PrintNum2_xy(17,0,CueNum);
646 1 Cursor_xy(17,0);
647 1 }
648 void CueNumDec()
649 {
650 1 if(CueNum == 1)
651 1 CueNum =CUE_MAX;
652 1 else CueNum--;
653 1 PrintNum2_xy(17,0,CueNum);
654 1 Cursor_xy(17,0);
655 1 }
656 void SaveNumCue()
657 {
658 1 unsigned int data i;
659 1 for(i=0;i<512;i++)
660 1 SavedCue[CueNum-1][i]=dmx_outbuf[i];
661 1 PrintStr_xy(0,0,CueSavedStr);
662 1 }
663 void DeleNumCue()
664 {
665 1 unsigned int data i;
666 1 for(i=0;i<512;i++)
667 1 SavedCue[CueNum-1][i]=0;
668 1 PrintStr_xy(0,0,CueDeleStr);
669 1 }
670 void RcallNumCue()
671 {
672 1 unsigned int data i;
673 1 while(bOutEnd == False);
674 1 EA=0;
675 1 for(i=0;i<512;i++)
C51 COMPILER V6.23a SYSMAIN 05/22/2003 17:10:26 PAGE 12
676 1 dmx_outbuf[i] = SavedCue[CueNum-1][i];
677 1 EA=1;
678 1 //
679 1 }
680 void ChangeLV_SelfCheck()
681 { unsigned int i;
682 1 if(ChannelSel == 0)
683 1 {
684 2 for(i=0;i<DmxLength;i++)
685 2 dmx_outbuf[i]=LV;
686 2 }
687 1 else
688 1 dmx_outbuf[ChannelSel]=LV;
689 1 PrintNum_xy(16,0,turn_ff_to_99[LV]);
690 1 LV++;
691 1 }
692 void ChangeLV_CharseCheck()
693 {
694 1 unsigned char data t=TimeCout;
695 1 unsigned int data i;
696 1 while(t--)
697 1 {
698 2 TF1 = 0;
699 2 TH1 = TIME50MSH;
700 2 TL1 = TIME50MSL;
701 2 TR1 = 1;
702 2 while(TF1 == 0);
703 2 TR1 = 0;
704 2 }
705 1 for(i=0;i<DmxLength;i++)
706 1 {
707 2 dmx_outbuf[i]=255;
708 2 if(i==0)
709 2 dmx_outbuf[DmxLength-1]=0;
710 2 else
711 2 dmx_outbuf[i-1]=0;
712 2 }
713 1 }
714
715 void SendDmx512(unsigned char outStartCode)
716 {
717 1 odmxIndex = 0; /*缓冲区索引号*/
718 1 while(bOutEnd != True); /*上一帧数据还没有发送完毕等待*/
719 1 bOutEnd = False; /*这一帧数据刚开始发送,当然没有发送完毕*/
720 1 P3_1=0; /*发送同步头信号*/
721 1 TF1 = 0;
722 1 TH1 = TIME88USH;
723 1 TL1 = TIME88USL;
724 1 TR1 = 1;
725 1 while(TF1 == 0);
726 1 TR1 = 0;
727 1 P3_1=1;
728 1 TI=0;
729 1 ES=1;
730 1 SBUF=outStartCode; /*发送数据头,将启动串行发送中断*/
731 1 /*while(1)
732 1 {
733 1 while(TI==0);
734 1
735 1 TI=0;
736 1 SBUF=dmx_outbuf[odmxIndex];
737 1 odmxIndex++;
C51 COMPILER V6.23a SYSMAIN 05/22/2003 17:10:26 PAGE 13
738 1 if(odmxIndex==512)
739 1 {
740 1 bOutEnd = True; /*发送完毕标志位/
741 1 odmxIndex=0;
742 1 ES=1;
743 1 return;
744 1 }
745 1 //return;
746 1
747 1 }*/
748 1 }
749
750 void Ex0_Dmx512_interrupt(void) interrupt 0
751 {
752 1 P1_7=~P1_7;
753 1 SIOAddrBegin = AddrBegin;
754 1 SIOAddrEnd = AddrEnd;
755 1 REN=1;
756 1 EX0=0;
757 1 }
758
759 void Timer0_interrupt(void) interrupt 1
760 {/*
761 1 50ms进入,扫描键盘,键值入键盘缓冲区
762 1 */
763 1
764 1 unsigned char KeyOldValue,KeyValue;
765 1 P1_6=~P1_6;
766 1 KeyOldValue=P1&0x3f; //00111111
767 1 if(KeyOldValue==0x3f) /*判断有无键按下*/
768 1 {
769 2 InsertMsg(&key_buf,KEY_NULL);
770 2 return;
771 2 }
772 1 /*有键按下,延时10毫秒*/
773 1 TF1 = 0;
774 1 TH1 = TIME10MSH;
775 1 TL1 = TIME10MSL;
776 1 TR1 = 1;
777 1 while(TF1 == 0);
778 1 TR1 = 0;
779 1
780 1 KeyValue=P1&0x3f;
781 1 switch(KeyValue) /*判断是否是有效键,无效退出中断。亦起到去抖作用*/
782 1 {
783 2 case 0x3e:
784 2 case 0x3d:
785 2 case 0x3b:
786 2 case 0x37:
787 2 case 0x2f:
788 2 case 0x1f:
789 2 break;
790 2 default:
791 2 return;
792 2 }
793 1 while(((P1&0x3f)&0x3f)!=0x3f); /*判断按键是否释放*/
794 1 InsertMsg(&key_buf,KeyValue);
795 1 return;
796 1 }
797
798 void Ex1_interrupt(void) interrupt 2
799 {
C51 COMPILER V6.23a SYSMAIN 05/22/2003 17:10:26 PAGE 14
800 1
801 1 }
802
803 void Timer1_interrupt(void) interrupt 3
804 {
805 1
806 1 }
807
808 void Serial_interrupt(void) interrupt 4
809 {
810 1 if(RI)
811 1 {
812 2 RI=0;
813 2 if(bBeginRcv == False)
814 2 {
815 3 if(idmxIndex == 0)
816 3 RcvStartCode=SBUF;
817 3 idmxIndex++;
818 3 if(SIOAddrBegin == idmxIndex)
819 3 bBeginRcv = True;
820 3 return ;
821 3 }//begin recv need data
822 2 dmx_inbuf[idmxIndex-SIOAddrBegin]=SBUF;
823 2 if(idmxIndex!=SIOAddrEnd)
824 2 {
825 3 idmxIndex++;
826 3 return;
827 3 }
828 2 /*运行到此已经接收完毕*/
829 2 idmxIndex = 0;
830 2 bBeginRcv = False;
831 2 bDataReady = True; /*接收完毕,有数据需要处理了*/
832 2 REN = 0; /*接收完毕不需要接收了*/
833 2
834 2 }
835 1 if(TI/*&&(odmxIndex<512)*/)
836 1 {
837 2 TI=0;
838 2 if(bOutEnd == False)
839 2 {
840 3 SBUF=dmx_outbuf[odmxIndex];
841 3 odmxIndex++;
842 3 }
843 2 if(odmxIndex==512)
844 2 {
845 3 bOutEnd = True; /*发送完毕标志位*/
846 3 odmxIndex=0;
847 3 }
848 2 return;
849 2 }
850 1
851 1 }
852
853 void Timer2_interrupt(void) interrupt 5
854 {
855 1
856 1 }
857
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2896 ----
C51 COMPILER V6.23a SYSMAIN 05/22/2003 17:10:26 PAGE 15
CONSTANT SIZE = 2097 ----
XDATA SIZE = 27144 ----
PDATA SIZE = ---- ----
DATA SIZE = 51 2
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 + -