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

📄 sja_bcanfunc.lst

📁 Can bus 测试程序!SJA1000芯片!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 149   1        if(*SJA_BCANAdr != BTR0_num)                  //校验写入值
 150   1        {
 151   2          return  1; 
 152   2        }
 153   1        SJA_BCANAdr=REG_BTR1;                         //访问地址指向总线定时寄存器0
 154   1        *SJA_BCANAdr=BTR1_num;                        //写入参数
 155   1        if(*SJA_BCANAdr != BTR1_num)                  //校验写入值
 156   1        {
 157   2          return  1; 
 158   2        }
 159   1      
 160   1        return    0;            //正确
 161   1      }  
 162          
 163          
 164          /************************************************************************
 165          ;*函数原型:    BCAN_SET_OBJECT                                          *
 166          *参数说明:                                                              *
 167           *    BCAN_ACR:存放验收代码寄存器(ACR)的参数设置                      *
 168           *    BCAN_AMR:存放接收屏蔽寄存器(AMR)的参数设置                      *
 169          ;*返回值:                                                               *
 170          ;*           0 ;通信对象设置成功                                        *
 171          ;*           1 ;通信对象设置失败                                        *
 172          ;*                                                                      * 
 173          ;*说明:设置CAN节点的通讯对象,允许接收的报文ID号的高8位(D10--D3) 。     *
 174          ;*     允许接收的报文,是由AMR和ACR共同决定的.                           *  
 175          ;*    满足以下条件的ID号的报文才可以被接收                              *
 176          ;*[(ID.10-ID.3)≡(AC.7-AC.0)]||(AM.7-AM.0)≡11111111              *
 177          ;*    该子程序只能用于复位模式                                          *                                 
C51 COMPILER V7.01  SJA_BCANFUNC                                                           01/04/2003 10:03:09 PAGE 4   

             -                                                                                    *             
 178          ;************************************************************************/
 179          bit    BCAN_SET_OBJECT(unsigned char  BCAN_ACR,unsigned char  BCAN_AMR)
 180          {
 181   1         SJA_BCANAdr=REG_ACR;                         //访问地址指向验收代码寄存器(ACR)
 182   1        *SJA_BCANAdr=BCAN_ACR;                        //写入参数
 183   1        if(*SJA_BCANAdr != BCAN_ACR)                  //校验写入值
 184   1        {
 185   2          return  1; 
 186   2        }
 187   1        SJA_BCANAdr=REG_AMR;                          //访问地址指向验收屏蔽寄存器(AMR)
 188   1        *SJA_BCANAdr=BCAN_AMR;                        //写入参数
 189   1        if(*SJA_BCANAdr != BCAN_AMR)                  //校验写入值
 190   1        {
 191   2          return  1; 
 192   2        }
 193   1      
 194   1        return    0;
 195   1      }
 196          
 197          /************************************************************************
 198          ;*函数原型: bit  BCAN_SET_OUTCLK (unsigned char Out_Control,            *
 199                                            unsigned char  Clock_Out);            *
 200          ;*参数说明:                                                                                                                     *
 201           *    Out_Control:存放输出控制寄存器 (OC)  的参数设置                   *
 202           *    Clock_Out:存放时钟分频寄存器 (CDR) 的参数设置                     *
 203           *                                                                      *   
 204          ;*返回值:                                                               *
 205          ;*           0 ;设置成功                                                *
 206          ;*           1 ;设置失败                                                *
 207          ;*                                                                      * 
 208          ;*说明:设置SJA1000的输出模式和时钟分频 。该子程序只能用于复位模式       *                                 
             -                                                                                    *             
 209          ;************************************************************************/
 210          bit  BCAN_SET_OUTCLK (unsigned char Out_Control,    
 211                               unsigned char  Clock_Out)
 212          {
 213   1        SJA_BCANAdr=REG_OCR ;                         //访问地址指向输出控制寄存器
 214   1        *SJA_BCANAdr=Out_Control;                     //写入参数
 215   1        if(*SJA_BCANAdr != Out_Control)               //校验写入值
 216   1        {
 217   2          return  1; 
 218   2        } 
 219   1        SJA_BCANAdr=REG_CDR;                          //访问地址指向输出控制寄存器
 220   1        *SJA_BCANAdr=Clock_Out;                       //写入参数
 221   1        return    0;
 222   1      }
 223          
 224          
 225          /************************************************************************
 226           *函数原型: bit   BCAN_HW_INIT(unsigned char  BCAN_ACR,                 *
 227           *                             unsigned char  BCAN_AMR,                 *
 228           *                             unsigned char  Bus_Timing0,              *
 229           *                             unsigned char  Bus_Timing1,              *
 230           *                             unsigned char  Out_Control,              *
 231           *                             unsigned char  Clock_Out                 *
 232           *                            )                                         *
 233           *参数说明:                                                             *
 234           *    BCAN_ACR:存放验收代码寄存器(ACR)的参数设置                      *
 235           *    BCAN_AMR:存放接收屏蔽寄存器(AMR)的参数设置                      *
 236           *    Bus_Timing0:存放总线定时0寄存器(BTR0)的参数设置                   *
 237           *    Bus_Timing1:存放总线定时1寄存器(BTR1)的参数设置                   *
C51 COMPILER V7.01  SJA_BCANFUNC                                                           01/04/2003 10:03:09 PAGE 5   

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

 300          /************************************************************************
 301           *函数原型:  bit   BCAN_DATA_WRITE(unsigned char *SendDataBuf)*
 302           *参数说明:  特定帧各式的数据

⌨️ 快捷键说明

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