sja1000.c
来自「工业CAN总线网络节点设计 工业CAN总线网络节点设计」· C语言 代码 · 共 43 行
C
43 行
#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 + =
减小字号Ctrl + -
显示快捷键?