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

📄 sja_bcanfunc.lst

📁 ds18b20在stc89c58rd+下使用C语言调试通过
💻 LST
📖 第 1 页 / 共 2 页
字号:
 150   1              if(CAN_ByteRate>14){
 151   2                      ErrorFlag =1;
 152   2              }
 153   1          else{
 154   2                      while(--ErrorCount){
 155   3                                      WriteSjaReg(REG_BTR0,SJA_BTR_CODETAB[CAN_ByteRate*2]);
 156   3                                      WriteSjaReg(REG_BTR1,SJA_BTR_CODETAB[CAN_ByteRate*2+1]);
 157   3                                      if(ReadSjaReg(REG_BTR0) != SJA_BTR_CODETAB[CAN_ByteRate*2])continue;
 158   3                                      if(ReadSjaReg(REG_BTR1) != SJA_BTR_CODETAB[CAN_ByteRate*2+1])continue;
 159   3                                      ErrorFlag=0;
 160   3                                      break;
 161   3                              
 162   3                      }//while结束
 163   2                      
 164   2              }
 165   1              return  ErrorFlag ;
 166   1      }
 167          
 168          
 169          /************************************************************************
 170          ;*函数原型:    BCAN_SET_OBJECT                                          *
 171          *参数说明:                                                              *
 172           *    BCAN_ACR:存放验收代码寄存器(ACR)的参数设置                      *
 173           *    BCAN_AMR:存放接收屏蔽寄存器(AMR)的参数设置                      *
 174          ;*返回值:                                                               *
 175          ;*           0 ;通信对象设置成功                                        *
C51 COMPILER V8.02   SJA_BCANFUNC                                                          07/24/2007 19:21:02 PAGE 4   

 176          ;*           1 ;通信对象设置失败                                        *
 177          ;*                                                                      * 
 178          ;*说明:设置CAN节点的通讯对象,允许接收的报文ID号的高8位(D10--D3) 。     *
 179          ;*     允许接收的报文,是由AMR和ACR共同决定的.                           *  
 180          ;*    满足以下条件的ID号的报文才可以被接收                              *
 181          ;*[(ID.10-ID.3)≡(AC.7-AC.0)]||(AM.7-AM.0)≡11111111              *
 182          ;*    该子程序只能用于复位模式                                          *                                 
             -                                                                                    *             
 183          ;************************************************************************/
 184          bit    BCAN_SET_OBJECT(unsigned char  BCAN_ACR,unsigned char  BCAN_AMR)
 185          {
 186   1         SJA_BCANAdr=REG_ACR;                         //访问地址指向验收代码寄存器(ACR)
 187   1        *SJA_BCANAdr=BCAN_ACR;                        //写入参数
 188   1        if(*SJA_BCANAdr != BCAN_ACR)                  //校验写入值
 189   1        {
 190   2          return  1; 
 191   2        }
 192   1        SJA_BCANAdr=REG_AMR;                          //访问地址指向验收屏蔽寄存器(AMR)
 193   1        *SJA_BCANAdr=BCAN_AMR;                        //写入参数
 194   1        if(*SJA_BCANAdr != BCAN_AMR)                  //校验写入值
 195   1        {
 196   2          return  1; 
 197   2        }
 198   1      
 199   1        return    0;
 200   1      }
 201          
 202          /************************************************************************
 203          ;*函数原型: bit  BCAN_SET_OUTCLK (unsigned char Out_Control,            *
 204                                            unsigned char  Clock_Out);            *
 205          ;*参数说明:                                                                                                                     *
 206           *    Out_Control:存放输出控制寄存器 (OC)  的参数设置                   *
 207           *    Clock_Out:存放时钟分频寄存器 (CDR) 的参数设置                     *
 208           *                                                                      *   
 209          ;*返回值:                                                               *
 210          ;*           0 ;设置成功                                                *
 211          ;*           1 ;设置失败                                                *
 212          ;*                                                                      * 
 213          ;*说明:设置SJA1000的输出模式和时钟分频 。该子程序只能用于复位模式       *                                 
             -                                                                                    *             
 214          ;************************************************************************/
 215          bit  BCAN_SET_OUTCLK (unsigned char Out_Control,    
 216                               unsigned char  Clock_Out)
 217          {
 218   1        SJA_BCANAdr=REG_OCR ;                         //访问地址指向输出控制寄存器
 219   1        *SJA_BCANAdr=Out_Control;                     //写入参数
 220   1        if(*SJA_BCANAdr != Out_Control)               //校验写入值
 221   1        {
 222   2          return  1; 
 223   2        } 
 224   1        SJA_BCANAdr=REG_CDR;                          //访问地址指向输出控制寄存器
 225   1        *SJA_BCANAdr=Clock_Out;                       //写入参数
 226   1        return    0;
 227   1      }
 228          
 229          
 230          /************************************************************************
 231           *函数原型: bit   BCAN_HW_INIT(unsigned char  BCAN_ACR,                 *
 232           *                             unsigned char  BCAN_AMR,                 *
 233           *                             unsigned char  Bus_Timing0,              *
 234           *                             unsigned char  Bus_Timing1,              *
 235           *                             unsigned char  Out_Control,              *
C51 COMPILER V8.02   SJA_BCANFUNC                                                          07/24/2007 19:21:02 PAGE 5   

 236           *                             unsigned char  Clock_Out                 *
 237           *                            )                                         *
 238           *参数说明:                                                             *
 239           *    BCAN_ACR:存放验收代码寄存器(ACR)的参数设置                      *
 240           *    BCAN_AMR:存放接收屏蔽寄存器(AMR)的参数设置                      *
 241           *    Bus_Timing0:存放总线定时0寄存器(BTR0)的参数设置                   *
 242           *    Bus_Timing1:存放总线定时1寄存器(BTR1)的参数设置                   *
 243           *    Out_Control:存放输出控制寄存器 (OC)  的参数设置                   *
 244           *    Clock_Out:存放时钟分频寄存器 (CDR) 的参数设置                     *
 245           *                                                                      *                        
 246           *返回值:                                                               *
 247           *           0 ; 表示初始化成功                                         *
 248           *           1 ; 表示初始化失败                                         *
 249           *                                                                      * 
 250           *说明:CAN控制器的初始化只能在复位模式下才能完成。初始化操作之前请先进入*
 251           *     到复位操作模式,并将要初始化的各参数的值按数据手册中的计算方法,正 *
 252           *     确的按实际需要计算好参数后,将参数写入对应的寄存器 。            *
 253           *注: 为了CAN控制器的正确运行,请务必仔细的阅读SJA1000的数据手册       *
 254           *                                                                      *
 255           *示例:设应用系统中晶体频率16MHZ,节点只接收ID(标志符)高八位为        *
 256           *      '10101010'的消息,系统波特率为50Kbit/s,关闭CLKOUT输出。         *
 257           *      则根据数据手册中的计算方法的各参数如下:                        *
 258           *      ACR==0AAH,AMR==00H,BTR0==0C9H,BTR1==0C9H,OC==0FFH,CDR=48H       *
 259           * 则调用本函数为:                                                     *
 260           *     BCAN_HW_INIT(0xaa,0x00,0xc9,0xc9,0xff,0x48)                      *                     
 261           ************************************************************************
 262           bit             BCAN_HW_INIT(unsigned char  BCAN_ACR,       
 263                                        unsigned char  BCAN_AMR,      
 264                                        unsigned char  Bus_Timing0,   
 265                                        unsigned char  Bus_Timing1,   
 266                                        unsigned char  Out_Control,    
 267                                        unsigned char  Clock_Out      
 268                                        ) 
 269          {
 270            SJA_BCANAdr=REG_ACR;          //访问地址指向验收代码寄存器(ACR)
 271            *SJA_BCANAdr=BCAN_ACR;        //写入参数
 272            if(*SJA_BCANAdr != BCAN_ACR)  //校验写入值
 273            {
 274              return  1; 
 275            }
 276            SJA_BCANAdr=REG_AMR;          //访问地址指向验收屏蔽寄存器(AMR)
 277            *SJA_BCANAdr=BCAN_AMR;        //写入参数
 278            if(*SJA_BCANAdr != BCAN_AMR)  //校验写入值
 279            {
 280              return  1; 
 281            }
 282            SJA_BCANAdr=REG_BTR0;          //访问地址指向总线定时寄存器0
 283            *SJA_BCANAdr=Bus_Timing0;      //写入参数
 284            if(*SJA_BCANAdr != Bus_Timing0)//校验写入值
 285            {
 286              return  1; 
 287            }
 288            SJA_BCANAdr=REG_BTR1;          //访问地址指向总线定时寄存器0
 289            *SJA_BCANAdr=Bus_Timing1;      //写入参数
 290            if(*SJA_BCANAdr != Bus_Timing1)//校验写入值
 291            {
 292              return  1; 
 293            }
 294            SJA_BCANAdr=REG_OCR ;          //访问地址指向输出控制寄存器
 295            *SJA_BCANAdr=Out_Control;      //写入参数
 296            if(*SJA_BCANAdr != Out_Control)//校验写入值
 297            {
C51 COMPILER V8.02   SJA_BCANFUNC                                                          07/24/2007 19:21:02 PAGE 6   

 298              return  1; 
 299            } 
 300            SJA_BCANAdr=REG_CDR;          //访问地址指向输出控制寄存器
 301            *SJA_BCANAdr=Clock_Out;        //写入参数
 302            return    0;
 303          }                         
 304          
 305          /************************************************************************
 306           *函数原型:  bit   BCAN_DATA_WRITE(unsigned char *SendDataBuf)*
 307           *参数说明:  特定帧各式的数据

⌨️ 快捷键说明

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