⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can好文[转载](梦醒了).htm

📁 现场总线can的详细资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
        XBYTE[SJA_REG_BaseADD + 0x15]<BR>    #define REG_DataBuffer2 
        XBYTE[SJA_REG_BaseADD + 0x16]<BR>    #define REG_DataBuffer3 
        XBYTE[SJA_REG_BaseADD + 0x17]<BR>    #define REG_DataBuffer4 
        XBYTE[SJA_REG_BaseADD + 0x18]<BR>    #define REG_DataBuffer5 
        XBYTE[SJA_REG_BaseADD + 0x19]<BR>    #define REG_DataBuffer6 
        XBYTE[SJA_REG_BaseADD + 0x1a]<BR>    #define REG_DataBuffer7 
        XBYTE[SJA_REG_BaseADD + 0x1b]<BR>    #define REG_DataBuffer8 
        XBYTE[SJA_REG_BaseADD + 0x1c]<BR>    <BR>    <BR>    #define REG_RBSA 
        XBYTE[SJA_REG_BaseADD + 0x1e]<BR>    #define REG_CDR 
        XBYTE[SJA_REG_BaseADD + 0x1f]<BR>    #define REG_Receive_Counter 
        XBYTE[SJA_REG_BaseADD + 0x1d]<BR>    <BR>    #define OK 1<BR>    #define 
        Fail 0<BR>    #define ON 1<BR>    #define OFF 0<BR>    #define True 
        1<BR>    #define False 0<BR>    <BR>    sbit SJARst = P2 ^ 6; 
        //复位控制<BR>    sbit LED0 = P1 ^ 0;<BR>    sbit LED1 = P1 ^ 1;<BR>    sbit 
        Key0 = P1 ^ 2;<BR>    sbit Key1 = P1 ^ 3;<BR>    sbit Key2 = P1 ^ 
        4;<BR>    sbit Key3 = P1 ^ 5;<BR>    <BR>    bit step_flg;<BR>    bit 
        Tx_flg;<BR>    bit Rx_flg;<BR>    <BR>    unsigned char 
        step_counter;<BR>    unsigned char Tx_counter;<BR>    unsigned char 
        PC_RX_Buffer;<BR>    unsigned char temp_data1;<BR>    unsigned char 
        Rx_Buffer[6];<BR>    <BR>    void MCU_Init(void);<BR>    void 
        SJA_Init(void);<BR>    void send(unsigned char S_Data);<BR>    void 
        Serial(void);<BR>    void Delay(unsigned char Delay_time);<BR>    void 
        step(void);<BR>    <BR>    <BR>    <BR>    *******************************************************<BR>    <BR>    以下为c的主程序<BR>    copyright 
        by 
        alloy<BR>    <BR>    *******************************************************<BR>    #include 
        &lt;stdio.h&gt;<BR>    #include &lt;string.h&gt;<BR>    #include 
        &lt;REG51.h&gt;<BR>    #include &lt;TxMCU.h&gt;<BR>    #include 
        &lt;absacc.h&gt;<BR>    main()<BR>    {<BR>    <BR>     unsigned char 
        i;<BR>     MCU_Init();<BR>     SJA_Init();<BR>     REG_MODE = 0x01; 
        //进入复位模式<BR>    <BR>     temp_data1 = REG_MODE;<BR>     temp_data1 = 
        temp_data1 &amp; 0x01;<BR>     if(temp_data1 == 0x01) //在复位模式中<BR>     
        {<BR>     REG_BTR0 = 0x85;<BR>     REG_BTR1 = 0xb4; //100k<BR>     
        REG_OCR = 0x1a;<BR>     REG_CDR = 0xc0;<BR>     REG_RBSA = 
        0x00;<BR>    <BR>     REG_ACR0 = 0xff;<BR>     REG_ACR1 = 0xff;<BR>     
        REG_ACR2 = 0xff;<BR>     REG_ACR3 = 0xff;<BR>    <BR>     REG_AMR0 = 
        0xff;<BR>     REG_AMR1 = 0xff;<BR>     REG_AMR2 = 0xff;<BR>     REG_AMR3 
        = 0xff;<BR>    <BR>     REG_IR_ABLE = 0xff;<BR>     }<BR>     REG_MODE = 
        0x0c; //进入自接收模式<BR>     REG_MODE = 0x0c;<BR>    <BR>     for(i = 
        0;i&lt;100;i++);<BR>     temp_data1 = REG_Receive_Counter;<BR>     
        send(temp_data1);<BR>     for(;;)<BR>     {<BR>     while(Tx_flg == 
        False);<BR>     Tx_flg = False;<BR>     Tx_counter++;<BR>     
        send(Tx_counter);<BR>     temp_data1 = REG_SR;<BR>     while((temp_data1 
        &amp; 0x10) == 0x10);<BR>     temp_data1 = REG_SR;<BR>     
        if((temp_data1 &amp; 0x04) == 0x04)<BR>     {<BR>     REG_RxBuffer0 = 
        0x08; //标准帧,长度为8<BR>     REG_RxBuffer1 = 0xff;<BR>     REG_RxBuffer2 = 
        0xff;<BR>    <BR>     REG_RxBuffer3 = 0x01;<BR>     REG_RxBuffer4 = 
        0x02;<BR>     REG_DataBuffer1 = 0x03;<BR>     REG_DataBuffer2 = 
        0x04;<BR>     REG_DataBuffer3 = 0x05;<BR>     REG_DataBuffer4 = 
        0x06;<BR>     REG_DataBuffer5 = 0x07;<BR>     REG_DataBuffer6 = 
        0x08;<BR>     REG_DataBuffer7 = 0x09;<BR>     REG_DataBuffer8 = 
        0x0a;<BR>     }<BR>     REG_CMD = 0x10;<BR>     temp_data1 = 
        REG_SR;<BR>     temp_data1 = temp_data1 &amp; 0x20;<BR>     
        while(temp_data1 == 0x20) //检查是否发送完成<BR>     {<BR>     
        //send(0xaa);<BR>     temp_data1 = REG_ECC;<BR>     
        send(temp_data1);<BR>     temp_data1 = REG_SR;<BR>     temp_data1 = 
        temp_data1 &amp; 0x20;<BR>     //send(temp_data1);<BR>     
        }<BR>    <BR>     send(0x66);<BR>     temp_data1 = REG_ALC;<BR>     
        send(temp_data1);<BR>     temp_data1 = REG_ECC;<BR>     
        send(temp_data1);<BR>     temp_data1 = REG_SR;<BR>     
        send(temp_data1);<BR>     temp_data1 = REG_Receive_Counter;<BR>     
        send(temp_data1);<BR>    <BR>     PC_RX_Buffer = 0x77;<BR>     LED0 = 
        ~LED0;<BR>    <BR>    // Tx_counter = 0x00;<BR>     
        }<BR>    }<BR>    <BR>    void MCU_Init(void)<BR>    {<BR>     SJARst = 
        1;<BR>     LED0 = OFF;<BR>     LED1 = OFF;<BR>     PC_RX_Buffer = 
        0x77;<BR>     step_counter = 0x00;<BR>     step_flg = False;<BR>     
        Tx_flg = False;<BR>     temp_data1 = 0x00;<BR>     TMOD = 0x20;<BR>     
        TH1 = 0xff;<BR>     TL1 = 0xff;<BR>     TR1 = 1;<BR>     SCON = 
        0x50;<BR>     PCON = 0x80;<BR>     EA = 1;<BR>     ES = 1;<BR>     
        Tx_counter = 0x00;<BR>    <BR>    }<BR>    <BR>    void 
        SJA_Init(void)<BR>    {<BR>     unsigned char i;<BR>     for(i = 0;i 
        &lt; 125;i++);<BR>     SJARst = 0;<BR>     for(i = 0;i &lt; 
        125;i++);<BR>     SJARst = 1;<BR>     for(i = 0;i &lt; 
        125;i++);<BR>    }<BR>    <BR>    void send(unsigned char 
        S_Data)<BR>    {<BR>     SBUF = S_Data;<BR>     while(TI == 0);<BR>     
        TI =0;<BR>    }<BR>    <BR>    void Serial() interrupt 4 using 
        2<BR>    {<BR>    <BR>     if(RI == 1)<BR>     {<BR>     PC_RX_Buffer = 
        SBUF;<BR>     RI = 0;<BR>     if(PC_RX_Buffer == 0xaa)<BR>     {<BR>     
        send(0x13);<BR>     Tx_flg = True;<BR>     PC_RX_Buffer = 0x77;<BR>     
        }<BR>     else if(PC_RX_Buffer == 0x55)<BR>     {<BR>     
        send(0x14);<BR>     Rx_flg = True;<BR>     PC_RX_Buffer = 0x77;<BR>     
        }<BR>     else<BR>     {<BR>     send(0x15);<BR>     PC_RX_Buffer = 
        0x77;<BR>     }<BR>     }<BR>    <BR>    }另外,我给大家推荐一本书,还不错的 
        北航出版的《现场总线CAN原理与应用技<BR>术》(饶运涛等) <BR><BR>(文章推荐人:ywgcat) 
      <BR><BR></BLOCKQUOTE></TD></TR>
  <TR>
    <TD width="100%">
      <P align=center> </P></TD></TR></TBODY></TABLE><A 
href="http://www.daxia.com/bbs" target=_blank>返回大虾论坛</A> <A 
href="http://www.daxia.com/" target=_blank>返回首页</A> 
</CENTER></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -