[CAN-bus/DeviceNet] 有哪位用过PIC18F2580的CAN功能

[复制链接]
4963|6
 楼主| dawai 发表于 2007-2-28 08:45 | 显示全部楼层 |阅读模式
跪请各位帮忙啦
 楼主| dawai 发表于 2007-2-28 09:02 | 显示全部楼层

接收端寄存器什么也收不到啊

我搭建了这样一个硬件电路:用两套PIC18F2580和82C250分别构成发送数据端和接收数据端。发送数据端应该没问题,用示波器可以观察到一串串的波形,经过82C250收发器后,在PIC18F2580接收引脚也看到波形变化,但是在线调试时接收寄存器不变化。
wxj1952 发表于 2007-2-28 13:39 | 显示全部楼层

其实特简单

根本不用示波器。设置好并打开发送中断,发送一帧后,如果发送中断发生,说明发送端正常发出,并且接收端工作正常,已接收到总线上的帧并且回复了ACK。(没有ACK,发送中断是不会发生的。)<br />此时接收端没有产生接收中断或者发送数据没有进入接收缓存,是因为滤波器设置的ID与发送帧ID不一致。检验方法很简单,把接收端滤波器ID设置为全局ID,接收网络上所有帧即可。<br /><br />如果发送中断不发生,那就是你判断错了,你说发送正常?(即使接收端不正常,也不能肯定发送正常。)<br />不过即使那样也很简单,把两个节点的功能换位一下,让B发送,A接收。(凡是初始化正常的节点都能正确识别网络上的帧,并发出ACK信号。)<br /><br />&nbsp;一个节点,不是发送器就是接收器。不在发送状态的节点必是接收器。它自动监视网络工作使得一个正常发送帧完成的节点能够进入中断/停止重发。
 楼主| dawai 发表于 2007-2-28 20:23 | 显示全部楼层

帮我看看吧

谢谢大家帮忙啦。下面分别是发送单片机和接收单片机的程序,肯请帮我看看哪里出错了,<br />//发送数据,第一片PIC18F2580的发送数据程序<br />#include&nbsp;&quot;p18f2580.h&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />char&nbsp;&nbsp;&nbsp;&nbsp;CAN_TX_Adress_H,CAN_TX_Adress_L;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;initial()<br />{<br />//&nbsp;&nbsp;&nbsp;&nbsp;TRISC=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCON=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCON1=0X07;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE1=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE2=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE3=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;initcan()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0CONbits.TXREQ=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CAN_TX_Adress_H=0x33;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CAN_TX_Adress_L=0xe0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CAN_TX_Adress_L=CAN_TX_Adress_L&0xe0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISB=(TRISB|0x08)&0XFB;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANCON=0X80;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((CANSTAT&0X80)==0)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BRGCON1=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BRGCON2=0X90;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BRGCON3=0X42;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0CON=0X03;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0SIDL=CAN_TX_Adress_L&0xe0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0SIDH=CAN_TX_Adress_H;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0DLC=0X08;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D0=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D1=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D2=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D3=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D4=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D5=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D6=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0D7=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;CANCON=0X00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((CANSTAT&0XE0)!=0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;initial();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;initcan();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCONbits.IPEN=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCON=INTCON|0xc0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0CONbits.TXREQ=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0CONbits.TXREQ=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(TXB0CONbits.TXABT==1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D0=0xff;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D1=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D2=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D3=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D4=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D5=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D6=0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0D7=0xff;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXB0CONbits.TXREQ=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />//收数据,另一片18F2580的数据接收程序<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&quot;p18f2580.h&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CAN_RX_Adress_H,CAN_RX_Adress_L;<br />int&nbsp;&nbsp;CAN_FLAG;<br />int&nbsp;&nbsp;i;<br />void&nbsp;InterruptHandlerHigh(void&nbsp;);<br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;initial()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCON=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCON1=0X07;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE1=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE2=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE3=0;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CAN_FLAG=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />void&nbsp;&nbsp;&nbsp;&nbsp;initcan()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TXB0CONbits.TXREQ=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CAN_RX_Adress_H=0x33;<br />&nbsp;&nbsp;&nbsp;&nbsp;CAN_RX_Adress_L=0xe0;<br />&nbsp;&nbsp;&nbsp;&nbsp;CAN_RX_Adress_L=CAN_RX_Adress_L&0xe0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISB=(TRISB|0x08)&0XFB;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANCON=0X80;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((CANSTAT&0X80)==0)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BRGCON1=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BRGCON2=0X90;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BRGCON3=0X42;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0SIDL=CAN_RX_Adress_L&0xe0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0SIDH=CAN_RX_Adress_H;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0CON=0x20;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0DLC=0x08;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D0=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D1=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D2=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D3=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D4=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D5=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D6=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXB0D7=0;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXF0SIDH=CAN_RX_Adress_H;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXF0SIDL=CAN_RX_Adress_L&0xE0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXM0SIDH=0xFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXM0SIDL=0xE0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;CANCON=0X00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while((CANSTAT&0XE0)!=0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PIR3=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;PIE3=PIE3|0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;IPR3=IPR3|0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />#&nbsp;pragma&nbsp;code&nbsp;InterruptVectorHigh=0x08<br />void&nbsp;InterruptVectorHigh&nbsp;(void)<br />{<br />&nbsp;&nbsp;_asm<br />&nbsp;&nbsp;goto&nbsp;InterruptHandlerHigh<br />&nbsp;&nbsp;_endasm<br />}<br /><br />#&nbsp;pragma&nbsp;code<br />#&nbsp;pragma&nbsp;interrupt&nbsp;InterruptHandlerHigh<br />void&nbsp;InterruptHandlerHigh(&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(PIR3bits.RXB0IF==1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CAN_FLAG=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR3bits.RXB0IF=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RXB0CONbits.RXFUL=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;initial();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;initcan();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RCONbits.IPEN=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;INTCON=INTCON|0xc0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(CAN_FLAG=1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=++i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CAN_FLAG=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />急死人啦,各位一定要帮忙啊
motor666 发表于 2007-4-26 10:19 | 显示全部楼层

这样改试试

不要直接用书中的例子,这几个变量要直接赋值:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;INTCON=INTCON|0xc0;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXF0SIDH=CAN_RX_Adress_H;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXF0SIDL=CAN_RX_Adress_L&0xE0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISB=(TRISB|0x08)&0XFB;<br />&nbsp;&nbsp;&nbsp;&nbsp;直接写:RXF0SIDH=0xFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RXF0SIDL=0xE0;&nbsp;等<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;另外:<br />&nbsp;&nbsp;&nbsp;&nbsp;RXM0SIDH=0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;RXM0SIDL=0x0;<br />&nbsp;&nbsp;&nbsp;&nbsp;让所有信息全接收,试试<br />
haididechenai 发表于 2012-4-15 14:55 | 显示全部楼层
我也遇到过着个问题,我最终把82C250换成TJA1050就可以了,具体什么问题   不知道。。。
haididechenai 发表于 2012-4-15 14:55 | 显示全部楼层
我也遇到过着个问题,我最终把82C250换成TJA1050就可以了,具体什么问题   不知道。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部