在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計應(yīng)用 > PIC單片機CAN總線通訊匯編程序

            PIC單片機CAN總線通訊匯編程序

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

            ;該實現(xiàn)發(fā)送緩沖器0向接收緩沖器0發(fā)送數(shù)據(jù)的自測試模式,單片機采用P18F458,其中接收采用中斷方式,發(fā)送采用查詢方式,本例的c51程序請打開 http://www.51hei.com/mcu/555.html,流程和這個一樣的。

            LIST P=18F458
            INCLUDE "P18F458.INC"

            CAN_FLAG EQU 0X20 ;定義標(biāo)志寄存器

            ORG 0X00
            GOTO MAIN
            ORG 0X18
            GOTO CAN_INTSERVE ;轉(zhuǎn)向中斷服務(wù)子程序
            ORG 0X30

            ;*********初始化子程序***************
            INITIAL
            BCF TRISB,2
            BSF TRISB,3 ;設(shè)置CANRX/RB3為輸入
            ;CANTX/RB2為輸出
            ;設(shè)置CAN的波特率為125K,在Fosc=4M時,Tbit=8us,假設(shè)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
            MOVLW 0X80
            MOVWF CANCON ;請求進入CAN配置模式REQOP=100
            WAIT
            BTFSS CANSTAT,OPMODE2 ;等待進入CAN配置模式OPMODE=100
            GOTO WAIT
            MOVLW 0X01
            MOVWF BRGCON1 ;設(shè)置SJW和BRP,SJW=1TQ,BRP=01H
            MOVLW 0X90
            MOVWF BRGCON2 ;設(shè)置Phase_Seg1=3TQ和Prog _Seg=1TQ
            MOVLW 0X42
            MOVWF BRGCON3 ;設(shè)置Phase_Seg2=3TQ
            ;設(shè)置發(fā)送郵箱0標(biāo)識符號和發(fā)送的數(shù)據(jù)
            MOVLW 0XFF
            MOVWF BSR ;TXB0D0到TXB0D7的地址在F60h以內(nèi),需
            ;要指定BSR
            MOVLW 0X08
            MOVWF TXB0DLC ;設(shè)置數(shù)據(jù)長度為8個字節(jié)
            MOVLW 0X00
            MOVWF TXB0D0
            MOVLW 0X01
            MOVWF TXB0D1
            MOVLW 0X02
            MOVWF TXB0D2
            MOVLW 0X03
            MOVWF TXB0D3
            MOVLW 0X04
            MOVWF TXB0D4
            MOVLW 0X05
            MOVWF TXB0D5
            MOVLW 0X06
            MOVWF TXB0D6
            MOVLW 0X07
            MOVWF TXB0D7 ;寫發(fā)送緩沖器數(shù)據(jù)區(qū)的數(shù)據(jù)
            MOVLW 0XFF
            MOVWF TXB0SIDH
            MOVLW 0XE0
            MOVWF TXB0SIDL ;設(shè)置發(fā)送緩沖器0的標(biāo)準(zhǔn)標(biāo)識符,本程序采用
            ;標(biāo)準(zhǔn)識符
            ;設(shè)置接收郵箱0的標(biāo)識符和初始化數(shù)據(jù)
            MOVLW 0XFF
            MOVWF RXB0SIDH
            MOVLW 0XE0
            MOVWF RXB0SIDL ;設(shè)置接收緩沖器0的標(biāo)識符
            MOVLW 0XFF
            MOVWF RXF0SIDH
            MOVLW 0XE0
            MOVWF RXF0SIDL ;初始化接收濾波器0
            MOVLW 0X00
            MOVWF RXM0SIDH
            MOVLW 0X00
            MOVWF RXM0SIDL ;初始化接收屏蔽
            MOVLW 0X20
            MOVWF RXB0CON ;僅僅接收標(biāo)準(zhǔn)標(biāo)識符的有效信息,F(xiàn)ILHIT0=0
            ;表示RXB0采用filter0
            MOVLW 0X08
            MOVWF RXB0DLC ;設(shè)置接收緩沖器0的數(shù)據(jù)區(qū)長度
            MOVLW 0X00
            MOVWF RXB0D0
            MOVWF RXB0D1
            MOVWF RXB0D2
            MOVWF RXB0D3
            MOVWF RXB0D4
            MOVWF RXB0D5
            MOVWF RXB0D6
            MOVWF RXB0D7 ;初始化接收緩沖器0的數(shù)據(jù)區(qū)數(shù)據(jù)
            ;初始化CAN模塊的I/O控制寄存器
            MOVLW 0X00
            MOVWF CIOCON
            ;使CAN進入某種工作模式模式
            MOVLW 0X00
            MOVWF CANCON ;=0X40,進入自測試模式;
            ;=0x00,正常操作模式
            WAIT1
            MOVF CANSTAT
            ANDLW 0XE0
            SUBLW 0X00
            BTFSS STATUS,Z ;等待進入CAN正常操作模式OPMODE=000
            ;或測試模式OPMODE=010
            GOTO WAIT1
            ;初始化CAN的中斷
            MOVLW 0X00
            MOVWF PIR3 ;清所有中斷標(biāo)志
            BSF PIE3,RXB0IE ;使能接收緩沖器0的接收中斷
            MOVLW 0X01
            MOVWF IPR3 ;接收緩沖器0的接收中斷為最高優(yōu)先級
            RETURN

            ;*********接收緩沖器0接收中斷服務(wù)程序***********
            CAN_INTSERVE
            BTFSS PIR3,RXB0IF
            GOTO ERR_EXIT
            BSF CAN_FLAG,0
            BCF PIR3,RXB0IF ;清接收中斷標(biāo)志
            BCF RXB0CON,RXFUL ;打開接收緩沖器來接收新信息
            ERR_EXIT
            RETFIE

            ;****************主程序******************
            ;****************此程序首發(fā)于http://www.51hei.com/ 單片機網(wǎng) 轉(zhuǎn)載請保留
            MAIN NOP
            CLRF INTCON ;禁止所有中斷
            CALL INITIAL ;初始化
            BSF INTCON,GIE
            BSF INTCON,PEIE ;使能中斷
            MOVLW 0X03
            MOVWF TXB0CON ;發(fā)送優(yōu)先級為最高優(yōu)先級,TXPRI=11
            LOOP
            BSF TXB0CON,TXREQ ;請求發(fā)送,TXREQ=1
            WAITE2
            BTFSS PIR3,TXB0IF ;等待發(fā)送完成
            GOTO WAITE2
            BCF PIR3,TXB0IF
            WAITE3
            BTFSS CAN_FLAG,0 ;等待接收數(shù)據(jù)
            GOTO WAITE3
            BCF CAN_FLAG,0 ;清接收到標(biāo)志
            BCF TXB0CON,TXREQ ;禁止發(fā)送
            INCF RXB0D0,0
            MOVWF TXB0D0
            INCF RXB0D1,0
            MOVWF TXB0D1
            INCF RXB0D2,0
            MOVWF TXB0D2
            INCF RXB0D3,0
            MOVWF TXB0D3
            INCF RXB0D4,0
            MOVWF TXB0D4
            INCF RXB0D5,0
            MOVWF TXB0D5
            INCF RXB0D6,0
            MOVWF TXB0D6
            INCF RXB0D7,0
            MOVWF TXB0D7 ;用接收數(shù)據(jù)加1來更新發(fā)送數(shù)據(jù)
            GOTO LOOP
            RETURN
            END



            評論


            相關(guān)推薦

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

            關(guān)閉