在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > 調(diào)試好的CAN總線程序(匯編1)

            調(diào)試好的CAN總線程序(匯編1)

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

            系統(tǒng)can地址為550,用于can系統(tǒng)測試,應(yīng)用T0定時器每隔1s向can總線發(fā)送一組數(shù)據(jù):數(shù)據(jù)長度為8個字節(jié),
            首字節(jié)為05H,第二個字節(jié)為累加變量,每秒鐘數(shù)值增加1,

            本文引用地址:http://www.biyoush.com/article/201612/330387.htm

            CONTROLLER_BASEEQU7E00H;SJA1000的片選地址

            RCV_GOODBIT0FH;成功的接收一幀標(biāo)志
            SEC_FLAGBIT010H;一秒到標(biāo)志
            ERR_FLAGBIT011H;監(jiān)測到錯誤標(biāo)志

            SAVE_INT_INFODATA032H;保存SJA1000中斷寄存器的內(nèi)容

            SEND_DATA_BUF1DATA040H;發(fā)送緩沖區(qū)
            SEND_DATA_BUF2DATA041H
            SEND_DATA_BUF3DATA042H
            SEND_DATA_BUF4DATA043H
            SEND_DATA_BUF5DATA044H
            SEND_DATA_BUF6DATA045H
            SEND_DATA_BUF7DATA046H
            SEND_DATA_BUF8DATA047H
            SEND_DATA_BUF9DATA048H
            SEND_DATA_BUF10DATA049H

            RCV_DATA_BUF1DATA050H;接收緩沖區(qū)
            RCV_DATA_BUF2DATA051H
            RCV_DATA_BUF3DATA052H
            RCV_DATA_BUF4DATA053H
            RCV_DATA_BUF5DATA054H
            RCV_DATA_BUF6DATA055H
            RCV_DATA_BUF7DATA056H
            RCV_DATA_BUF8DATA057H
            RCV_DATA_BUF9DATA058H
            RCV_DATA_BUF10DATA059H

            ERROR_STATUSDATA07CH;錯誤狀態(tài)表示
            TEST_DATADATA07FH;測試發(fā)送數(shù)據(jù)

            ;程序開始
            ORG0000H
            LJMPMAIN;運行主程序

            ORG0003H
            LJMPBCAN_INT0;中斷方式訪問SJA1000程序

            ORG000BH
            LJMPT0_INTERRUPT;定時器0中斷

            ORG0100H;程序開始
            MAIN:
            MOVR0,#07fH
            CLRA
            MOV@R0,A
            DJNZR0,$-1
            MOV@R0,A
            MOVSP,#60H;設(shè)置SP
            CLRP2.0;SJA1000退出硬件復(fù)位模式

            LCALLSJA1000_INT0;初始化SJA1000
            LCALLT0_INIT
            CLRP3.4;點亮指示燈
            SETBPX0
            SETBIT0
            SETBEX0
            SETBET0
            SETBTR0
            SETBEA

            LOOPER:
            JNBRCV_GOOD,LOOPER2;sja1000成功接收一幀,通知CPU處理
            CLRRCV_GOOD
            LCALLRCVDATA_PRG
            LOOPER2:
            JNBSEC_FLAG,LOOPER3;一秒時間到,每秒發(fā)送一次
            CLRSEC_FLAG
            CLRP3.5;點亮指示燈
            LCALLSENDDATA_PRG
            LOOPER3:
            JNBERR_FLAG,LOOPER4;錯誤標(biāo)志,錯誤處理
            CLRERR_FLAG
            LCALLERR_PRG
            LOOPER4:
            AJMPLOOPER

            ;;;;;;;;;初始化SJA1000;;

            SJA1000_INT0:
            LCALLBCAN_CREATE_COMMUNATION ;調(diào)用SJA1000接口測試函數(shù)
            MOVR7,#04
            LCALLBCAN_SET_BANDRATE;設(shè)置波特率為100k
            MOVR7,#0A8H;設(shè)置接收報文ID
            MOVR6,#0FFH
            LCALLBCAN_SET_OBJECT
            MOVR7,#0AAH;設(shè)置輸出控制、時鐘分頻;正常輸出模式
            MOVR6,#048H;使能內(nèi)部比較器、禁止CLKOUT
            LCALLBCAN_SET_OUTCLK;
            LCALLBCAN_QUIT_RETMODEL;退出復(fù)位狀態(tài)
            MOVDPTR,#REG_CONTROL;開放SJA1000內(nèi)部功能中斷
            MOVA,#01EH;中斷開放
            MOVX@DPTR,A
            CLRF0
            RET

            ;;;;;錯誤信息處理;;;;;;;;;;;;
            ERR_PRG:
            LCALLBCAN_ENTER_RETMODEL;進入復(fù)位模式
            LCALLSJA1000_INT0 ;
            MOVERROR_STATUS,#0FCH
            RET

            ;;;;;;;;;接收數(shù)據(jù)處理部分;;;;;
            RCVDATA_PRG:
            MOVR0,# RCV_DATA_BUF1;微處理器接收首地址
            LCALLBCAN_DATA_RECEIVE;調(diào)用接收數(shù)據(jù)子程序
            MOVR7,#04H;釋放接收緩沖區(qū)
            LCALLBCAN_CMD_PRG;
            RET
            ;;;;;;;;;;;;;;;;;;控制SJA1000向CAN總線發(fā)送數(shù)據(jù)處理部分;;;;;;;;;;;;;;;
            SENDDATA_PRG:
            MOVR0,#SEND_DATA_BUF1
            MOV@R0,#02H
            INCR0
            MOV@R0,#08H
            INCR0
            MOV@R0,#05H
            MOVA,TEST_DATA
            INCR0
            MOV@R0,A
            MOVR0,#SEND_DATA_BUF1
            LCALLBCAN_DATA_WRITE;將要發(fā)送的數(shù)據(jù)送入發(fā)送緩沖區(qū)
            MOVR7,#01
            LCALLBCAN_CMD_PRG
            RET

            ;;;;;;;;;;定時器0初始化;;;;;;;;;;
            T0_INIT:
            MOVA,TMOD
            ANLA,#0F0H
            ORLA,#01H
            MOVTMOD,A;T0工作在方式1
            MOVTH0,#0FCH;定時周期1MS
            MOVTL0,#066H
            MOV3AH,#00H
            RET

            ;;;;;;;;;外部中斷0;;;;;;;;;;;
            BCAN_INT0:
            pushDPH
            PUSHDPL
            PUSHPSW;PSW,ACC入棧
            PUSHACC
            USING3;應(yīng)用寄存器第3組
            MOVDPTR,#REG_INTERRUPT;讀中斷寄存器
            MOVXA,@DPTR;
            MOVSAVE_INT_INFO,A;保存中斷寄存器的內(nèi)容
            JNBACC.0,BCAN_INT1;接收中斷
            SETBRCV_GOOD;置位接收標(biāo)志

            BCAN_INT1:
            MOVA,SAVE_INT_INFO
            JNBACC.2,BCAN_INT2;錯誤中斷
            SETBERR_FLAG;置位錯誤標(biāo)志
            BCAN_INT2:
            POPACC
            POPPSW
            POPDPL
            POPDPH
            RETI
            ;;;;;;;;定時器0中斷;;;;
            T0_INTERRUPT:
            pushDPH
            PUSHDPL
            PUSHPSW;PSW、ACC入棧
            PUSHACC
            USING2
            MOVTH0,#80H;設(shè)置定時周期0.3S
            MOVTL0,#26H
            INC3AH
            MOVA,3AH
            CJNEA,#23H,T0_QUIT;判斷1秒時間是否到
            MOV3AH,#00H
            INCTEST_DATA;測試發(fā)送的數(shù)據(jù),每1秒加1
            SETBSEC_FLAG;置位1秒到標(biāo)志
            T0_QUIT:
            POPACC
            POPPSW
            POPDPL
            POPDPH
            RETI

            BCAN_ENTER_RETMODEL:
            MOVDPTR,#REG_CONTROL;控制寄存器訪問
            MOVXA,@DPTR;
            ORLA,#01H;置位復(fù)位請求
            MOVX@DPTR,A;
            CLRF0
            MOVXA,@DPTR;驗證復(fù)位是否寫入
            JBACC.0,BCAN_ER_QUIT
            SETBF0;復(fù)位不成功
            BCAN_ER_QUIT:
            RET



            關(guān)鍵詞: CAN總線程序匯

            評論


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

            關(guān)閉