1,在发送程序中,将消息编号(MsgNum)写入IF1命令请求寄存器后,数据被发出,请问在接收程序中,如何通过消息编号相关的子函数,取出数据。
2,消息编号在CAN
通信中都有哪些作用?是如何工作的?本人水平较低,希望各位可以提供相关代码参考。
我所学习的代码如下:
CAN启动程序:
void start_CAN(void)
{
SFPRAGE=CAN0_PAGE;
CAN0CN丨=0x41;
CAN0ADR=BITREG;
CAN0DAT=0x49c2;
CAN0CN丨=0x06;
CAN0CN&=~0x41;
}
发送程序:
void transmit(char MsgNum)
{
uchar num;
SFRPAGE=CAN0_PAGE;
CAN0ADR=IF1CMDMSK;
CAN0DAT=0x0087;
CAN0ADR=IF1DATA1;
for(num=0;num<8;num++)
{
CAN0DATH=sdata[num];
n++;
CAN0DATL=sdata[num];
}
CAN0ADR=IF1CMDRQST;
CAN0DATL=MagNum;
}
接收程序:
void ISRname(void) interrupt 19
{
temppage=SFRPAGE;
SFRPAGE=CAN0_PAGE;
status=CAN0STA;
if((status&0x10)!=0)
{
CAN0STA&=0xef;
receive_data(MsgNum);
}
SFRPAGE=temppage;
}
..............................................................
请问:temppage=SFRPAGE;和SFRPAGE=temppage;这两句是做什么用的?receive_data(MsgNum);这个子函数该如何写?