機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
PIC單片機CAN總線通訊匯編程序
PIC單片機CAN總線通訊匯編程序
 更新時間:2009-12-12 11:02:35  點擊數(shù):0
【字體: 字體顏色
該匯編程序?qū)崿F(xiàn)CAN總線通訊發(fā)送緩沖器0向接收緩沖器0發(fā)送數(shù)據(jù)的自測試模式,單片機采用P18F458,其中接收采用中斷方式,發(fā)送采用查詢方式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

;****************PIC單片機CAN總線通訊匯編程序主程序******************
;****************此程序首發(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

  • 上一篇: pic單片機p18f458A/D中斷轉(zhuǎn)換程序
  • 下一篇: 沒有了
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1