汉语大全>单片机教程教案>PIC16F87X在CAN通信中的应用(一)

PIC16F87X在CAN通信中的应用(一)

详细内容

第9章 PIC16F87X在CAN通信中的应用
9.3软件清单
// ========CAN通信程序=======
#include<pic.h>
#include<pic16f87x.h>
#include<mcp2510.h>// MCP2510寄存器定义
// =========常数和变量定义=========
#define READ0x03// 读MCP2510指令代码
#define WRITE 0x02// 写MCP2510指令代码
#define RESET 0xC0// 复位MCP2510指令代码
#define RTS 0x80// MCP2510请求发送指令代码
#define STA2510 0xA0// 读MCP2510状态指令代码
#define BITMOD0x05// MCP2510位修改指令代码
int a[12] // SPI发送或接收数据寄存器
int b[8]// 发送或接收的数据
int c[8]// 发送或接收的数据
int i // 临时变量
int count // 发送接收计数器
int count1=0// for test
int RecID_H=0
int RecID_L=0
int DLC=8
void SPIINT()
void TMR1INT()
void P1INT()
void SPIEXCHANGE(int count)
void WAIT_SPI()
void RESET2510()
intRD2510(int adress,int n)
void WR2510(int adress,int n)
void RTS2510(int RTSn)
intGETS2510()
void BM2510(int adress,int mask,int data)
void SETNORMAL()
void TXPLETE(int adress)
void TXMSG(int DLC)
intRXMSG()
void INIT2510()
void INIT877()
void INITSPI()
void ACK()
void wait()
// ========主程序=======
main(void)
{
int l,detect=0
SSPIE=1
TMR1IE=1
P1IE=1
P2IE=1
PEIE=1
ei()// 开中断
INIT877() // 初始化PIC16F877芯片
INITSPI() // 初始化SPI接口
INIT2510()// 初始化MCP2510芯片
flag1=0
flag2=0
P1CON=0x05
P2CON=0x04
while(1){
&n