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

📄 id3can.c

📁 CAN三台机子互相通讯(机子3程序)
💻 C
字号:
//*****************************************************************
//************************设备3程序********************************
//*****************************************************************


#include "p30f4011.h"

unsigned int a1;
unsigned int a2;
unsigned int a3;
unsigned int a4;
unsigned long int i = 0;

void initial()
{
    C1CTRLbits.REQOP = 0x4; 			//请求进入配置模式
    while (C1CTRLbits.OPMODE!=0x4){}  	//确认进入配置模式
    C1TX0CON = 0x0003;      			//发送0邮箱配置,高优先级
    C1TX0SID = 0x000c;      			//发送0标准标识符,11位
    C1TX0DLC = 0x01c0;     			 	//发送0数据长度,8字节
    C1RX0CON = 0x0000;      			//接收0邮箱配置
    C1RX0DLC = 0x0008;      			//接收0数据长度,8字节
    C1RXF0SID = 0x0000;     			//接收滤波器0标准标识符,11位
    C1RXM0SID = 0xfff3;     			//接收屏蔽0标准标识符 
    C1CFG1 = 0x00ff;        			//波特率配置
    C1CFG2 = 0x07ff;
    C1CTRLbits.REQOP = 0x00; 			//请求进入正常模式
    while (C1CTRLbits.OPMODE!=0x00){}   //确认进入正常模式
	return;
}    

int main(void)
{   _PCFG6=1;							//定义RB6为数据口
	INTCON1=0x0000;	
	INTCON2=0x0000;	   					//关闭所有中断 
	TRISBbits.TRISB6=1;					//定义RB6为输入
	TRISEbits.TRISE0=0;					//定义RE0为输出
	TRISEbits.TRISE1=0;
	TRISEbits.TRISE2=0;
    initial();
	while(1)
	{
//*****************************************************发送
		if(PORTBbits.RB6==0)
         {for(i=0;i<5000;i++){}
 			if(PORTBbits.RB6==0)
			{
			C1TX0B1 = 0x0000;  					//发送缓冲寄存器8字节
        	C1TX0B2 = 0x0000;
        	C1TX0B3 = 0x0000;
        	C1TX0B4 = 0x3333;
        	C1TX0CONbits.TXREQ = 1; 			//启动发送
        	while (C1TX0CONbits.TXREQ==1){} 	//等待发送完成
			}
		}
//*********************************************************接收
	if (C1RX0CONbits.RXFUL == 1)				//接收满位状态
		{
			a1 = C1RX0B1;
        	a2 = C1RX0B2; 
        	a3 = C1RX0B3; 
        	a4 = C1RX0B4;
            C1RX0CONbits.RXFUL = 0;				//清除接收满位状态
		}

//*******************************************************************************
	if((a1==0x0000)&&(a2==0x0000)&&(a3==0x0000)&&(a4==0x1111))		//设备1数据
			{
				LATEbits.LATE0=1;
			}
		else 
				LATEbits.LATE0=0;

//********************************************************************************
	if((a1==0x0000)&&(a2==0x0000)&&(a3==0x0000)&&(a4==0x2222))		//设备2数据
			{
				LATEbits.LATE1=1;
			}
		else 
				LATEbits.LATE1=0;
			
			
	}

return;
}

⌨️ 快捷键说明

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