//对管脚分配进行了定义
//对子函数进行了声明
# define uchar unsigned char
# define uint unsigned int
# define NOP5 {_nop_();_nop_();_nop_();_nop_();_nop_();}/*延时5us*/
#define N_can 13//一帧字节数
bit TXD_flag = 0;// 若为1,要求发送处理
bit RXD_flag = 0; //有无数据可以接收;0无 ,1有
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};// 0, 1, 2, 3, 4, 5
uchar RX_buffer[13]; //接收的数据
uchar TX_buffer[13]; //接收的数据
uchar Txd_data = 0;//CAN总线要发送的数据,也是要在数码管1-2位置显示的数据
uchar Rxd_data= 0;//CAN总线要接收的数据,也是要在数码管3-4位置显示的数据
/*P2 口分配*/
sbit LED_RED = P2^1;
sbit LED_GRE = P2^2;
sbit SJA_RST = P2^3;//SJA1000复位管脚
sbit SJA_CS = P2^0;//SJA1000片选管脚
/*CAN总线SJA1000寄存器地址定义(用的是PeliCAN模式,扩展帧EFF模式)*/
#define MODR (*(unsigned char volatile xdata *)0xFE00) // 模式寄存器
#define CMR (*(unsigned char volatile xdata *)0xFE01) // 命令寄存器
#define SR (*(unsigned char volatile xdata *)0xFE02) // 状态寄存器
#define IR (*(unsigned char volatile xdata *)0xFE03) // 中断寄存器
#define IER (*(unsigned char volatile xdata *)0xFE04) // 中断使能寄存器
#define BTR0 (*(unsigned char volatile xdata *)0xFE06) // 总线定时寄存器0 ;总线波特率的选择
#define BTR1 (*(unsigned char volatile xdata *)0xFE07) // 总线定时寄存器1 ;总线波特率的选择
#define OCR (*(unsigned char volatile xdata *)0xFE08) // 输出控制寄存器
#define ACR (*(unsigned char volatile xdata *)0xFE10) //
#define ACR1 (*(unsigned char volatile xdata *)0xFE11) //
#define ACR2 (*(unsigned char volatile xdata *)0xFE12) //
#define ACR3 (*(unsigned char volatile xdata *)0xFE13) //接收代码(0x16_0x19);接收过滤位的选择*******复位模式
#define AMR (*(unsigned char volatile xdata *)0xFE14) //
#define AMR1 (*(unsigned char volatile xdata *)0xFE15) //
#define AMR2 (*(unsigned char volatile xdata *)0xFE16) //
#define AMR3 (*(unsigned char volatile xdata *)0xFE17) // 掩码(0x20_0x23); 接收过滤位的选择*******复位模式
#define CDR (*(unsigned char volatile xdata *)0xFE1F) // 时钟分频器
#define ALC (*(unsigned char volatile xdata *)0xFE0B) // 仲
自收自发文件清单 来自淘豆网www.taodocs.com转载请标明出处.