|
網(wǎng)上流行的程序如下
#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 //內(nèi)部控制寄存器
...
#define REG_RXERR SJA_BaseAdr+0x0E //接收錯(cuò)誤計(jì)數(shù)器
#define REG_TXERR SJA_BaseAdr+0x0F //發(fā)送錯(cuò)誤計(jì)數(shù)器
#define REG_ACR1 SJA_BaseAdr+0x10 //驗(yàn)收代碼寄存器
#define REG_ACR2 SJA_BaseAdr+0x11 //驗(yàn)收代碼寄存器
...
#define REG_AMR3 SJA_BaseAdr+0x16 //驗(yàn)收屏蔽寄存器
#define REG_AMR4 SJA_BaseAdr+0x17 //驗(yàn)收屏蔽寄存器
// 發(fā)送緩沖區(qū)寄存器
#define REG_TXD_FID SJA_BaseAdr+0x10 //發(fā)送緩沖區(qū)1
#define REG_TXD_ID1 SJA_BaseAdr+0x11 //發(fā)送緩沖區(qū)2
#define REG_TXD_ID2 SJA_BaseAdr+0x12 //發(fā)送緩沖區(qū)3
#define REG_TXD_ID3 SJA_BaseAdr+0x13 //發(fā)送緩沖區(qū)4
#define REG_TXD_ID4 SJA_BaseAdr+0x14 //發(fā)送緩沖區(qū)5
#define REG_TXBuffer1 SJA_BaseAdr+0x15 //發(fā)送緩沖區(qū)6
...
#define REG_TXBuffer8 SJA_BaseAdr+0x1C //發(fā)送緩沖區(qū)13
// 接收緩沖區(qū)寄存器
#define REG_RXD_FID SJA_BaseAdr+0x10 //接收緩沖區(qū)1
#define REG_RXD_ID1 SJA_BaseAdr+0x11 //接收緩沖區(qū)2
#define REG_RXD_ID2 SJA_BaseAdr+0x12 //接收緩沖區(qū)3
#define REG_RXD_ID3 SJA_BaseAdr+0x13 //接收緩沖區(qū)4
....
#define REG_RXCOUNT SJA_BaseAdr+0x1D //RX報(bào)文計(jì)數(shù)器
#define REG_RBSA SJA_BaseAdr+0x1E //接收緩沖區(qū)起始地址
#define REG_CDR SJA_BaseAdr+0x1F //時(shí)鐘分頻寄存器
如上,
SJA_BaseAdr+0x10 在上面設(shè)置中,即當(dāng)驗(yàn)收代碼寄存器,又當(dāng) 接收緩沖區(qū),還可以是發(fā)送緩沖區(qū)
這么設(shè)置不會(huì)沖突嗎?
為啥可以這樣設(shè)置?
我買的書里他是這么設(shè)置的,直接按照順序一路下來
有點(diǎn)迷糊,是不是兩個(gè)都可以?
|
|