|
网上流行的程序如下
#include "stdio.h"
#include "string.h"
#include "intrins.h"
//#include "AT89X51.H"
#include "reg52.h"
//定义SJA1000的基址
#define SJA_BaseAdr 0X7F00
// 控制寄存器
#define REG_MODE SJA_BaseAdr+0x00 //内部控制寄存器
...
#define REG_RXERR SJA_BaseAdr+0x0E //接收错误计数器
#define REG_TXERR SJA_BaseAdr+0x0F //发送错误计数器
#define REG_ACR1 SJA_BaseAdr+0x10 //验收代码寄存器
#define REG_ACR2 SJA_BaseAdr+0x11 //验收代码寄存器
...
#define REG_AMR3 SJA_BaseAdr+0x16 //验收屏蔽寄存器
#define REG_AMR4 SJA_BaseAdr+0x17 //验收屏蔽寄存器
// 发送缓冲区寄存器
#define REG_TXD_FID SJA_BaseAdr+0x10 //发送缓冲区1
#define REG_TXD_ID1 SJA_BaseAdr+0x11 //发送缓冲区2
#define REG_TXD_ID2 SJA_BaseAdr+0x12 //发送缓冲区3
#define REG_TXD_ID3 SJA_BaseAdr+0x13 //发送缓冲区4
#define REG_TXD_ID4 SJA_BaseAdr+0x14 //发送缓冲区5
#define REG_TXBuffer1 SJA_BaseAdr+0x15 //发送缓冲区6
...
#define REG_TXBuffer8 SJA_BaseAdr+0x1C //发送缓冲区13
// 接收缓冲区寄存器
#define REG_RXD_FID SJA_BaseAdr+0x10 //接收缓冲区1
#define REG_RXD_ID1 SJA_BaseAdr+0x11 //接收缓冲区2
#define REG_RXD_ID2 SJA_BaseAdr+0x12 //接收缓冲区3
#define REG_RXD_ID3 SJA_BaseAdr+0x13 //接收缓冲区4
....
#define REG_RXCOUNT SJA_BaseAdr+0x1D //RX报文计数器
#define REG_RBSA SJA_BaseAdr+0x1E //接收缓冲区起始地址
#define REG_CDR SJA_BaseAdr+0x1F //时钟分频寄存器
如上,
SJA_BaseAdr+0x10 在上面设置中,即当验收代码寄存器,又当 接收缓冲区,还可以是发送缓冲区
这么设置不会冲突吗?
为啥可以这样设置?
我买的书里他是这么设置的,直接按照顺序一路下来
有点迷糊,是不是两个都可以?
|
|