can.lst
来自「本程序是针对Infineon公司的XC167CI处理器而编写的CAN网络程序。C」· LST 代码 · 共 1,247 行 · 第 1/4 页
LST
1,247 行
900 2 } // End of while()
901 1
902 1 // USER CODE BEGIN (SRN1,7)
903 1
904 1 // USER CODE END
905 1
906 1 } // End of function CAN_viSRN1
907
908
909 //****************************************************************************
910 // @Function void CAN_viSRN2(void)
911 //
912 //----------------------------------------------------------------------------
913 // @Description This is the interrupt service routine for the Service
914 // Request Node 2 of the TwinCAN module.
915 //
916 //----------------------------------------------------------------------------
917 // @Returnvalue None
918 //
919 //----------------------------------------------------------------------------
920 // @Parameters None
921 //
922 //----------------------------------------------------------------------------
923 // @Date 2006-12-9
C166 COMPILER V6.04, CAN 04/27/2008 18:41:45 PAGE 16
924 //
925 //****************************************************************************
926
927 // USER CODE BEGIN (SRN2,1)
928
929 // USER CODE END
930
931 void CAN_viSRN2(void) interrupt CAN_SRN2INT
932 {
933 1
934 1 // USER CODE BEGIN (SRN2,2)
935 1 int j,k;
936 1 // USER CODE END
937 1
938 1 while((( ((ulong)CAN_TXIPNDH << 16) + CAN_TXIPNDL) & 0x00000002))
939 1 {
940 2
941 2 // message object 1 interrupt
942 2
943 2 if((CAN_HWOBJ[1].uwMSGCTR & 0x0003) == 0x0002) // if INTPND
944 2 {
945 3 if(CAN_TXIPNDL & CAN_TXIPNDL_TXIPND1) // message object 1 transmit interrupt
946 3 {
947 4
948 4 // The transmission of the last message object
949 4 // was successful.
950 4
951 4 // USER CODE BEGIN (SRN2_OBJ1,4)
952 4 for(j=0;j<40000;j++)
953 4 {
954 5
955 5
956 5 P1L=0xfe;
957 5
958 5 }
959 4 for(k=0;k<40000;k++)
960 4 P1L=0xff;
961 4
962 4 // USER CODE END
963 4
964 4 CAN_HWOBJ[1].uwMSGCTR = 0xfdff; // reset NEWDAT
965 4
966 4 } // End of TXIPND1
967 3
968 3 CAN_HWOBJ[1].uwMSGCTR = 0xfffd; // reset INTPND
969 3
970 3 // USER CODE BEGIN (SRN2_OBJ1,6)
971 3
972 3
973 3 // USER CODE END
974 3
975 3 }
976 2
977 2
978 2 // USER CODE BEGIN (SRN2,3)
979 2
980 2 // USER CODE END
981 2
982 2
983 2 } // End of while()
984 1
985 1 // USER CODE BEGIN (SRN2,7)
C166 COMPILER V6.04, CAN 04/27/2008 18:41:45 PAGE 17
986 1
987 1 // USER CODE END
988 1
989 1 } // End of function CAN_viSRN2
990
991
992 //****************************************************************************
993 // @Function void CAN_viSRN3(void)
994 //
995 //----------------------------------------------------------------------------
996 // @Description This is the interrupt service routine for the Service
997 // Request Node 3 of the TwinCAN module.
998 //
999 //----------------------------------------------------------------------------
1000 // @Returnvalue None
1001 //
1002 //----------------------------------------------------------------------------
1003 // @Parameters None
1004 //
1005 //----------------------------------------------------------------------------
1006 // @Date 2006-12-9
1007 //
1008 //****************************************************************************
1009
1010 // USER CODE BEGIN (SRN3,1)
1011
1012 // USER CODE END
1013
1014 void CAN_viSRN3(void) interrupt CAN_SRN3INT
1015 {
1016 1
1017 1 // USER CODE BEGIN (SRN3,2)
1018 1 int s;
1019 1 // USER CODE END
1020 1
1021 1 while((( ((ulong)CAN_TXIPNDH << 16) + CAN_TXIPNDL) & 0x00000004))
1022 1 {
1023 2
1024 2 // message object 2 interrupt
1025 2
1026 2 if((CAN_HWOBJ[2].uwMSGCTR & 0x0003) == 0x0002) // if INTPND
1027 2 {
1028 3 if(CAN_TXIPNDL & CAN_TXIPNDL_TXIPND2) // message object 2 transmit interrupt
1029 3 {
1030 4
1031 4 // The transmission of the last message object
1032 4 // was successful.
1033 4
1034 4 // USER CODE BEGIN (SRN3_OBJ2,4)
1035 4 for(s=0;s<40000;s++)
1036 4 {
1037 5
1038 5
1039 5 P1L=0xfd;
1040 5
1041 5 }
1042 4 for(s=0;s<40000;s++)
1043 4 P1L=0xff;
1044 4 // USER CODE END
1045 4
1046 4 CAN_HWOBJ[2].uwMSGCTR = 0xfdff; // reset NEWDAT
1047 4
C166 COMPILER V6.04, CAN 04/27/2008 18:41:45 PAGE 18
1048 4 } // End of TXIPND2
1049 3
1050 3 CAN_HWOBJ[2].uwMSGCTR = 0xfffd; // reset INTPND
1051 3
1052 3 // USER CODE BEGIN (SRN3_OBJ2,6)
1053 3
1054 3 // USER CODE END
1055 3
1056 3 }
1057 2
1058 2
1059 2 // USER CODE BEGIN (SRN3,3)
1060 2
1061 2 // USER CODE END
1062 2
1063 2
1064 2 } // End of while()
1065 1
1066 1 // USER CODE BEGIN (SRN3,7)
1067 1
1068 1 // USER CODE END
1069 1
1070 1 } // End of function CAN_viSRN3
1071
1072
1073 //****************************************************************************
1074 // @Function void CAN_viSRN4(void)
1075 //
1076 //----------------------------------------------------------------------------
1077 // @Description This is the interrupt service routine for the Service
1078 // Request Node 4 of the TwinCAN module.
1079 //
1080 //----------------------------------------------------------------------------
1081 // @Returnvalue None
1082 //
1083 //----------------------------------------------------------------------------
1084 // @Parameters None
1085 //
1086 //----------------------------------------------------------------------------
1087 // @Date 2006-12-9
1088 //
1089 //****************************************************************************
1090
1091 // USER CODE BEGIN (SRN4,1)
1092
1093 // USER CODE END
1094
1095 void CAN_viSRN4(void) interrupt CAN_SRN4INT
1096 {
1097 1
1098 1 // USER CODE BEGIN (SRN4,2)
1099 1 int t;
1100 1 // USER CODE END
1101 1
1102 1 while((( ((ulong)CAN_RXIPNDH << 16) + CAN_RXIPNDL) & 0x00000008))
1103 1 {
1104 2
1105 2 // message object 3 interrupt
1106 2
1107 2 if((CAN_HWOBJ[3].uwMSGCTR & 0x0003) == 0x0002) // if INTPND
1108 2 {
1109 3 if(CAN_RXIPNDL & CAN_RXIPNDL_RXIPND3) // message object 3 receive interrupt
C166 COMPILER V6.04, CAN 04/27/2008 18:41:45 PAGE 19
1110 3 {
1111 4
1112 4 if((CAN_HWOBJ[3].uwMSGCTR & 0x0300) == 0x0200) // if NEWDAT is set
1113 4 {
1114 5
1115 5 if ((CAN_HWOBJ[3].uwMSGCTR & 0x0c00) == 0x0800) // if MSGLST is set
1116 5 {
1117 6 // Indicates that the CAN controller has stored a new
1118 6 // message into this object, while NEWDAT was still set,
1119 6 // ie. the previously stored message is lost.
1120 6
1121 6 CAN_HWOBJ[3].uwMSGCTR = 0xf7ff; // reset MSGLST
1122 6
1123 6 // USER CODE BEGIN (SRN4_OBJ3,1)
1124 6
1125 6 // USER CODE END
1126 6 }
1127 5 else
1128 5 {
1129 6 // The CAN controller has stored a new message
1130 6 // into this object.
1131 6
1132 6 // USER CODE BEGIN (SRN4_OBJ3,2)
1133 6 for(t=0;t<40000;t++)
1134 6 {
1135 7
1136 7
1137 7 P1L=0xbf;
1138 7
1139 7 }
1140 6
1141 6 P1L=0xff;
1142 6 // USER CODE END
1143 6 }
1144 5
1145 5 CAN_HWOBJ[3].uwMSGCTR = 0xfdff; // reset NEWDAT
1146 5 }
1147 4
1148 4 } // End of RXIPND3
1149 3
1150 3
1151 3 CAN_HWOBJ[3].uwMSGCTR = 0xfffd; // reset INTPND
1152 3
1153 3 // USER CODE BEGIN (SRN4_OBJ3,6)
1154 3
1155 3 // USER CODE END
1156 3
1157 3 }
1158 2
1159 2
1160 2 // USER CODE BEGIN (SRN4,3)
1161 2
1162 2 // USER CODE END
1163 2
1164 2
1165 2 } // End of while()
1166 1
1167 1 // USER CODE BEGIN (SRN4,7)
1168 1
1169 1 // USER CODE END
1170 1
1171 1 } // End of function CAN_viSRN4
C166 COMPILER V6.04, CAN 04/27/2008 18:41:45 PAGE 20
1172
1173
1174
1175 // USER CODE BEGIN (CAN_General,10)
1176
1177 // USER CODE END
1178
MODULE INFORMATION: INITIALIZED UNINITIALIZED
CODE SIZE = 2070 --------
NEAR-CONST SIZE = -------- --------
FAR-CONST SIZE = -------- --------
HUGE-CONST SIZE = -------- --------
XHUGE-CONST SIZE = -------- --------
NEAR-DATA SIZE = -------- --------
FAR-DATA SIZE = -------- --------
XHUGE-DATA SIZE = -------- --------
IDATA-DATA SIZE = -------- --------
SDATA-DATA SIZE = -------- --------
BDATA-DATA SIZE = -------- --------
HUGE-DATA SIZE = -------- --------
BIT SIZE = -------- --------
INIT'L SIZE = -------- --------
END OF MODULE INFORMATION.
C166 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?