中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用PIC18F458 的CAN 模塊實現(xiàn)CAN 總線通信

        用PIC18F458 的CAN 模塊實現(xiàn)CAN 總線通信

        作者: 時間:2012-11-27 來源:網(wǎng)絡(luò) 收藏


        2.3 信息的接收
        有2 個具有多重接收濾波器的完全接收緩沖器和1 個單獨信息組合的緩沖器。接收郵箱初始化時,要設(shè)置其標(biāo)識符及相關(guān)的屏蔽寄存器、接收優(yōu)先級等。
        MAB 寄存器接收所有來自總線的下一條信息,RXB0 和RXB1 則接收來自協(xié)議驅(qū)動的完整信息。MAB 接收所有信息, 但是只有滿足過濾條件的信息才被傳送到RXBx 中。

        3 軟件設(shè)計
        下面的程序例程實現(xiàn)的是發(fā)送緩沖器0 向接收緩沖器0 發(fā)送數(shù)據(jù)的自測試模式, 其中接收采用中斷方式,發(fā)送采用查詢方式。該程序?qū)崿F(xiàn)了 單片機CAN 模塊的最小程序, 經(jīng)過適當(dāng)修改即可用于實際工程程序中, 并在實現(xiàn)工程中驗證了它的正確性。
        #include p18f458.h>
        int CAN_FLAG;
        voidinitcan(){
        TRISB=(TRISB|0X08)0XFB;
        CANCON=0X80;
        while(CANSTAT0X80==0)continue;
        BRGCON1=0X01;
        BRGCON2=0X90;
        BRGCON3=0X42;
        TXB0CON=0X03;
        TXB0SIDH=0XFF;
        TXB0SIDL=0XE0;
        TXB0DLC=0X08;
        TXB0D0=0X00;
        TXB0D1=0X01;
        TXB0D2=0X02;
        TXB0D3=0X03;
        TXB0D4=0X04;
        TXB0D5=0X05;
        TXB0D6=0X06;
        TXB0D7=0X07;
        RXB0SIDH=0XFF;
        RXB0SIDL=0XE0;
        RXB0CON=0X20;
        RXB0DLC=0X08;
        RXB0D0=0X00;
        RXB0D1=0X00;
        RXB0D2=0X00;
        RXB0D3=0X00;
        RXB0D4=0X00;
        RXB0D5=0X00;
        RXB0D6=0X00;
        RXB0D7=0X00;
        RXF0SIDH=0XFF;
        RXF0SIDL=0XE0;
        RXM0SIDH=0X00;
        RXM0SIDL=0X00;
        CANCON=0X40;
        while(CANSTAT0X40==0)continue;
        PIR3=0X00;
        PIE3=0X01;
        IPR3=0X01;
        }
        #pragma interrupt can_isr
        #pragma code low_ISR=0x18
        void low_ISR() {
        _asm
        gotocan_isr
        _endasm
        }
        #pragma code
        voidcan_isr() {
        if(PIR3bits.RXB0IF==1)CAN_FLAG=1;
        PIR3bits.RXB0IF=0;
        RXB0CONbits.RXFUL=0;
        }
        main(){
        INTCON=0x00;
        initcan();
        W D T C O N = 0 ;
        INTCON=0xc0;
        while(1) {
        TXB0CONbits.TXREQ=1;
        while(PIR3bits.TXB0IF!=1)continue;
        while(CAN_FLAG==0)continue;
        CAN_FLAG=0;
        TXB0CONbits.TXREQ=0;
        TXB0D0=RXB0D0+1;
        TXB0D1=RXB0D1+1;
        TXB0D2=RXB0D2+1;
        TXB0D3=RXB0D3+1;
        TXB0D4=RXB0D4+1;
        TXB0D5=RXB0D5+1;
        TXB0D6=RXB0D6+1;
        TXB0D7=RXB0D7+1;
        }
        }


        上一頁 1 2 下一頁

        關(guān)鍵詞: PIC18F458 CAN模塊 總線通信

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉