📄 main.lst
字号:
763 2 case 5:
764 2 DispFlag|=0x50;
765 2 break;
766 2 case 6:
767 2 DispFlag|=0x90;
768 2 break;
769 2 case 7:
770 2 DispFlag|=0x60;
771 2 break;
772 2 case 8:
773 2 DispFlag|=0xa0;
774 2 break;
775 2 case 9:
776 2 DispFlag|=0xc0;
777 2 break;
778 2 case 10:
779 2 DispFlag|=0x70;
780 2 break;
781 2 case 11:
782 2 DispFlag|=0xb0;
783 2 break;
784 2 case 12:
785 2 DispFlag|=0xe0;
786 2 break;
787 2 case 13:
788 2 DispFlag|=0xd0;
789 2 break;
790 2 case 14:
791 2 DispFlag|=0xf0;
792 2 break;
793 2 default:
794 2 break;
795 2 }
796 1 }
797
798 //
799 void FlightDispPrg(uchar *databuf) //闪烁处理函数
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 14
800 {
801 1 ClearDispAttr();
802 1 memcpy(&DispBuf[1],&databuf[1],4);
803 1 DispFlag=0;
804 1 switch(databuf[0])
805 1 {
806 2 case 0:
807 2 DispFlag|=0x01;
808 2 break;
809 2 case 1:
810 2 DispFlag|=0x02;
811 2 break;
812 2 case 2:
813 2 DispFlag|=0x04;
814 2 break;
815 2 case 3:
816 2 DispFlag|=0x08;
817 2 break;
818 2 case 4:
819 2 DispFlag|=0x03;
820 2 break;
821 2 case 5:
822 2 DispFlag|=0x05;
823 2 break;
824 2 case 6:
825 2 DispFlag|=0x09;
826 2 break;
827 2 case 7:
828 2 DispFlag|=0x06;
829 2 break;
830 2 case 8:
831 2 DispFlag|=0x0a;
832 2 break;
833 2 case 9:
834 2 DispFlag|=0x0c;
835 2 break;
836 2 case 10:
837 2 DispFlag|=0x07;
838 2 break;
839 2 case 11:
840 2 DispFlag|=0x0b;
841 2 break;
842 2 case 12:
843 2 DispFlag|=0x0e;
844 2 break;
845 2 case 13:
846 2 DispFlag|=0x0d;
847 2 break;
848 2 case 14:
849 2 DispFlag|=0x0f;
850 2 break;
851 2 default:
852 2 break;
853 2 }
854 1 }
855
856 //
857 void LiftCrcDispPrg(uchar *databuf) //左循环显示处理
858 {
859 1 ClearDispAttr();
860 1 memcpy(&DispBuf[1],&databuf[1],4);
861 1 LiftCrcDispFlag=1;RightCrcDispFlag=0;
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 15
862 1 }
863 void RightCrcDispPrg(uchar *databuf) //右循环显示处理
864 {
865 1 ClearDispAttr();
866 1 memcpy(&DispBuf[1],&databuf[1],4);
867 1 LiftCrcDispFlag=0;RightCrcDispFlag=1;
868 1 }
869
870 //
871 void CanSend_Prg(void) //can发送数据
872 {
873 1 if(AutoSendFlag)
874 1 {
875 2 if((DispBuf[1]==0x05)&&(DispBuf[2]==0x0d)) //
876 2 {
877 3 DispBuf[3]= (unsigned char )TestSendData>>4;
878 3 DispBuf[4]= ((unsigned char )TestSendData)&0x0f;
879 3 }
880 2 }
881 1 }
882 void CanErr_Prg(void) //发现错误后处理
883 {
884 1 DispBuf[1]=0;
885 1 DispBuf[2]=0;
886 1 Config_SJA(); //
887 1 Error_disp(CAN_BUS_ERR);
888 1 }
889 void CanDtOver_Prg(void) //超载处理
890 {
891 1 // BCAN_CMD_PRG(COS_CMD);
892 1 }
893 void CanWui_Prg(void) //唤醒中断处理
894 {
895 1
896 1 }
897
898 //
899 void UartRcv_Prg(void) //串口接收到数据处理
900 {
901 1 BCAN_DATA_WRITE(RcvBuf); //将编辑的数据发送到can总线
902 1 BCAN_CMD_PRG(TR_CMD);
903 1 }
904
905 //自动发送
906 void AutoSendDataToCanBus(void)
907 {
908 1
909 1 if(AutoSendFlag)
910 1 {
911 2 if((ReadSjaReg(REG_CONTROL)&0x01)==0)
912 2 {
913 3 AutoSendFrameID >>=5;
914 3 AutoSendFrameID++;
915 3 if(AutoSendFrameID>0x0fe00)
916 3 {
917 4 AutoSendFrameID=0;
918 4 }
919 3 AutoSendFrameID <<=5;
920 3 TestSendData++;
921 3 WriteSjaReg(REG_TxBuffer1,AutoSendFrameID>>8);
922 3 WriteSjaReg(REG_TxBuffer2,((unsigned char)AutoSendFrameID&0xf0)|0x06);
923 3 WriteSjaReg(REG_TxBuffer3,0xc1);
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 16
924 3 WriteSjaReg(REG_TxBuffer4,14);
925 3 WriteSjaReg(REG_TxBuffer5,(unsigned char)(TestSendData>>12));
926 3 WriteSjaReg(REG_TxBuffer6,(unsigned char)((TestSendData>>8)&0x0f));
927 3 WriteSjaReg(REG_TxBuffer7,((unsigned char)TestSendData>>4));
928 3 WriteSjaReg(REG_TxBuffer8,((unsigned char)TestSendData&0x0f));
929 3 BCAN_CMD_PRG(TR_CMD);
930 3 }
931 2 else
932 2 {
933 3 AutoSendFlag=0;
934 3 Write_DispBuf(0,0x0E,0x12,0x0f,0x0d);//在复位模式
935 3 }
936 2 }
937 1
938 1 }
939
940 //提取波特率的对应值
941 unsigned char ValueToBandRate(void)
942 {
943 1 unsigned char i;
944 1 unsigned int BandRate;
945 1 BCAN_ENTER_RETMODEL();
946 1 i = ReadSjaReg(REG_BTR0);
947 1 BandRate=(unsigned int)(i<<8);
948 1 i = ReadSjaReg(REG_BTR1);
949 1 BandRate +=i;
950 1 BCAN_QUIT_RETMODEL();
951 1 switch(BandRate)
952 1 {
953 2 case 0xbfff: //;5KBPS的预设值
954 2 i =0;
955 2 break;
956 2 case 0x672f: //;10KBPS的预设值
957 2 i =1;
958 2 break;
959 2 case 0x532F: //;20KBPS的预设值
960 2 i =2;
961 2 break;
962 2 case 0x87FF: //;40KBPS的预设值
963 2 i =3;
964 2 break;
965 2 case 0x472F: //;50KBPS的预设值
966 2 i =4;
967 2 break;
968 2 case 0x83FF: //;80KBPS的预设值
969 2 i =5;
970 2 break;
971 2 case 0x432f: //;100KBPS的预设值
972 2 i =6;
973 2 break;
974 2 case 0x031c: //;125KBPS的预设值
975 2 i =7;
976 2 break;
977 2 case 0x81fa: //;200KBPS的预设值
978 2 i =8;
979 2 break;
980 2 case 0x011c: //;250KBPS的预设值
981 2 i =9;
982 2 break;
983 2 case 0x80fa: //;400KBPS的预设值
984 2 i =10;
985 2 break;
C51 COMPILER V7.01 MAIN 01/24/2003 11:54:43 PAGE 17
986 2 case 0x001c: //;500KBPS的预设值
987 2 i =11;
988 2 break;
989 2 case 0x80b6: //;666KBPS的预设值
990 2 i =12;
991 2 break;
992 2 case 0x0016: //;800KBPS的预设值
993 2 i =13;
994 2 break;
995 2 case 0x0014: //;1000KBPS的预设值
996 2 i =14;
997 2 break;
998 2 default:
999 2 i=0xff;
1000 2 break;
1001 2 }
1002 1 return i;
1003 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 3712 ----
CONSTANT SIZE = 49 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 43 36
IDATA SIZE = 36 ----
BIT SIZE = 8 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -