在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

            作者: 時間:2012-11-27 來源:網絡 收藏


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

            3 軟件設計
            下面的程序例程實現(xiàn)的是發(fā)送緩沖器0 向接收緩沖器0 發(fā)送數(shù)據(jù)的自測試模式, 其中接收采用中斷方式,發(fā)送采用查詢方式。該程序實現(xiàn)了 單片機CAN 模塊的最小程序, 經過適當修改即可用于實際工程程序中, 并在實現(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 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉