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

📄 main.lst

📁 Can bus 测试程序!SJA1000芯片!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 166   1              if(BCAN_SET_BANDRATE(BandRateBuf))      //初始化系统默认值波特率100kbps,正确返回0
 167   1              {
 168   2                      status = CAN_INITBTR_ERR ;      //返回0XFB
 169   2              couter1=4;
 170   2              ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
 171   2              return(status);
 172   2              }
 173   1              if(BCAN_SET_OBJECT(0xaa,0x00))          //验收代码及接收屏蔽,ACR=0XAA,AMR=0X00,正确返回0
 174   1              {
 175   2              status =CAN_INITOBJECT_ERR;             //返回0XFC
 176   2      couter1=5;
 177   2              ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
 178   2              return(status);
 179   2              }
C51 COMPILER V7.01  MAIN                                                                   03/21/2003 10:24:32 PAGE 4   

 180   1        
 181   1              if(BCAN_SET_OUTCLK(0xaa,0x48))          //输出模式及分频,写入OCR=0xaa,CDR=0X48,正确返回0
 182   1              {
 183   2              status =CAN_INITOUTCTL_ERR;             //0XFA
 184   2      couter1=6;
 185   2              ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
 186   2              return(status);
 187   2              }
 188   1              if(BCAN_QUIT_RETMODEL())                        //结束复位状态,对00H寄存器0位写0
 189   1              {
 190   2              status = CAN_QUITRESET_ERR;             //0XFD
 191   2      couter1=7;
 192   2              ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
 193   2              return(status);
 194   2              }
 195   1              SJA_BCANAddress=REG_CONTROL;
 196   1              *SJA_BCANAddress=0X1E;                                  //对00H寄存器写0X1E----对溢出、错误、发送、接收中断使能。
 197   1          couter1=8;
 198   1              ISendStr(0x50,0x30,(uchar*)&couter1,1); //配置sja1000出现错误,改DISPBUF[].
 199   1          for(couter1=0;couter1<250;couter1++)
 200   1              for(couter2=0;couter2<250;couter2++);
 201   1              return  status;                                         //返回0,表示正常 
 202   1      }
 203          
 204          //
 205          void   CanRcv_Prg(void)
 206          {
 207   1              uchar   data    status ,couter1;
 208   1              if(BCAN_DATA_RECEIVE(buf))                      //接收数据
 209   1              {
 210   2                      status=0xe9;
 211   2              DispBuf[0]=9;
 212   2              ISendStr(0x50,0x30,DispBuf,4);
 213   2              }
 214   1              else                                //接收成功
 215   1              {  
 216   2              ISendStr(0x50,0x30,buf,4);
 217   2              if(BCAN_CMD_PRG(0x04));         //释放接收缓冲区
 218   2                      if((buf[1]&0x10)!=0)            //是否远程帧
 219   2              {
 220   3          switch(buf[1]&0x0f)
 221   3              {                                                                       //远程帧处理
 222   4                      case  0:                                                //请求发送命令字为0c1h的命令帧
 223   4                              buf[1]=(buf[1]&0xe0)|0x06;
 224   4                              buf[2]=0xc1;
 225   4                  BCAN_DATA_WRITE(buf);                               //将编辑的数据发送到can总线
 226   4                  BCAN_CMD_PRG(TR_CMD);
 227   4                              break;
 228   4                      case  1:
 229   4                          buf[1]=(buf[1]&0xe0)|0x06;
 230   4                              buf[2]=0xc2;
 231   4                  BCAN_DATA_WRITE(buf);                               //将编辑的数据发送到can总线
 232   4                  BCAN_CMD_PRG(TR_CMD);
 233   4                              break;
 234   4                      case  2:
 235   4                          buf[1]=(buf[1]&0xe0)|0x06;
 236   4                              buf[2]=0xc3;
 237   4                  BCAN_DATA_WRITE(buf);                               //将编辑的数据发送到can总线
 238   4                  BCAN_CMD_PRG(TR_CMD);
 239   4                              break;
 240   4              case  3:
 241   4                  buf[1]=(buf[1]&0xe0)|0x06;
C51 COMPILER V7.01  MAIN                                                                   03/21/2003 10:24:32 PAGE 5   

 242   4                              buf[2]=0xc4;
 243   4                  BCAN_DATA_WRITE(buf);                               //将编辑的数据发送到can总线
 244   4                  BCAN_CMD_PRG(TR_CMD);
 245   4                              break;  
 246   4                      case  4:
 247   4                          buf[1]=(buf[1]&0xe0)|0x06;
 248   4                              buf[2]=0xc5;
 249   4                  BCAN_DATA_WRITE(buf);                               //将编辑的数据发送到can总线
 250   4                  BCAN_CMD_PRG(TR_CMD);
 251   4                              break;
 252   4                      case  5:
 253   4                          buf[1]=(buf[1]&0xe0)|0x06;
 254   4                              buf[2]=0xc6;
 255   4                  BCAN_DATA_WRITE(buf);                               //将编辑的数据发送到can总线
 256   4                  BCAN_CMD_PRG(TR_CMD);
 257   4                              break;
 258   4                      case  6:
 259   4                      case  7:
 260   4                      case  8:
 261   4                      case  9:
 262   4                      default:
 263   4                          break;
 264   4                }
 265   3              }
 266   2              else  
 267   2          {
 268   3              buf[2]++;
 269   3              for(couter1=3;couter1<10;couter1++)
 270   3                      buf[couter1]=buf[2];
 271   3              BCAN_DATA_WRITE(buf);                                   //将编辑的数据发送到can总线
 272   3              BCAN_CMD_PRG(TR_CMD);
 273   3          }                                           //数据帧    
 274   2        }
 275   1      }
 276          //
 277          void   CanSend_Prg(void)                                        //can发送数据
 278          {
 279   1      }
 280          void   CanErr_Prg(void)                             //发现错误后处理
 281          {
 282   1              Config_SJA();                                                                   //
 283   1      }
 284          void   CanDtOver_Prg(void)                      //超载处理
 285          {
 286   1              BCAN_CMD_PRG(COS_CMD);
 287   1      }
 288          void   CanWui_Prg(void)                         //唤醒中断处理
 289          {
 290   1        
 291   1      }
 292          void   UartRcv_Prg(void)                                                //串口接收到数据处理
 293          {
 294   1          BCAN_DATA_WRITE(RcvBuf);                                //将编辑的数据发送到can总线
 295   1          BCAN_CMD_PRG(TR_CMD);
 296   1      }
 297          //自动发送
 298          void   AutoSendDataToCanBus(void)
 299          {
 300   1       /* uchar i;
 301   1       if((DispBuf[1]==0x05)&&(DispBuf[2]==0x0d))
 302   1       {
 303   1              
C51 COMPILER V7.01  MAIN                                                                   03/21/2003 10:24:32 PAGE 6   

 304   1              if(EditMsSendCount ==0){
 305   1                      EditMsSendCount = EditMsSendSave;
 306   1                      SendDataCount++;
 307   1                      SetSystemBuf[0]++;
 308   1                      SetSystemBuf[1]=0x08;
 309   1              for(i=2;i<10;i++)
 310   1                              SetSystemBuf[i]=SendDataCount;
 311   1              BCAN_DATA_WRITE(SetSystemBuf);                          //将编辑的数据发送到can总线
 312   1              BCAN_CMD_PRG(TR_CMD); 
 313   1                      DispBuf[3]=SendDataCount>>4;
 314   1                      DispBuf[4]=SendDataCount&0x0f;
 315   1              }
 316   1              else{
 317   1           EditMsSendCount--;
 318   1              }
 319   1       }*/
 320   1      }
 321          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1105    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28    ----
   IDATA SIZE       =     21    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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