📄 id3can.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 + -