您当前的位置:五五电子网电子知识单片机-工控设备51单片机SJA1000 CAN总线程序 正文
SJA1000 CAN总线程序

SJA1000 CAN总线程序

点击数:7286 次   录入时间:03-04 11:43:57   整理:http://www.55dianzi.com   51单片机
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <reg52.h>
sbit  int0 = P3^2;
//-----------------------定义寻址的基址--------------------------------------------------------
#define base_Adr 0x00   
//-----------------------定义总线定时寄存器的值--------------------------------------------------------
#define SJA_BTR0 0x00                                  //该值需要用户根据实际需要的波特率进行计算
#define SJA_BTR1 0x16                                  //具体计算见文章说明
//-----------------------设置接收报文类型(标示符)--------------------------------------------------------
                                                      //该值需要用户根据实际需要重新配置
#define SJA_ACR 0x00                                  //验收代码寄存器的值
#define SJA_AMR 0x16                                  //验收屏蔽寄存器的值
//-----------------------设置输出始终类型--------------------------------------------------------
                                                      //该值需要用户根据实际需要重新配置
#define SJA_OCR 0x00                                  //输出控制寄存器的值
#define SJA_CDR 0x16                                  //始终分频寄存器的值
//-----------------------设置SJA中断,1为开中断--------------------------------------------------------
#define SJA_OIE 0                                    //溢出中断
#define SJA_EIE 0                                    //错误中断
#define SJA_TIE 0                                    //发送中断
#define SJA_RIE 0                                    //接收中断
//-----------------------定义地址指针,指向基址--------------------------------------------------------
unsigned char xdata *SJA_base_Adr = base_Adr;
//-----------------------定义硬件故障标志位--------------------------------------------------------
bit bdata    connect_OK=0;                            //connect_OK=1设备连接正常
                                                      //connect_OK=0设备连接故障
//-----------------------定义硬件故障标志位--------------------------------------------------------
bit bdata    SJA_workmode=1;                          //SJA_workmode=1SJA工作在工作模式
                                                      //SJA_workmode=0工作在复位模式
//-----------------------定义SJA1000读写缓冲区的数据结构--------------------------------------------------------
struct BASICCAN_BUFstruct{
               unsigned char FrameID_H;
               unsigned char FrameLENTH ;
               unsigned char FrameKIND  ;
               unsigned char FrameID_L3 ;
               unsigned char Frame_Data[8];
               }BASICCAN_FRAME,receive_BUF,send_BUF;
//BASICCAN_BUFstruct send_BUF;
//------------------------------------------------------------------------------------------------------
// 函数类别 SJA1000基本操作
// 函数名称 CANREG_write
// 入口函数 SJAREG_ADR,setting
// 出口函数 无
// 函数功能 写SJA1000的寄存器
//------------------------------------------------------------------------------------------------------
void CANREG_write(unsigned char SJAREG_ADR, unsigned char setting)
           {
                    *(SJA_base_Adr+SJAREG_ADR)=setting;
            }
//------------------------------------------------------------------------------------------------------
// 函数类别 SJA1000基本操作
// 函数名称 CANREG_write
// 入口函数 SJAREG_ADR
// 出口函数 SJAREG_data
// 函数功能 读SJA1000的寄存器

[1] [2] [3] [4]  下一页


本文关键字:程序  51单片机单片机-工控设备 - 51单片机