久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

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

作者:huqin   來源:本站原創   點擊數:  更新時間:2008年08月15日   【字體:

;該匯編程序實現CAN總線通訊發送緩沖器0向接收緩沖器0發送數據的自測試模式,單片機采用P18F458,其中接收采用中斷方式,發送采用查詢方式,本例的c51程序請打開 http://www.zg4o1577.cn/mcu/555.html ,流程和這個一樣的。

LIST P=18F458
INCLUDE "P18F458.INC"

CAN_FLAG EQU 0X20 ;定義標志寄存器

ORG 0X00
GOTO MAIN
ORG 0X18
GOTO CAN_INTSERVE ;轉向中斷服務子程序
ORG 0X30

;*********初始化子程序***************
INITIAL
BCF TRISB,2
BSF TRISB,3 ;設置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
MOVLW 0X80
MOVWF CANCON ;請求進入CAN配置模式REQOP=100
WAIT
BTFSS CANSTAT,OPMODE2 ;等待進入CAN配置模式OPMODE=100
GOTO WAIT
MOVLW 0X01
MOVWF BRGCON1 ;設置SJW和BRP,SJW=1TQ,BRP=01H
MOVLW 0X90
MOVWF BRGCON2 ;設置Phase_Seg1=3TQ和Prog _Seg=1TQ
MOVLW 0X42
MOVWF BRGCON3 ;設置Phase_Seg2=3TQ
;設置發送郵箱0標識符號和發送的數據
MOVLW 0XFF
MOVWF BSR ;TXB0D0到TXB0D7的地址在F60h以內,需
;要指定BSR
MOVLW 0X08
MOVWF TXB0DLC ;設置數據長度為8個字節
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 ;寫發送緩沖器數據區的數據
MOVLW 0XFF
MOVWF TXB0SIDH
MOVLW 0XE0
MOVWF TXB0SIDL ;設置發送緩沖器0的標準標識符,本程序采用
;標準識符
;設置接收郵箱0的標識符和初始化數據
MOVLW 0XFF
MOVWF RXB0SIDH
MOVLW 0XE0
MOVWF RXB0SIDL ;設置接收緩沖器0的標識符
MOVLW 0XFF
MOVWF RXF0SIDH
MOVLW 0XE0
MOVWF RXF0SIDL ;初始化接收濾波器0
MOVLW 0X00
MOVWF RXM0SIDH
MOVLW 0X00
MOVWF RXM0SIDL ;初始化接收屏蔽
MOVLW 0X20
MOVWF RXB0CON ;僅僅接收標準標識符的有效信息,FILHIT0=0
;表示RXB0采用filter0
MOVLW 0X08
MOVWF RXB0DLC ;設置接收緩沖器0的數據區長度
MOVLW 0X00
MOVWF RXB0D0
MOVWF RXB0D1
MOVWF RXB0D2
MOVWF RXB0D3
MOVWF RXB0D4
MOVWF RXB0D5
MOVWF RXB0D6
MOVWF RXB0D7 ;初始化接收緩沖器0的數據區數據
;初始化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 ;清所有中斷標志
BSF PIE3,RXB0IE ;使能接收緩沖器0的接收中斷
MOVLW 0X01
MOVWF IPR3 ;接收緩沖器0的接收中斷為最高優先級
RETURN

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

;****************PIC單片機CAN總線通訊匯編程序主程序******************
;****************此程序首發于http://www.zg4o1577.cn/ 單片機網 轉載請保留
MAIN NOP
CLRF INTCON ;禁止所有中斷
CALL INITIAL ;初始化
BSF INTCON,GIE
BSF INTCON,PEIE ;使能中斷
MOVLW 0X03
MOVWF TXB0CON ;發送優先級為最高優先級,TXPRI=11
LOOP
BSF TXB0CON,TXREQ ;請求發送,TXREQ=1
WAITE2
BTFSS PIR3,TXB0IF ;等待發送完成
GOTO WAITE2
BCF PIR3,TXB0IF
WAITE3
BTFSS CAN_FLAG,0 ;等待接收數據
GOTO WAITE3
BCF CAN_FLAG,0 ;清接收到標志
BCF TXB0CON,TXREQ ;禁止發送
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 ;用接收數據加1來更新發送數據
GOTO LOOP
RETURN
END
 

關閉窗口
主站蜘蛛池模板: 国产高清视频在线播放 | 爽爽免费视频 | av大片 | 午夜精品久久 | 中文在线视频 | 午夜视频一区二区三区 | 国产精彩视频在线观看 | 中国一级特黄真人毛片 | 亚洲免费视频网站 | 九九热在线视频观看这里只有精品 | 精品国产免费一区二区三区演员表 | 中文字幕av网站 | 日本午夜一区二区三区 | 在线观看亚洲欧美 | 在线观看欧美日韩视频 | 中文字幕国产 | 久久久久久久久蜜桃 | 日本一区二区三区四区 | 激情 婷婷 | 欧美黄色片在线观看 | 在线成人免费视频 | 成人免费看黄网站在线观看 | 久久久久久国产一区二区三区 | 日韩爱爱网 | 色婷婷综合久久久久中文一区二区 | 99久久夜色精品国产亚洲96 | 伊人久久国产 | 日韩中文字幕 | 涩涩导航 | 精品一区二区三区在线视频 | 成人在线观看免费爱爱 | 欧洲精品在线观看 | a毛片视频网站 | 亚洲一区二区三区四区五区午夜 | 在线视频a| 亚洲日韩中文字幕一区 | 在线播放中文字幕 | 亚洲国产精品一区在线观看 | 亚洲男人的天堂网站 | 日韩一区二区在线看 | 91精品观看 |