sja_pelican.lst

来自「参考周立功的basic模式的CAN通讯」· LST 代码 · 共 572 行 · 第 1/3 页

LST
572
字号
 173              0x43,0x2f,                     //;(晶振16MHZ) 100KBPS的预设值
C51 COMPILER V7.06   SJA_PELICAN                                                           05/16/2006 10:19:37 PAGE 4   

 174              0x03,0x1c,                     //;(晶振16MHZ) 125KBPS的预设值
 175              0x81,0xfa,                     //;(晶振16MHZ) 200KBPS的预设值
 176              0x01,0x1c,                     //;(晶振16MHZ) 250KBPS的预设值
 177              0x80,0xfa,                     //;(晶振16MHZ) 400KBPS的预设值
 178              0x00,0x1c,                     //;(晶振16MHZ) 500KBPS的预设值
 179              0x80,0xb6,                     //;(晶振16MHZ) 666KBPS的预设值
 180              0x00,0x16,                     //;(晶振16MHZ) 800KBPS的预设值
 181              0x00,0x14                      //;(晶振16MHZ) 1000KBPS的预设值 
 182          };
 183          
 184          bit   PCan_Set_BandRate(unsigned char CAN_ByteRate)
 185          {
 186   1        //载入标准波特率的的预设值
 187   1        unsigned  char  BTR0_num, BTR1_num;
 188   1        BTR0_num = SJA_BTR_CODETAB[CAN_ByteRate*2];
 189   1        BTR1_num = SJA_BTR_CODETAB[CAN_ByteRate*2 + 1];
 190   1        
 191   1        Sja_PeliCan  = REG_BTR0;         //访问地址指向总线定时寄存器0
*** ERROR C202 IN LINE 191 OF SJA_PELICAN.C: 'REG_BTR0': undefined identifier
 192   1        *Sja_PeliCan = BTR0_num;              //写入参数
 193   1        if ( *Sja_PeliCan != BTR0_num )       //校验写入值
 194   1        {
 195   2          return  1; 
 196   2        }
 197   1      
 198   1        Sja_PeliCan  = REG_BTR1;         //访问地址指向总线定时寄存器0
*** ERROR C202 IN LINE 198 OF SJA_PELICAN.C: 'REG_BTR1': undefined identifier
 199   1        *Sja_PeliCan = BTR1_num;              //写入参数
 200   1        if ( *Sja_PeliCan != BTR1_num )       //校验写入值
 201   1        {
 202   2          return  1; 
 203   2        }
 204   1      
 205   1        return    0;
 206   1      }  
 207          
 208          /************************************************************************
 209          ;*函数原型:   bit    PCan_Set_Object(unsigned char  PCan_ACR0,          *
 210                                               unsigned char  PCan_ACR1,          *
 211                                               unsigned char  PCan_ACR2,          *
 212                                               unsigned char  PCan_ACR3,          *
 213                                               unsigned char  PCan_AMR0,          *
 214                                                                                   unsigned char  PCan_AMR1,          *
 215                                                                                   unsigned char  PCan_AMR2,          *
 216                                                                                   unsigned char  PCan_AMR3)          *
 217          *参数说明:                                                              *
 218           *    PCan_ACR:存放验收代码寄存器(ACR)的参数设置                      *
 219           *    PCan_AMR:存放接收屏蔽寄存器(AMR)的参数设置                      *
 220          ;*返回值:                                                               *
 221          ;*           0 ;通信对象设置成功                                        *
 222          ;*           1 ;通信对象设置失败                                        *
 223          ;*                                                                      * 
 224          ;*说明:设置CAN节点的通讯对象                                            *
 225          ;*    该子程序只能用于复位模式                                          * 
 226          ;************************************************************************/
 227          bit PCan_Set_Object(unsigned char  PCan_ACR0, 
 228                                                  unsigned char  PCan_ACR1, 
 229                                                  unsigned char  PCan_ACR2, 
 230                                                  unsigned char  PCan_ACR3, 
 231                                                  unsigned char  PCan_AMR0,
 232                                                  unsigned char  PCan_AMR1,
 233                                                  unsigned char  PCan_AMR2,
C51 COMPILER V7.06   SJA_PELICAN                                                           05/16/2006 10:19:37 PAGE 5   

 234                                                  unsigned char  PCan_AMR3)
 235          {
 236   1        Sja_PeliCan  = REG_AcceptCode0;   //访问地址指向验收代码寄存器(ACR1)
*** ERROR C202 IN LINE 236 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 237   1        *Sja_PeliCan = PCan_ACR0;             //写入参数
 238   1        if ( *Sja_PeliCan != PCan_ACR0 )      //校验写入值
 239   1        {
 240   2          return  1; 
 241   2        }
 242   1      
 243   1        Sja_PeliCan  = REG_AcceptCode1;       //访问地址指向验收代码寄存器(ACR2)
*** ERROR C202 IN LINE 243 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 244   1        *Sja_PeliCan = PCan_ACR1;             //写入参数
 245   1        if ( *Sja_PeliCan != PCan_ACR1 )      //校验写入值
 246   1        {
 247   2          return  1; 
 248   2        }
 249   1      
 250   1        Sja_PeliCan  = REG_AcceptCode2;       //访问地址指向验收代码寄存器(ACR3)
*** ERROR C202 IN LINE 250 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 251   1        *Sja_PeliCan = PCan_ACR2;             //写入参数
 252   1        if ( *Sja_PeliCan != PCan_ACR2 )      //校验写入值
 253   1        {
 254   2          return  1; 
 255   2        }
 256   1      
 257   1        Sja_PeliCan  = REG_AcceptCode3;       //访问地址指向验收代码寄存器(ACR4)
*** ERROR C202 IN LINE 257 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 258   1        *Sja_PeliCan = PCan_ACR3;             //写入参数
 259   1        if ( *Sja_PeliCan != PCan_ACR3 )      //校验写入值
 260   1        {
 261   2          return  1; 
 262   2        }
 263   1      
 264   1        Sja_PeliCan  = REG_AcceptMask0;       //访问地址指向验收屏蔽寄存器(AMR)
*** ERROR C202 IN LINE 264 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 265   1        *Sja_PeliCan = PCan_AMR0;             //写入参数
 266   1        if ( *Sja_PeliCan != PCan_AMR0 )      //校验写入值
 267   1        {
 268   2          return  1; 
 269   2        }
 270   1      
 271   1        Sja_PeliCan  = REG_AcceptMask1;       //访问地址指向验收屏蔽寄存器(AMR)
*** ERROR C202 IN LINE 271 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 272   1        *Sja_PeliCan = PCan_AMR1;             //写入参数
 273   1        if ( *Sja_PeliCan != PCan_AMR1 )      //校验写入值
 274   1        {
 275   2          return  1; 
 276   2        }
 277   1      
 278   1        Sja_PeliCan  = REG_AcceptMask2;       //访问地址指向验收屏蔽寄存器(AMR)
*** ERROR C202 IN LINE 278 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 279   1        *Sja_PeliCan = PCan_AMR2;             //写入参数
 280   1        if ( *Sja_PeliCan != PCan_AMR2 )      //校验写入值
 281   1        {
 282   2          return  1; 
 283   2        }
 284   1      
 285   1        Sja_PeliCan  = REG_AcceptMask3;       //访问地址指向验收屏蔽寄存器(AMR)
*** ERROR C202 IN LINE 285 OF SJA_PELICAN.C: 'XBYTE': undefined identifier
 286   1        *Sja_PeliCan = PCan_AMR3;             //写入参数
 287   1        if ( *Sja_PeliCan != PCan_AMR3 )      //校验写入值
C51 COMPILER V7.06   SJA_PELICAN                                                           05/16/2006 10:19:37 PAGE 6   

 288   1        {
 289   2          return  1; 
 290   2        }
 291   1      
 292   1        return    0;
 293   1      }
 294          
 295          /************************************************************************
 296          ;*函数原型: bit  PCan_Set_Outclk (unsigned char  PCan_OCR,                  *
 297                                            unsigned char  PCan_CDR);             *
 298          ;*参数说明:                                                                                                                     *
 299           *     PCan_OCR: 存放输出控制寄存器 (OC)  的参数设置                    *
 300           *     PCan_CDR: 存放时钟分频寄存器 (CDR) 的参数设置                    *
 301           *                                                                      *
 302          ;*返回值:                                                               *
 303          ;*           0 ;设置成功                                                *
 304          ;*           1 ;设置失败                                                *
 305          ;*                                                                      *
 306          ;*说明:设置SJA1000的输出模式和时钟分频 。该子程序只能用于复位模式       *
 307          ;************************************************************************/
 308          bit  PCan_Set_OCR (unsigned char PCan_OCR)
 309          {
 310   1        Sja_PeliCan  = REG_OCR;                   //访问地址指向输出控制寄存器
*** ERROR C202 IN LINE 310 OF SJA_PELICAN.C: 'REG_OCR': undefined identifier
 311   1        *Sja_PeliCan = PCan_OCR;                      //写入参数
 312   1        if ( *Sja_PeliCan != PCan_OCR )           //校验写入值
 313   1        {
 314   2          return  1; 
 315   2        }
 316   1        return    0;
 317   1      }
 318                    
 319          /************************************************************************
 320           *函数原型:  bit   PCan_Data_Send(unsigned char *SendDataBuf)           *
 321           *参数说明:  特定帧各式的数据                                           *
 322           *返回值:                                                               *
 323           *           0    ; 表示将数据成功的送至发送缓冲区                      *
 324           *           1    ; 表示上一次的数据正在发送,                          *
 325           *                ; 表示发送缓冲区被锁定,不能写入数据                  *
 326           *                ; 表示写入数据错误                                    * 
 327           *说明: 将待发送特定帧各式的数据,送入SJA1000发送缓存区中,然后启动     *
 328           *        SJA1000发送。                                                 *
 329           *   特定帧格式为:开始的两个字节存放 '描述符' ,以后的为数据             *
 330           *   描述符包括11位长的ID(标志符)\1位RTR\4位描述数据长度的DLC共16位    *
 331           *                                                                      *
 332           *注:本函数的返回值仅指示,将数据正确写入SJA1000发送缓存区中与否。     *
 333           *    不指示SJA1000将该数据正确发送到CAN总线上完毕与否                  *
 334           ************************************************************************/ 
 335           bit   PCan_Data_Send(unsigned char *SendDataBuf)
 336           {
 337   1         unsigned  char  TempCount;
 338   1         Sja_PeliCan = REG_STATUS;                //访问地址指向状态寄存器
*** ERROR C202 IN LINE 338 OF SJA_PELICAN.C: 'REG_STATUS': undefined identifier
 339   1         if ( (*Sja_PeliCan&0x08) == 0 )          //判断上次发送是否完成
 340   1         {
 341   2           return     1;
 342   2         }  
 343   1      
 344   1         if( (*Sja_PeliCan&0x04) == 0 )           //判断发送缓冲区是否锁定
 345   1         {

⌨️ 快捷键说明

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