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 + -
显示快捷键?