ANSITION: MOV DPTR, #SR; 狀態寄存器 MOVX A, @DPTR; JNB ACC.0, CAN_QUIT; 是否接收到信息,無數據則退出轉換程序 CAN-RS485_HANDLE: MOV DPTR, #CANR ;接收緩沖區首地址 MOVX A , @DPTR ;接收幀的格式 JNB ACC.6 , RECEIVE _ FRAME ;RTR=1則報文是遠程請求幀 LCALL TRANSMIT_ DATA ;發送對方請求的數據 LJMP CAN_QUIT ;退出轉換程序 RECEIVE_ FRAME: MOVX A, @DPTR; ANL A, #0FH; ADD A, #05H ;獲得接收數據的長度 MOV R7, A MOV R0,#43H ;設定MCU接收數據緩沖區 DATAFRAME: MOVX A, @DPTR ;接收數據 MOV @R0, A LCALL RS485_SEND ;將有效信息通過MAX485轉發到RS-485總線 INC DPTR INC R0 DJNZ R7, DATAFRAME ;判斷接收是否結束 RECOUT: MOV DPTR, #CMR MOV A, #04H ;釋放接收緩沖區 MOVX @DPTR, A CAN_QUIT: RET ;退出轉換程序

4 結束語 CAN總線是當前應用最為廣泛的現場總線之一,而RS-485總線則是常用的串行總線,兩者之間的相互轉換具有很高的實用價值。本文設計的CAN-RS485通信接口電路能夠很好地解決這兩種串行數據總線之間的相互轉換問題,并已成功應用于某地區的智能交通控制系統。
|