您的位置 首页 动态

can协议_can总线协议

can协议sja1000原创经典:调试好的can总线程序(c语言)程序中的两个头文件:includeSJA_nnytH>SJA存储器定义头文件includeSJA_

can协议sja1000

原创经典:调试好的can总线程序(c言语)
程序中的两个头文件:
#include //SJA存储器界说头文件
#include //SJA子程序文件
我们需要的话联络我:nnyt@tom.com
一起供给can协议试验开发板给初学者
1CAN操控器为SJA1000,驱动器为TJA1050,电源阻隔;
2供给翔实的源程序,可根据用户需求编写程序
联络我:13106551527(短信联络,QQ详谈)
QQ: 531706356
调试好的can总线程序(c言语)
//
void Init_Cpu(void);//初始化单片机
void Sja_1000_Init(void);//初始化SIA
//
void main(void)
{

s=0;//装备sja1000呈现过错时,从头初始化
do{
Sja_1000_Init();
}while(s!=0);
Init_Cpu();//initialize mcu
flag_init=0x00;//保存中止寄存器值清零
while(1)
{
if(rcv_flag)//if there is receive interrupt
{
rcv_flag=0;//接纳标志位清零
BCAN_DATA_RECEIVE(rcv_data);//接纳数据
BCAN_CMD_PRG(RRB_CMD);//开释接纳缓冲区
flag_send=1;//发送指令置位
}
if(flag_send)
{
flag_send=0;//发送位清零
send_data[0]=rcv_data[2];//接纳到的”发送方ID10~ID3″
send_data[1]=rcv_data[3];//接纳到的”发送方ID2~ID0″和要求的数据长度
send_data[2]=0x88;
send_data[3]=0x89;
BCAN_DATA_WRITE(send_data);//发送数据
BCAN_CMD_PRG(TR_CMD);//置位发送恳求位
for(count_k=0;count_k<200;count_k++)
display(a);//延时显现”5″
}
if (err_flag)//过错中止
{
for(count_k=0;count_k<280;count_k++)
display(c);//过错显现”1″
err_flag=0;//过错标志位清零
Sja_1000_Init();//初始化SJA

}
display(b);//显现”p”
}
}

void ex0_int(void) interrupt 0 using 1//外部中止0
{
SJA_BCANAdr=REG_INTERRUPT;//指针指向中止寄存器
flag_init=*SJA_BCANAdr;//坚持中止寄存器值
}

void Init_Cpu(void)//单片机初始化,敞开外部中止0
{
PX0=1;
EX0=1;
EA=1;
}

void Sja_1000_Init(void)
{
s=BCAN_CREATE_COMMUNATION();//SJA自测
s=BCAN_ENTER_RETMODEL();//进入复位
s=BCAN_SET_BANDRATE(0x04);//设置波特率100K/S
s=BCAN_SET_OBJECT(0xaa,0x00); //设置地址ID:550
s=BCAN_SET_OUTCLK(0xaa,0x48); //设置输出方法,制止COLOCKOUT输出
s=BCAN_QUIT_RETMODEL();//退出复位形式
SJA_BCANAdr=REG_CONTROL;//地址指针指向操控寄存器
*SJA_BCANAdr|=0x1e;//敞开过错接纳发送中止
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/233386.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部