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 + -
显示快捷键?