📄 sja1000.c
字号:
#include <REGX52.h>
#include <absacc.h>
#include "xkcan_defs.h"
#include "sja1000.h"
void SJAReset(void)
{
SJA1000_CS = 1;
SJA1000_RST = 0;
SJA1000_RST = 1;
}
void wbyte(ubyte addr, ubyte dat)
{
ubyte addr_t;
addr_t = P2 & (~(1<<SJA1000_CS_SHIFT));
// The correct form of wbyte
// XBYTE[addr|(addr_t<<8)] = dat;
// This is the wrong form
XBYTE[addr|(addr_t<<8)] = ((dat&0x80)>>1 | (dat&0x40)<<1 | (dat&0x3f));
P2 = addr_t | (1<<SJA1000_CS_SHIFT);
}
ubyte rbyte(ubyte addr)
{
ubyte dat;
ubyte addr_t;
addr_t = P2 & (~(1<<SJA1000_CS_SHIFT));
dat = XBYTE[addr|(addr_t<<8)];
P2 = addr_t | (1<<SJA1000_CS_SHIFT);
// The correct form of wbyte
// return dat;
// This is the wrong form
return ((dat&0x80)>>1 | (dat&0x40)<<1 | (dat&0x3f));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -