您现在的位置是:首页 > 源码 > CAN通信C语言程序
推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

CAN通信C语言程序

更新时间:2019-12-23 15:00:50 大小:78K 上传用户:17792872056查看TA发布的资源 标签:can通信C语言 下载积分:0分 评价赚积分 (如何评价?) 收藏 评论(1) 举报

资料介绍

//该程序实现发送缓冲器0 向接收缓冲器0 发送数据的自测试模式,其中接收采用中断方式

//发送采用查询方式


部分文件列表

文件名 大小
CAN通信C语言程序___《免费下载》.pdf 78K

部分页面预览

(完整内容请下载后查看)
//该程序实现发送缓冲器 0 向接收缓冲器 0 发送数据的自测试模式,其中接收采用中断方式  
//发送采用查询方式  
#include "p18f458.h"  
int CAN_FLAG;  
//定义标志寄存器  
//**************初始化子程序***************  
void initcan()  
{
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=8TQSJW=1Sync_Seg=1TQ,Prog _Seg=1TQ,Phase_Seg1=3TQ,Phase_Seg2=3TQ  
CANCON=0X80;  
//请求进入 CAN 配置模式 REQOP=100  
//等待进入 CAN 配置模式 OPMODE=100  
//设置 SJW BRPSJW=1TQBRP=01H  
//设置 Phase_Seg1=3TQ Prog _Seg=1TQ  
//设置 Phase_Seg2=3TQ  
while(CANSTAT&0X80==0){;}  
BRGCON1=0X01;  
BRGCON2=0X90;  
BRGCON3=0X42;  
//设置发送邮箱 0 标识符号和发送的数据  
TXB0CON=0X03;  
TXB0SIDH=0XFF;  
TXB0SIDL=0XE0;  
TXB0DLC=0X08;  
TXB0D0=0X00;  
TXB0D1=0X01;  
TXB0D2=0X02;  
TXB0D3=0X03;  
TXB0D4=0X04;  
TXB0D5=0X05;  
TXB0D6=0X06;  
TXB0D7=0X07;  
//发送优先级为最高优先级,TXPRI=11  
//设置发送缓冲器 0 的标准标识符,本程序采用标准识符  
//设置数据长度为 8 个字节  
//写发送缓冲器数据区的数据  
//设置接收邮箱 0 的标识符和初始化数据  
RXB0SIDH=0XFF;  
RXB0SIDL=0XE0;  
//设置接收缓冲器 0 的标识符  
RXB0CON=0X20;  
RXB0DLC=0X08;  
RXB0D0=0X00;  
RXB0D1=0X00;  
RXB0D2=0X00;  
RXB0D3=0X00;  
RXB0D4=0X00;  
RXB0D5=0X00;  
RXB0D6=0X00;  
RXB0D7=0X00;  
//仅仅接收标准标识符的有效信息,FILHIT0=0 表示 RXB0 采用 filter0  
//设置接收缓冲器 0 的数据区长度  
//初始化接收缓冲器 0 的数据区数据  
//初始化接收滤波器 0 和接收屏蔽,  
RXF0SIDH=0XFF;  
RXF0SIDL=0XE0;  
RXM0SIDH=0X00;  
RXM0SIDL=0X00;  
//初始化 CAN 模块的 I/O 控制寄存器  
//CIOCON=0X00;  
//使 CAN 进入某种工作模式模式  
CANCON=0X00;  
//=0X40,进入自测试模式;=0x00,正常操作模式  
while(CANSTAT&0XE0!=0){;}  
//while(CANSTAT&0X40==0){;}  
//初始化 CAN 的中断  
PIR3=0X00;  
PIE3=0X01;  
IPR3=0X01;  
//清所有中断标志  
//使能接收缓冲器 0 的接收中断  
//接收缓冲器 0 的接收中断为最高优先级  
}
//*********接收缓冲器 0 接收中断服务程序***********  
#pragma interrupt can_isr  
#pragma code low_ISR=0x18  
void low_ISR()  
{
_asm  
goto can_isr  

全部评论(1)

  • 2021-12-13 16:06:04bbkshh

    实现发送缓冲器0 向接收缓冲器0 发送数据的自测试模式