⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can.lst

📁 本程序是针对Infineon公司的XC167CI处理器而编写的CAN网络程序。CAN(控制局域网)协议是一种广泛的应用于汽车电子的网络协议。本程序建立了三个CAN节点
💻 LST
📖 第 1 页 / 共 4 页
字号:
  878  3            CAN_HWOBJ[0].uwMSGCTR = 0xfffd;        // reset INTPND
  879  3      
  880  3            // USER CODE BEGIN (SRN1_OBJ0,6)
  881  3      
  882  3            // USER CODE END
  883  3      
  884  3          }
  885  2      
  886  2      
  887  2          // USER CODE BEGIN (SRN1,3)
  888  2      
  889  2          // USER CODE END
  890  2      
  891  2      
  892  2        }  // End of while()
  893  1      
  894  1        // USER CODE BEGIN (SRN1,7)
  895  1      
  896  1        // USER CODE END
  897  1      
  898  1      } //  End of function CAN_viSRN1
  899         
  900         
  901         //****************************************************************************
  902         // @Function      void CAN_viSRN2(void) 
  903         //
  904         //----------------------------------------------------------------------------
  905         // @Description   This is the interrupt service routine for the Service 
  906         //                Request Node 2 of the TwinCAN module.
  907         //
  908         //----------------------------------------------------------------------------
  909         // @Returnvalue   None
  910         //
  911         //----------------------------------------------------------------------------
  912         // @Parameters    None
  913         //
  914         //----------------------------------------------------------------------------
  915         // @Date          2006-12-10
  916         //
  917         //****************************************************************************
  918         
  919         // USER CODE BEGIN (SRN2,1)
  920         
  921         // USER CODE END
  922         
C166 COMPILER V6.04, CAN                                                                   12/10/2006 17:56:47 PAGE 16  

  923         void CAN_viSRN2(void) interrupt CAN_SRN2INT
  924         {
  925  1      
  926  1        // USER CODE BEGIN (SRN2,2)
  927  1      
  928  1        // USER CODE END
  929  1      
  930  1        while((( ((ulong)CAN_TXIPNDH << 16) + CAN_TXIPNDL) & 0x00000002))
  931  1        {
  932  2      
  933  2          // message object 1 interrupt
  934  2      
  935  2          if((CAN_HWOBJ[1].uwMSGCTR & 0x0003) == 0x0002)         // if INTPND 
  936  2          {
  937  3            if(CAN_TXIPNDL & CAN_TXIPNDL_TXIPND1)   // message object 1 transmit interrupt
  938  3            {
  939  4      
  940  4              // The transmission of the last message object
  941  4              // was successful.
  942  4      
  943  4              // USER CODE BEGIN (SRN2_OBJ1,4)
  944  4                      P1L=0x7f;
  945  4                      delayms(1);
  946  4                      P1L=0xff;
  947  4              // USER CODE END
  948  4      
  949  4              CAN_HWOBJ[1].uwMSGCTR = 0xfdff;      // reset NEWDAT
  950  4      
  951  4            }  // End of TXIPND1
  952  3      
  953  3            CAN_HWOBJ[1].uwMSGCTR = 0xfffd;        // reset INTPND
  954  3      
  955  3            // USER CODE BEGIN (SRN2_OBJ1,6)
  956  3      
  957  3            // USER CODE END
  958  3      
  959  3          }
  960  2      
  961  2      
  962  2          // USER CODE BEGIN (SRN2,3)
  963  2      
  964  2          // USER CODE END
  965  2      
  966  2      
  967  2        }  // End of while()
  968  1      
  969  1        // USER CODE BEGIN (SRN2,7)
  970  1      
  971  1        // USER CODE END
  972  1      
  973  1      } //  End of function CAN_viSRN2
  974         
  975         
  976         //****************************************************************************
  977         // @Function      void CAN_viSRN3(void) 
  978         //
  979         //----------------------------------------------------------------------------
  980         // @Description   This is the interrupt service routine for the Service 
  981         //                Request Node 3 of the TwinCAN module.
  982         //
  983         //----------------------------------------------------------------------------
  984         // @Returnvalue   None
C166 COMPILER V6.04, CAN                                                                   12/10/2006 17:56:47 PAGE 17  

  985         //
  986         //----------------------------------------------------------------------------
  987         // @Parameters    None
  988         //
  989         //----------------------------------------------------------------------------
  990         // @Date          2006-12-10
  991         //
  992         //****************************************************************************
  993         
  994         // USER CODE BEGIN (SRN3,1)
  995         
  996         // USER CODE END
  997         
  998         void CAN_viSRN3(void) interrupt CAN_SRN3INT
  999         {
 1000  1      
 1001  1        // USER CODE BEGIN (SRN3,2)
 1002  1      
 1003  1        // USER CODE END
 1004  1      
 1005  1        while((( ((ulong)CAN_TXIPNDH << 16) + CAN_TXIPNDL) & 0x00000004))
 1006  1        {
 1007  2      
 1008  2          // message object 2 interrupt
 1009  2      
 1010  2          if((CAN_HWOBJ[2].uwMSGCTR & 0x0003) == 0x0002)         // if INTPND 
 1011  2          {
 1012  3            if(CAN_TXIPNDL & CAN_TXIPNDL_TXIPND2)   // message object 2 transmit interrupt
 1013  3            {
 1014  4      
 1015  4              // The transmission of the last message object
 1016  4              // was successful.
 1017  4      
 1018  4              // USER CODE BEGIN (SRN3_OBJ2,4)
 1019  4                      P1L=0xbf;
 1020  4                      delayms(1);
 1021  4                      P1L=0xff;
 1022  4              // USER CODE END
 1023  4      
 1024  4              CAN_HWOBJ[2].uwMSGCTR = 0xfdff;      // reset NEWDAT
 1025  4      
 1026  4            }  // End of TXIPND2
 1027  3      
 1028  3            CAN_HWOBJ[2].uwMSGCTR = 0xfffd;        // reset INTPND
 1029  3      
 1030  3            // USER CODE BEGIN (SRN3_OBJ2,6)
 1031  3      
 1032  3            // USER CODE END
 1033  3      
 1034  3          }
 1035  2      
 1036  2      
 1037  2          // USER CODE BEGIN (SRN3,3)
 1038  2      
 1039  2          // USER CODE END
 1040  2      
 1041  2      
 1042  2        }  // End of while()
 1043  1      
 1044  1        // USER CODE BEGIN (SRN3,7)
 1045  1      
 1046  1        // USER CODE END
C166 COMPILER V6.04, CAN                                                                   12/10/2006 17:56:47 PAGE 18  

 1047  1      
 1048  1      } //  End of function CAN_viSRN3
 1049         
 1050         
 1051         //****************************************************************************
 1052         // @Function      void CAN_viSRN4(void) 
 1053         //
 1054         //----------------------------------------------------------------------------
 1055         // @Description   This is the interrupt service routine for the Service 
 1056         //                Request Node 4 of the TwinCAN module.
 1057         //
 1058         //----------------------------------------------------------------------------
 1059         // @Returnvalue   None
 1060         //
 1061         //----------------------------------------------------------------------------
 1062         // @Parameters    None
 1063         //
 1064         //----------------------------------------------------------------------------
 1065         // @Date          2006-12-10
 1066         //
 1067         //****************************************************************************
 1068         
 1069         // USER CODE BEGIN (SRN4,1)
 1070         
 1071         // USER CODE END
 1072         
 1073         void CAN_viSRN4(void) interrupt CAN_SRN4INT
 1074         {
 1075  1      
 1076  1        // USER CODE BEGIN (SRN4,2)
 1077  1      
 1078  1        // USER CODE END
 1079  1      
 1080  1        while((( ((ulong)CAN_RXIPNDH << 16) + CAN_RXIPNDL) & 0x00000008))
 1081  1        {
 1082  2      
 1083  2          // message object 3 interrupt
 1084  2      
 1085  2          if((CAN_HWOBJ[3].uwMSGCTR & 0x0003) == 0x0002)         // if INTPND 
 1086  2          {
 1087  3            if(CAN_RXIPNDL & CAN_RXIPNDL_RXIPND3)   // message object 3 receive interrupt
 1088  3            {
 1089  4      
 1090  4              if((CAN_HWOBJ[3].uwMSGCTR & 0x0300) == 0x0200)     // if NEWDAT is set
 1091  4              {
 1092  5      
 1093  5                if ((CAN_HWOBJ[3].uwMSGCTR & 0x0c00) == 0x0800)  // if MSGLST is set
 1094  5                {
 1095  6                  // Indicates that the CAN controller has stored a new 
 1096  6                  // message into this object, while NEWDAT was still set,
 1097  6                  // ie. the previously stored message is lost.
 1098  6      
 1099  6                  CAN_HWOBJ[3].uwMSGCTR = 0xf7ff;  // reset MSGLST
 1100  6      
 1101  6                  // USER CODE BEGIN (SRN4_OBJ3,1)
 1102  6                              
 1103  6                  // USER CODE END
 1104  6                }
 1105  5                else
 1106  5                {
 1107  6                  // The CAN controller has stored a new message
 1108  6                  // into this object.
C166 COMPILER V6.04, CAN                                                                   12/10/2006 17:56:47 PAGE 19  

 1109  6      
 1110  6                  // USER CODE BEGIN (SRN4_OBJ3,2)
 1111  6                               P1L=0xfd;
 1112  6                      delayms(1);
 1113  6                      P1L=0xff;
 1114  6                  // USER CODE END
 1115  6                }
 1116  5      
 1117  5                CAN_HWOBJ[3].uwMSGCTR = 0xfdff;    // reset NEWDAT
 1118  5              }
 1119  4      
 1120  4            }  // End of RXIPND3
 1121  3      
 1122  3      
 1123  3            CAN_HWOBJ[3].uwMSGCTR = 0xfffd;        // reset INTPND
 1124  3      
 1125  3            // USER CODE BEGIN (SRN4_OBJ3,6)
 1126  3      
 1127  3            // USER CODE END
 1128  3      
 1129  3          }
 1130  2      
 1131  2      
 1132  2          // USER CODE BEGIN (SRN4,3)
 1133  2      
 1134  2          // USER CODE END
 1135  2      
 1136  2      
 1137  2        }  // End of while()
 1138  1      
 1139  1        // USER CODE BEGIN (SRN4,7)
 1140  1      
 1141  1        // USER CODE END
 1142  1      
 1143  1      } //  End of function CAN_viSRN4
 1144         
 1145         
 1146         
 1147         // USER CODE BEGIN (CAN_General,10)
 1148         
 1149         // USER CODE END
 1150         


MODULE INFORMATION:   INITIALIZED  UNINITIALIZED
  CODE SIZE        =        2214     --------
  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.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -