嵌入式学习小组
直播中

林邵嫔

8年用户 186经验值
私信 关注

c8051f060在基于CAN通信中接收程序有什么作用?

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);这个子函数该如何写?

回帖(6)

林剑连

2020-3-25 09:10:11
云汉达人
帮顶,围观各位高手解答……
举报

李淇淇

2020-3-25 09:23:32
1,对于MsgNum的概念还不是太理解,在发送程序中,将MsgNum写入命令请求寄存器后,数据被发送,请问MsgNum的号码,指的是本次发送数据目的地的消息RAM的号码,还是对此条数据进行一个号码的标记,以便接收方能通过此标记进行判断接收?
  2,在看了一些资料之后,请问消息对象清0程序和消息对象初始化程序有什么用处?跟MsgNum的号码有关系么?
举报

黄明光

2020-3-25 09:39:36
举报

周莹

2020-3-25 09:57:31
举报

更多回帖

发帖
×
20
完善资料,
赚取积分