⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mul_can_r.c

📁 C8051F系列单片机开发与C语言编程
💻 C
字号:
///////////多消息can接收程序////////////////
/////////mul_can_r.c///////////////////////
#include "candeal1.h"
#define LEN 8
#define MSGNUMA 2
#define MSGNUMB 5
#define NUMAPEND 0x0002
#define NUMBPEND 0x0010
xdata uchar rr1[LEN];
xdata uchar rr2[LEN];
void canini(){
	clear_msg_objects();
	init_msg_object_RX (MSGNUMA,2);//初始化发送
	init_msg_object_RX (MSGNUMB,4);
	EIE2 |= 0x20;
	EA = 1;
	SFRPAGE = CAN0_PAGE;
	CAN0CN=0X41;
	CAN0ADR=BITREG;
	CAN0DAT=0X34c0;//调波特率
	start_CAN();
}
void delay1ms(uint time){//延迟1ms*time,这不是一个精确值
	uint i;
	uint j;
	for (i=0;i<time;i++){
		for(j=0;j<300;j++);
	}
}	
void config(){
//看门狗禁止
	WDTCN = 0x07;	
    WDTCN = 0xDE;   
   	WDTCN = 0xAD;
	SFRPAGE = 0x0F;
//交叉开关使能,但没有进行外围设备配置
	XBR0 = 0x00;	
	XBR1 = 0x00;	
	XBR2 = 0x40;
 	XBR3 = 0x00;   
//管脚输出配置,P0口为开漏输出,其中P0.6接上拉电阻,P0为数字输入口
 	SFRPAGE = 0x0F;
 	P0MDOUT = 0x00; 
 	P1MDIN = 0xFF;  
//晶振配置,采用内部晶振8分频
	SFRPAGE = 0x0F;
 	CLKSEL = 0x00;  
	OSCXCN = 0x00;	
	OSCICN = 0x84;	
}
main(){
	uchar i;
	config();
	for(i=0;i<LEN;i++){
		rr1[i]=0;
		rr2[i]=0;
	}
	canini();
	while(1);
	
}
void ISRname (void) interrupt 19

{	uint temp;
	temppage=SFRPAGE;
   SFRPAGE = CAN0_PAGE;
   status = CAN0STA;
   if ((status&0x10) != 0){
	   CAN0STA&=0xef;
		CAN0ADR=INTPEND1;
		temp=CAN0DAT;
		if((temp&NUMAPEND)!=0)/*注意若写成	if(temp&NUMAPEND!=0)可能会出现预料之外的结果*/
			receive_data (MSGNUMA,rr1,LEN);
		if((temp&NUMBPEND)!=0)
			receive_data (MSGNUMB,rr2,LEN);
   } 
   SFRPAGE=temppage;
}
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -