欢迎来到天天文库
浏览记录
ID:60719381
大小:23.62 KB
页数:7页
时间:2020-12-10
《PIC18F单片机CAN通信程序及AD采样.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、程序流程图二、功能描述:AD数据采集,AD采集20组数据,每组数据50个采样值,然后将采样值经过计算平均值并转换为十进制数据后发送到CAN,在PC机上用CANTools软件调试主函数流程图中断函数流程图三、程序源码/*********************************************************************************************************************************/#include"pic18f4680.h"/*PIC1
2、8系列的头文件*/charCAN_TX_Adress_H,CAN_TX_Adress_L;/*CAN发送邮箱标识符高低字节*/charCAN_RX_Adress_H,CAN_RX_Adress_L;/*CAN接收邮箱标识符高低字节*/#defineCHANNEL70X1D//选择模拟通道7采集正输出电压#defineCHANNEL60X19//选择模拟通道6采集正输出电流#defineCHANNEL30X0D//选择模拟通道3采集正输出电压#defineCHANNEL20X09//选择模拟通道2采集正输出电流#defineCHAN
3、NEL10X05//选择模拟通道1采集负输出电流#defineCHANNEL00X01//选择模拟通道0采集负输出电压#defineLN50//采集50次进行平均#defineLAN20//采集20个平均值bank2uintAD[LN];//存放50次采样值uintRES[LAN];//存放20个平均值uintRESVP=0x0000;//存放正输出电压采样值,供CAN上传数据uintRESIP=0X0000;//存放正输出电流电压采样值,供CAN上传数据uintRESVN=0X0000;//存放负输出电压采样值,供CAN上传数据
4、uintRESIN=0X0000;//存放负输出电流正电压采样值,供CAN上传数据ucharWAIT_FLAG;//等待中断标志位uintcount;//100次计数/*******************************************************************函数名:initial()**功能描述:系统初始化子程序,放在程序首部****************************************************************/voidinitial(){cou
5、nt=0;INTCON=0x00;/*bit7-bit0:关总中断*/PIE1=0;/*PIE1的中断不使能*/PIE2=0;/*PIE2的中断不使能*/PIE3=0;/*PIE3的中断不使能*/}/*******************************************************************函数名:initcan()**功能描述:CAN初始化子程序,采用标准标识符,正常工作模式*********************************************************
6、*******/voidinitcan(){//设置发送邮箱0标识符:=0x04CACAN_TX_Adress_L=0x55;//CAN低地址标识符CAN_TX_Adress_L=CAN_TX_Adress_L&0xe0;CAN_TX_Adress_H=0x99;//CAN高地址标识符,应与发送方标识符相同//设置接收邮箱0标识符:=0x019FCAN_RX_Adress_H=0x33;//CAN高地址标识符CAN_RX_Adress_L=0xe0;//CAN低地址标识符,应与发送方标识符相同CAN_RX_Adress_L=CAN
7、_RX_Adress_L&0xe0;//************设置对CAN进行配置***************TRISB=TRISB&0XFB;//设置CANRX/RB3输入,CANTX/RB2输出CANCON=0X80;//CANCON,bit7-5:1XX请求配置while((CANSTAT&0X80)==0)//CAN状态寄存器。bit7-5:100配置方式{;//等待进入CAN配置模式OPMODE=100}//***********波特率设置**************************BRGCON1=0X07;
8、//Sync_Seg(bit7-6)=1TQ,BRP(bit5-0)=1,则TQ=((2*(BRP+1))/Fosc=16/32M=0.5usBRGCON2=0X90;//bit7=1自由编程,bit6=0总线在采样点采样1次;phase_Seg1
此文档下载收益归作者所有