关键词不能为空

当前您在: 主页 > 英语 >

can功能描述

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 23:44
tags:

-

2021年2月1日发(作者:imat)


/* **************************************** ************************


**


功能描述


:


接收到来自


PC


机串口通信发来的数据后


,

将所有接收数据用


CAN


转发到从实验板


(



CAN)


****** ************************************************** ******* */


#include


系列的头文件


*/


char


CAN_TX_Adress_H,CAN_TX_Adress_L;


/* CAN


发送邮箱标识符高低字



*/


char


CAN_RX_Adress_H,CAN_RX_Adress_L;


/* CAN


接收邮箱标识符高低字



*/


int CAN_FLAG; /* =1


接收到


CAN


数据


,=0


未接收到数据


*/


unsigned char receive_count=0; /* 232


串口接收数据个数寄存器


*/


unsigned char send_count=0; /* 232


串口发送数据个数寄存器


*/


unsigned char *pointer; /* 232


串口发送指针


*/


unsigned char SciReceiveFlag; /*=1

< p>
串口收到


8


个数据


,



0


未收到


8


个数据


*/


unsigned char receive232[20]; /* 232


串口接收数据数组


*/


unsigned char send232[20]; /* 232


串口发送数据数组


*/



/* ************************************ ****************************


**







: initial()


**


功能描述


:


系统初始化子程序,放在程序首部



* ************************************************** ************ */


void initial()


{


INTCON=0x00; /* bit7-bit0:


关总中断


*/


ADCON1=0X07; /*


设置数字输入输出口


*/


PIE1=0; /* PIE1


的中断不使能


*/


PIE2=0; /* PIE2


的中断不使能


*/


PIE3=0; /* PIE3


的中断不使能


*/


}



/* ************************ ****************************************


**







: sciinitial()


**


功能描述


:


串行通讯初始化子程序



****** ************************************************** ******* */


void sciinitial()


{


SPBRG=25; /* 4M,


波特率


9600


时为


SPBRG



25 */


TXSTA=0x04; /*


选择异步高速方式传输


8


位数据


*/


RCSTA=0x80; /*


允许串行口工作使能


*/


TRISC=TRISC|0X80; /* RC7(RX)


设置为输入方式


*/


TRISC=TRISC&0Xbf; /* RC6(TX)


设置为输出


*/


PIE1=PIE1|0x20; /*


允许串行通讯接口接收中断使能


*/


RCIP=0; /*


设置


SCI< /p>


接收中断为低优先级中断


*/


PIE1=PIE1|0x10; /*


允许中断发送


*/


TXIP=0; /*


低优先级中断


*/


CREN=1; /*


允许串口接收数据


*/


// TXEN=1; /*


允许串口发送数据


*/


}



/* *********** ************************************************** ***


**







: initcan()


**


功能描述


: CAN


初始化子程序,采用标准标识符,正常工作模式



****************************************** ********************* */


void initcan()


{


/* ************


设置对


CAN


进行配置


******* ******** */


TRISB=(TRISB|0X08)&0XFB; / *


设置


CANRX/RB3


输入


,CANTX/RB2


输出


*/


CANCON=0X80; /* CANCON


< p>
bit7-5:1XX


请求配置


*/


while((CANSTAT&0X80)==0) /* CAN

< br>状态寄存器。


bit7-5:100


配置方式

< p>
*/


{


;


} /*


等待进入


CAN


配置模式


OPMODE=100 */


/* ************


设置对


CAN


进行配置

*************** */



/* ***********


波特率设置


************************** */


BRGCON1=0X01; /* Sync_Seg(bit7-6)=1TQ,B RP(bit5-0)=1





TQ=((2*(BRP+1))/Fosc=4/4M=1us */


BRGCON2=0X90; /*bit7=1


自由编程


,bit6=0


总线在采样点采样


1



;phase_Seg1(bit5-3)=3TQ;Prog_ Seg(bit2-0)=1TQ*/


BRGCON3=0X42; /*


设置


Phase_Seg2(bit2-0)=3TQ */


/*


标称位时间=


TQ*(Sync_Seg+ Prop_Seg+ Phase_seg1+ Phase_seg2)


=(1+1+3+3)TQ



8TQ,


位率


=1/(8*1U)=0.125MHz */



/*


设置发送邮箱


0


标识符


:=0x019F */


CAN_TX_Adress_H=0x33; //CAN


高地址标识符,应与发送方标识符相同



CAN_TX_Adress_L=0xe0; //CAN


低地址标识符



CAN_TX_Adress_L=CAN_TX_Adress_L&0xe0;



/*


设置接收邮箱


0


标识符


:1=0x04CA */


CAN_RX_Adress_H=0x99; //CAN


高地址标识符



CAN_RX_Adress_L=0x55; //CAN


低地址标识符,应与发送方标识符相同



CAN_RX_Adress_L=CAN_RX_Adress_L&0xe0;



/* ******


设置发送邮箱


0


和初始发送的数据


***** */


TXB0CON=0X03; /* bit1-0:


发 送优先级


,


设置


TXB0


为最高优先级


3 */


TXB0SIDL=CAN_TX_Adress_L&0xe0;/* bit3=0


标准标识符


,bit7-5:


标准标识 符


2-0



*/


TXB0SIDH=CAN_TX_Adress_H; /*


标准标识符的


10-3



*/


TXB0DLC=0X08; /*


设置数据长度为


8


个字节


*/


TXB0D0=0X00; /*


写发送缓冲器数据区数据初值


*/


TXB0D1=0X01; /*


写发送缓冲器数据区数据初值


*/


TXB0D2=0X02;


TXB0D3=0X03;


TXB0D4=0X04;


TXB0D5=0X05;


TXB0D6=0X06;


TXB0D7=0X07;



RXB0SIDL=CAN_RX_Adress_L&0xe0;/* bit3=0


标准标识符


,bit7-5:


标准标识 符


2-0



*/


RXB0SIDH=CAN_RX_Adress_H; /*


标准标识符的


10-3



*/


RXB0CON=0X20; /* bit6-5=01


只接收有效的标准标识符信息


*/


RXB0DLC=0X08; /*


设置接收缓冲器


0


数据区长度


8


个字节


*/


RXB0D0=0X02; /*

< br>初始化接收缓冲器


0


的数据区数据


*/


RXB0D1=0X03; /*


初始化接收缓冲 器


0


的数据区数据


*/


RXB0D2=0X04;


RXB0D3=0X05;


RXB0D4=0X00;


RXB0D5=0X00;


RXB0D6=0X00;


RXB0D7=0X00;



/* *******


初始化接收滤 波器


0


和接收屏蔽


********* ******* */


RXF0SIDH=CAN_RX_Adress_H;

-


-


-


-


-


-


-


-



本文更新与2021-02-01 23:44,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595887.html

can功能描述的相关文章