在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設計應用 > PIC單片機can總線協(xié)議收發(fā)編程

            PIC單片機can總線協(xié)議收發(fā)編程

            作者: 時間:2012-12-31 來源:網(wǎng)絡 收藏

            //該程序運行在pic單片機p18f458上實現(xiàn)發(fā)送緩沖器0向接收緩沖器0發(fā)送數(shù)據(jù)的自測試模式,其中接收采用中斷方式
            //發(fā)送采用查詢方式
            #include"p18f458.h"
            intCAN_FLAG;//定義標志寄存器
            //**************初始化子程序***************
            // http://www.51hei.com單片機網(wǎng)提供有問題請聯(lián)系我們
            voidinitcan()
            {
            TRISB=(TRISB|0X08)0XFB;//設置CANRX/RB3為輸入,CANTX/RB2為輸出

            //設置CAN的波特率為125K,在Fosc=4M時,Tbit=8us,假設BRP=01h
            //則TQ=[2*(1+BRP)]/Fosc=2*(1+1)/4=1us。
            //NOMINAL BIT RATE=8TQ,SJW=1,Sync_Seg=1TQ,Prog _Seg=1TQ,Phase_Seg1=3TQ,Phase_Seg2=3TQ
            CANCON=0X80;//請求進入CAN配置模式REQOP=100
            while(CANSTAT0X80==0){;}//等待進入CAN配置模式OPMODE=100
            BRGCON1=0X01;//設置SJW和BRP,SJW=1TQ,BRP=01H
            BRGCON2=0X90;//設置Phase_Seg1=3TQ和Prog _Seg=1TQ
            BRGCON3=0X42;//設置Phase_Seg2=3TQ

            //設置發(fā)送郵箱0標識符號和發(fā)送的數(shù)據(jù)
            TXB0CON=0X03;//發(fā)送優(yōu)先級為最高優(yōu)先級,TXPRI=11
            TXB0SIDH=0XFF;//設置發(fā)送緩沖器0的標準標識符,本程序采用標準識符
            TXB0SIDL=0XE0;
            TXB0DLC=0X08;//設置數(shù)據(jù)長度為8個字節(jié)
            TXB0D0=0X00;//寫發(fā)送緩沖器數(shù)據(jù)區(qū)的數(shù)據(jù)
            TXB0D1=0X01;
            TXB0D2=0X02;
            TXB0D3=0X03;
            TXB0D4=0X04;
            TXB0D5=0X05;
            TXB0D6=0X06;
            TXB0D7=0X07;

            //設置接收郵箱0的標識符和初始化數(shù)據(jù)
            RXB0SIDH=0XFF;//設置接收緩沖器0的標識符
            RXB0SIDL=0XE0;
            RXB0CON=0X20;//僅僅接收標準標識符的有效信息,F(xiàn)ILHIT0=0表示RXB0采用filter0
            RXB0DLC=0X08;//設置接收緩沖器0的數(shù)據(jù)區(qū)長度
            RXB0D0=0X00;//初始化接收緩沖器0的數(shù)據(jù)區(qū)數(shù)據(jù)
            RXB0D1=0X00;
            RXB0D2=0X00;
            RXB0D3=0X00;
            RXB0D4=0X00;
            RXB0D5=0X00;
            RXB0D6=0X00;
            RXB0D7=0X00;

            //初始化接收濾波器0和接收屏蔽,
            RXF0SIDH=0XFF;
            RXF0SIDL=0XE0;
            RXM0SIDH=0X00;
            RXM0SIDL=0X00;

            //初始化CAN模塊的I/O控制寄存器
            //CIOCON=0X00;

            //使CAN進入某種工作模式模式
            CANCON=0X00;//=0X40,進入自測試模式;=0x00,正常操作模式
            while(CANSTAT0XE0!=0){;}
            //while(CANSTAT0X40==0){;}

            //初始化CAN的中斷
            PIR3=0X00;//清所有中斷標志
            PIE3=0X01;//使能接收緩沖器0的接收中斷
            IPR3=0X01;//接收緩沖器0的接收中斷為最高優(yōu)先級
            }

            //*********接收緩沖器0接收中斷服務程序***********
            #pragmainterruptcan_isr
            #pragmacode low_ISR=0x18
            void low_ISR()
            {
            _asm
            goto can_isr
            _endasm
            }
            #pragmacode

            void can_isr()
            {
            if(PIR3bits.RXB0IF==1)CAN_FLAG=1;
            PIR3bits.RXB0IF=0;//清接收中斷標志
            RXB0CONbits.RXFUL=0;//打開接收緩沖器來接收新信息
            }

            //****************主程序**can總線****************
            main()
            {
            INTCON=0x00;//禁止所有中斷
            initcan();
            WDTCON=0;//=1,看門狗使能;=0,禁止看門狗
            INTCON=0xc0;//使能中斷
            while(1)
            {
            TXB0CONbits.TXREQ=1;//請求發(fā)送,TXREQ=1
            while(PIR3bits.TXB0IF!=1){;}//等待發(fā)送完成
            while(CAN_FLAG==0){;}//等待接收數(shù)據(jù)
            CAN_FLAG=0;//清接收到標志
            TXB0CONbits.TXREQ=0;//禁止發(fā)送
            TXB0D0=RXB0D0+1;//用接收數(shù)據(jù)加1來更新發(fā)送數(shù)據(jù)
            TXB0D1=RXB0D1+1;
            TXB0D2=RXB0D2+1;
            TXB0D3=RXB0D3+1;
            TXB0D4=RXB0D4+1;
            TXB0D5=RXB0D5+1;
            TXB0D6=RXB0D6+1;
            TXB0D7=RXB0D7+1;

            }
            }



            評論


            相關(guān)推薦

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

            關(guān)閉