离心玻璃棉厂家
免费服务热线

Free service

hotline

010-00000000
离心玻璃棉厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

PIC单片机can总线协议收发编程

发布时间:2020-07-21 19:27:41 阅读: 来源:离心玻璃棉厂家

//该程序运行在pic单片机p18f458上实现发送缓冲器0向接收缓冲器0发送数据的自测试模式,其中接收采用中断方式//发送采用查询方式#include"p18f458.h"intCAN_FLAG;//定义标志寄存器//**************初始化子程序***************// 单片机网提供有问题请联系我们voidinitcan(){TRISB=(TRISB|0X08)0XFB;//设置CANRX/RB3为输入,CANTX/RB2为输出

//设置CAN的波特率为125K,在Fosc=4M时,Tbit=8us,假设BRP=01h//则TQ=[2*(1+BRP)]/Fosc=2*(1+1)/4=1us。//NOMINAL BIT RATE=8TQ,SJW=1,Sync_Seg=1TQ,Prog _Seg=1TQ,Phase_Seg1=3TQ,Phase_Seg2=3TQCANCON=0X80;//请求进入CAN配置模式REQOP=100while(CANSTAT0X80==0){;}//等待进入CAN配置模式OPMODE=100BRGCON1=0X01;//设置SJW和BRP,SJW=1TQ,BRP=01HBRGCON2=0X90;//设置Phase_Seg1=3TQ和Prog _Seg=1TQBRGCON3=0X42;//设置Phase_Seg2=3TQ

//设置发送邮箱0标识符号和发送的数据TXB0CON=0X03;//发送优先级为最高优先级,TXPRI=11TXB0SIDH=0XFF;//设置发送缓冲器0的标准标识符,本程序采用标准识符TXB0SIDL=0XE0;TXB0DLC=0X08;//设置数据长度为8个字节TXB0D0=0X00;//写发送缓冲器数据区的数据TXB0D1=0X01;TXB0D2=0X02;TXB0D3=0X03;TXB0D4=0X04;TXB0D5=0X05;TXB0D6=0X06;TXB0D7=0X07;

//设置接收邮箱0的标识符和初始化数据RXB0SIDH=0XFF;//设置接收缓冲器0的标识符RXB0SIDL=0XE0;RXB0CON=0X20;//仅仅接收标准标识符的有效信息,FILHIT0=0表示RXB0采用filter0RXB0DLC=0X08;//设置接收缓冲器0的数据区长度RXB0D0=0X00;//初始化接收缓冲器0的数据区数据RXB0D1=0X00;RXB0D2=0X00;RXB0D3=0X00;RXB0D4=0X00;RXB0D5=0X00;RXB0D6=0X00;RXB0D7=0X00;

//初始化接收滤波器0和接收屏蔽,RXF0SIDH=0XFF;RXF0SIDL=0XE0;RXM0SIDH=0X00;RXM0SIDL=0X00;

//初始化CAN模块的I/O控制寄存器//CIOCON=0X00;

//使CAN进入某种工作模式模式CANCON=0X00;//=0X40,进入自测试模式;=0x00,正常操作模式while(CANSTAT0XE0!=0){;}//while(CANSTAT0X40==0){;}

//初始化CAN的中断PIR3=0X00;//清所有中断标志PIE3=0X01;//使能接收缓冲器0的接收中断IPR3=0X01;//接收缓冲器0的接收中断为最高优先级}

//*********接收缓冲器0接收中断服务程序***********#pragmainterruptcan_isr#pragmacode low_ISR=0x18void low_ISR(){_asmgoto can_isr_endasm}#pragmacode

void can_isr(){if(B0IF==1)CAN_FLAG=1;B0IF=0;//清接收中断标志FUL=0;//打开接收缓冲器来接收新信息}

//****************主程序**can总线收发编程****************main(){INTCON=0x00;//禁止所有中断initcan();WDTCON=0;//=1,看门狗使能;=0,禁止看门狗INTCON=0xc0;//使能中断while(1){REQ=1;//请求发送,TXREQ=1while(B0IF!=1){;}//等待发送完成while(CAN_FLAG==0){;}//等待接收数据CAN_FLAG=0;//清接收到标志REQ=0;//禁止发送TXB0D0=RXB0D0+1;//用接收数据加1来更新发送数据TXB0D1=RXB0D1+1;TXB0D2=RXB0D2+1;TXB0D3=RXB0D3+1;TXB0D4=RXB0D4+1;TXB0D5=RXB0D5+1;TXB0D6=RXB0D6+1;TXB0D7=RXB0D7+1;

}}

海口植发价格

哈尔滨热玛吉价格

南昌隆胸价格