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

📄 can_c.lst

📁 单片机和GPS接收机构成的车载卫星定位系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
 213           *    Out_Control:存放输出控制寄存器 (OC)  的参数设置                   *
 214           *    Clock_Out:存放时钟分频寄存器 (CDR) 的参数设置                     *
C51 COMPILER V8.05a   CAN_C                                                                06/20/2008 07:43:20 PAGE 5   

 215           *                                                                      *
 216          ;*返回值:                                                               *
 217          ;*           0 ;设置成功                                                *
 218          ;*           1 ;设置失败                                                *
 219          ;*                                                                      *
 220          ;*说明:设置SJA1000的输出模式和时钟分频 。该子程序只能用于复位模式       *                                 
             -                                                                                    *
 221          ;************************************************************************/
 222          bit  BCAN_SET_OUTCLK (unsigned char Out_Control,
 223                               unsigned char  Clock_Out)
 224          {
 225   1        SJA_BCANAdr=REG_OCR ;                         //访问地址指向输出控制寄存器
*** ERROR C202 IN LINE 225 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 226   1        *SJA_BCANAdr=Out_Control;                     //写入参数
*** ERROR C202 IN LINE 226 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 227   1        if(*SJA_BCANAdr != Out_Control)               //校验写入值
*** ERROR C202 IN LINE 227 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 228   1        {
 229   2          return  1;
 230   2        }
 231   1        SJA_BCANAdr=REG_CDR;                          //访问地址指向输出控制寄存器
*** ERROR C202 IN LINE 231 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 232   1        *SJA_BCANAdr=Clock_Out;                       //写入参数
*** ERROR C202 IN LINE 232 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 233   1        return    0;
 234   1      }
 235          /************************************************************************
 236           *函数原型:  bit   BCAN_DATA_WRITE(unsigned char *SendDataBuf)*
 237           *参数说明:  特定帧各式的数据?                                         *
 238           *返回值:                                                               *
 239           *           0    ; 表示将数据成功的送至发送缓冲区                      *
 240           *           1    ; 表示上一次的数据正在发送,                          *
 241           *                ; 表示发送缓冲区被锁定,不能写入数据                  *
 242           *                ; 表示写入数据错误                                    *
 243           *说明: 将待发送特定帧各式的数据,送入SJA1000发送缓存区中,然后启动     *
 244           *        SJA1000发送。                                                 *
 245           *   特定帧格式为:开始的两个字节存放 '描述符' ,以后的为数据             *
 246           *   描述符包括11位长的ID(标志符)\1位RTR\4位描述数据长度的DLC共16位    *
 247           *                                                                      *
 248           *注:本函数的返回值仅指示,将数据正确写入SJA1000发送缓存区中与否。     *
 249           *    不指示SJA1000将该数据正确发送到CAN总线上完毕与否                  *
 250           ************************************************************************/
 251           bit   BCAN_DATA_WRITE(unsigned char data *SendDataBuf)
 252           {
 253   1         unsigned  char  TempCount;
 254   1         SJA_BCANAdr = REG_STATUS;            //访问地址指向状态寄存器
*** ERROR C202 IN LINE 254 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 255   1         if((*SJA_BCANAdr&0x08) == 0)         //判断上次发送是否完成
*** ERROR C202 IN LINE 255 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 256   1         {
 257   2          return      1;
 258   2         }
 259   1      
 260   1         if((*SJA_BCANAdr&0x04)==0)          //判断发送缓冲区是否锁定
*** ERROR C202 IN LINE 260 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 261   1         {
 262   2           return     1;
 263   2         }
 264   1      
 265   1         SJA_BCANAdr = REG_TxBuffer1;        //访问地址指向发送缓冲区1
*** ERROR C202 IN LINE 265 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 266   1         if((SendDataBuf[1]&0x10)==0)        //判断RTR,从而得出是数据帧还是远程帧
C51 COMPILER V8.05a   CAN_C                                                                06/20/2008 07:43:20 PAGE 6   

 267   1         {
 268   2           TempCount =(SendDataBuf[1]&0x0f)+2; //输入数据帧
 269   2         }
 270   1      
 271   1         else
 272   1         {
 273   2           TempCount =2;                     //远程帧
 274   2         }
 275   1      
 276   1        memcpy(SJA_BCANAdr,SendDataBuf,TempCount);
*** ERROR C202 IN LINE 276 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 277   1         return 0;
 278   1      }
 279          
 280          /************************************************************************
 281           *函数原型:  bit    BCAN_DATA_RECEIVE(unsigned char *RcvDataBuf);       *
 282           *参数说明:  RcvDataBuf,存放微处理器保存数据缓冲区                      *
 283           *返回值:    0;接收成功                                                 *
 284           *           1;接收失败                                                 *
 285           *说明:CAN控制器接收数据,仅限于接收数据                                 *
 286           ************************************************************************/
 287          bit BCAN_DATA_RECEIVE(unsigned char data *RvcDataBuf)
 288           {
 289   1         unsigned  char  TempCount;
 290   1         SJA_BCANAdr = REG_STATUS;                //访问地址指向状态寄存器
*** ERROR C202 IN LINE 290 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 291   1         if((*SJA_BCANAdr&0x01)==0)               //判断报文是否有效
*** ERROR C202 IN LINE 291 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 292   1         {
 293   2           return 1;
 294   2         }
 295   1      
 296   1         SJA_BCANAdr = REG_RxBuffer2;             //访问地址指向接收缓冲区2
*** ERROR C202 IN LINE 296 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 297   1         if((*SJA_BCANAdr&0x10)==0)               //如果是数据帧
*** ERROR C202 IN LINE 297 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 298   1         {
 299   2           TempCount=(*SJA_BCANAdr&0x0f)+2;       //计算报文中数据的个数
*** ERROR C202 IN LINE 299 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 300   2         }
 301   1      
 302   1         else
 303   1         {
 304   2          TempCount=2;
 305   2         }
 306   1         SJA_BCANAdr = REG_RxBuffer1;             //访问地址指向接收缓冲区1
*** ERROR C202 IN LINE 306 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 307   1         SystemBuf[0]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 307 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 308   1         SJA_BCANAdr = REG_RxBuffer2;
*** ERROR C202 IN LINE 308 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 309   1         SystemBuf[1]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 309 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 310   1         SJA_BCANAdr = REG_RxBuffer3;
*** ERROR C202 IN LINE 310 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 311   1         SystemBuf[2]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 311 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 312   1         SJA_BCANAdr = REG_RxBuffer4;
*** ERROR C202 IN LINE 312 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 313   1         SystemBuf[3]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 313 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 314   1         SJA_BCANAdr = REG_RxBuffer5;
C51 COMPILER V8.05a   CAN_C                                                                06/20/2008 07:43:20 PAGE 7   

*** ERROR C202 IN LINE 314 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 315   1         SystemBuf[4]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 315 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 316   1         SJA_BCANAdr = REG_RxBuffer6;
*** ERROR C202 IN LINE 316 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 317   1         SystemBuf[5]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 317 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 318   1         SJA_BCANAdr = REG_RxBuffer7;
*** ERROR C202 IN LINE 318 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 319   1         SystemBuf[6]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 319 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 320   1         SJA_BCANAdr = REG_RxBuffer8;
*** ERROR C202 IN LINE 320 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 321   1         SystemBuf[7]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 321 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 322   1         SJA_BCANAdr = REG_RxBuffer9;
*** ERROR C202 IN LINE 322 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 323   1         SystemBuf[8]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 323 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 324   1         SJA_BCANAdr = REG_RxBuffer10;
*** ERROR C202 IN LINE 324 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 325   1         SystemBuf[9]=*SJA_BCANAdr;
*** ERROR C202 IN LINE 325 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 326   1         //memcpy(RvcDataBuf,SJA_BCANAdr,TempCount);//读取接收缓冲区的报文???????????????????
 327   1         return  0;
 328   1       }
 329          /************************************************************************
 330           *函数原型:  bit  BCAN_CMD_PRG(unsigned char cmd)             *
 331           *参数说明:  cmd:sja1000运行的命令字                                    *
 332           *             01:发送请求                                              *
 333           *             02:中止发送                                             *
 334           *             04:释放接收缓冲区                                       *
 335           *             08:清除超载状态                                         *
 336           *             0x10:进入睡眠状态                                        *
 337           *                                                                      *
 338           *返回值:                                                               *
 339           *           0 ; 表示命令执行成功                                       *
 340           *           1 ; 表示命令执行失败                                       *
 341           *                                                                      *
 342           *说明:      执行sja1000命令                                            *
 343           ************************************************************************/
 344           bit  BCAN_CMD_PRG(unsigned char cmd)
 345           {
 346   1         SJA_BCANAdr=REG_COMMAND;            //访问地址指向命令寄存器
*** ERROR C202 IN LINE 346 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 347   1         *SJA_BCANAdr=cmd;                   //启动命令字
*** ERROR C202 IN LINE 347 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 348   1         switch(cmd)
 349   1         {
 350   2           case  TR_CMD:                     //发送请求命令
*** ERROR C202 IN LINE 350 OF CAN_C.C: 'TR_CMD': undefined identifier
 351   2                 return    0;
 352   2                 break;
 353   2           case  AT_CMD:                     //中止发送命令
*** ERROR C202 IN LINE 353 OF CAN_C.C: 'AT_CMD': undefined identifier
 354   2                 SJA_BCANAdr = REG_STATUS;   //访问地址指向状态寄存器
*** ERROR C202 IN LINE 354 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 355   2                 if((*SJA_BCANAdr & 0x20)==0)//判断是否正在发送
*** ERROR C202 IN LINE 355 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 356   2                 {
 357   3                    return  0;
 358   3                 }
C51 COMPILER V8.05a   CAN_C                                                                06/20/2008 07:43:20 PAGE 8   

 359   2                 else
 360   2                 {
 361   3                    return  1;
 362   3                 }
 363   2                 break;
 364   2           case  RRB_CMD:                    //释放接收缓冲区
*** ERROR C202 IN LINE 364 OF CAN_C.C: 'RRB_CMD': undefined identifier
 365   2                 SJA_BCANAdr = REG_STATUS;   //访问地址指向状态寄存器
*** ERROR C202 IN LINE 365 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 366   2                 if((*SJA_BCANAdr & 0x01)==1)//判断是否释放成功
*** ERROR C202 IN LINE 366 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 367   2                 {
 368   3                   return  1;
 369   3                 }
 370   2                 else
 371   2                 {
 372   3                    return  0;
 373   3                 }
 374   2                 break;
 375   2      
 376   2           case  COS_CMD:                    //清除超载状态
*** ERROR C202 IN LINE 376 OF CAN_C.C: 'COS_CMD': undefined identifier
 377   2                 SJA_BCANAdr = REG_STATUS;   //访问地址指向状态寄存器
*** ERROR C202 IN LINE 377 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 378   2                 if((*SJA_BCANAdr & 0x02)==0)//判断清除超载是否成功
*** ERROR C202 IN LINE 378 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 379   2                 {
 380   3                   return  0;
 381   3                 }
 382   2                 else
 383   2                 {
 384   3                    return  1;
 385   3                 }
 386   2                 break;
 387   2      
 388   2           case  GTS_CMD:                    //进入睡眠状态命令
*** ERROR C202 IN LINE 388 OF CAN_C.C: 'GTS_CMD': undefined identifier
 389   2                 return    0;
 390   2                 break;
 391   2           default:
 392   2                   return  1;
 393   2                   break;
 394   2         }
 395   1      
 396   1       }
 397          void InitialCAN()
 398          {
 399   1           SJA_reset=0;
 400   1           delay(100);
 401   1           SJA_reset=1;
 402   1           SJA_BCANAdr=REG_CONTROL;                      //设置控制寄存器
*** ERROR C202 IN LINE 402 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 403   1           *SJA_BCANAdr=0x02;                            //接收中断使能
*** ERROR C202 IN LINE 403 OF CAN_C.C: 'SJA_BCANAdr': undefined identifier
 404   1           do{;}while(BCAN_ENTER_RETMODEL());            //进入复位模式
 405   1           do{;}while(BCAN_CREATE_COMMUNATION());        //建立连接
 406   1           do{;}while(BCAN_SET_BANDRATE());              //设置BTR0,BTR1,配置波特率
 407   1           do{;}while(BCAN_SET_OBJECT(0x01,0x00));       //设置验收代码寄存器ACR,验收屏蔽寄存器AMR,

⌨️ 快捷键说明

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