刚写的CAN接收测试程序
<p>这是接收测试程序,上电后就等待接收,收到数据后发送自串口(SJA1000控制器+89S52)BASIC CAN</p><p># include<reg51.h><br/># include<absacc.h><br/># define uchar unsigned char<br/># define uint unsigned int<br/># define CR XBYTE[0X00]<br/># define CMR XBYTE[0X01]<br/># define SR XBYTE[0X02]<br/># define IR XBYTE[0X03]<br/># define CDR XBYTE[0X1F]<br/># define ACR XBYTE[0X04]<br/># define AMR XBYTE[0X05]<br/># define BTR0 XBYTE[0X06]<br/># define BTR1 XBYTE[0X07]<br/># define OCR XBYTE[0X08]<br/># define Test XBYTE[0X09]<br/># define TxBufID1 XBYTE[0X14]<br/># define TxBufID2 XBYTE[0X15]<br/># define TxBufDat1 XBYTE[0X16]<br/># define TxBufDat2 XBYTE[0X17]<br/># define TxBufDat3 XBYTE[0X18]<br/># define TxBufDat4 XBYTE[0X19]<br/># define TxBufDat5 XBYTE[0X1a]<br/># define TxBufDat6 XBYTE[0X1b]<br/># define TxBufDat7 XBYTE[0X1c]<br/># define TxBufDat8 XBYTE[0X1d]</p><p>void INITCAN(){<br/>while (Test == 0xaa)<br/>{<br/> Test =0xaa;<br/> }</p><p> while((CR&0x01) != 0x01)<br/> {<br/> CR = 0x03;//进入复位模式<br/> }<br/> while(CDR!=0x48)<br/> {<br/> CDR = 0x48;//Basic CAN模式<br/> }<br/> while(ACR!=0xa1)<br/> {<br/> ACR =0xa1;</p><p> }</p><p> while(AMR!=0xff)<br/> {<br/> AMR = 0xff;<br/> }</p><p> while(BTR0!=0x01)<br/> {<br/> BTR0 = 0x01;<br/> }</p><p> while(BTR1!=0x1c)<br/> {<br/> BTR1 = 0x1c;//250K的BPS,16M的晶振<br/> }</p><p> while(OCR!=0x1a)<br/> {<br/> OCR = 0x1a;<br/> }</p><p><br/> while(0x00!=(CR&0x01))<br/> {<br/> CR = 0x06; //退出复位模式;<br/> }<br/> }</p><p></p><p>void main( ){<br/> uchar Temp,j;<br/> uint i;<br/> uchar buffer[10];<br/> TMOD=0x20;<br/> TL1=0xfd;TH1=0xfd;<br/> SCON=0xd8;PCON=0x00;<br/> TR1=1;<br/> for(i=0;i<0xfff0;i++);<br/> INITCAN();<br/> Temp = SR;<br/> SBUF=Temp;<br/> while( TI==0);<br/> TI=0;<br/> do<br/> {<br/> }while((IR&0x01)!=0x01);</p><p> Temp = SR;<br/> SBUF=Temp;<br/> while( TI==0);<br/> TI=0;<br/> buffer[0]=TxBufID1;<br/> buffer[1]=TxBufID2;<br/> buffer[2]=TxBufDat1;<br/> buffer[3]=TxBufDat2;<br/> buffer[4]=TxBufDat3;<br/> buffer[5]=TxBufDat4;<br/> buffer[6]=TxBufDat5;<br/> buffer[7]=TxBufDat6;<br/> buffer[8]=TxBufDat7;<br/> buffer[9]=TxBufDat8;<br/> for(j=0;j<10;j++){<br/> Temp = buffer[j];<br/> SBUF=Temp;<br/> while( TI==0);<br/> TI=0;<br/> }<br/> Temp = SR;<br/> SBUF=Temp;<br/> while( TI==0);<br/> TI=0;<br/> }<br/></p> 大家在看贴子的时候,无论是遇到了什么问题还是有什么感想希望都说出来,如果是有什么问题本版主虽才疏学潜担一定会尽力为你解答,回帖是你最好的支持,谢谢! 支持 非常感谢,还希望楼主把电路图也贴出来![em17] 谢谢斑竹 好同志,好版主。改天好好给你歌功颂德以下哈。 非常感谢的,顶一个先页:
[1]