📄 autobaud.a51
字号:
NAME AUTOBAUD;
;*A51**************************************************************************
; FILE_NAME : AUTBAUD.a51
;----------------------------------------------------------------------------
; FILE_CREATED_BY : BERTHY JS
; FILE_CREATION_DATE: 27/06/01
;----------------------------------------------------------------------------
PUBLIC ASM_CAN_AUTOBAUD;
USING 0
CANBT1 DATA 0B4H
CANBT2 DATA 0B5H
CANBT3 DATA 0B6H
CANSTCH DATA 0B2H
CANGIT DATA 09BH
CANGCON DATA 0ABH
CANCONCH DATA 0B3H
BSEG AT 20H.0
f_timeout: DBIT 1
f_new_conf: DBIT 1
START SEGMENT CODE
RSEG START
;*****************************************************************************
; FUNCTION_NAME: ASM_CAN_AUTOBAUD
;----------------------------------------------------------------------------
; NOTE:
;*****************************************************************************
ASM_CAN_AUTOBAUD:
Push AR0
Push AR1
Push AR2
Push AR3
AUTOBAUD_INIT:
Mov R0, #02h ; prs = 2
Mov R1, #01h ; phs1 = 1
Mov R2, #01h ; phs2 = 1
Mov R3, #00h ; brp = 0
Orl CANGCON, #08h ; set bit AUTOBAUD
Call LOAD_CAN_BIT_TIMING
; If any stuff error or timeout -> change the configuration
TEST_STUFF_ERROR:
Mov A, CANGIT
Jb Acc.3, NEXT_CONFIG
TEST_TIMEOUT:
Jb f_timeout, NEXT_CONFIG
TEST_RX_OK:
Mov A, CANSTCH
Jb Acc.5, END_ASM_CAN_AUTOBAUD
UPDATE_TIMEOUT:
Jnb f_new_conf, TEST_STUFF_ERROR
Mov A, CANGIT
Jnb Acc.5, TEST_STUFF_ERROR
Setb f_timeout
Jmp TEST_STUFF_ERROR
NEXT_CONFIG:
Anl CANGCON, #0FDh ; CAN_CONTROLLER_DISABLE
Setb f_new_conf
Clr f_timeout
Cjne R0, #08h, phs2
Cjne R3, #20h, brp
Jmp AUTOBAUD_INIT
brp:
Inc R3
Mov R0, #02h ; prs = 2
Mov R1, #01h ; phs1 = 1
Mov R2, #01h ; phs2 = 1
Jmp LOAD_NEW_CONFIG
phs2:
Mov A, R0
Cjne A, AR2, INC_PHS2
Cjne A, AR1, INC_PHS1
Inc R0
LOAD_NEW_CONFIG:
Call LOAD_CAN_BIT_TIMING
Jmp TEST_RX_OK
INC_PHS2:
Inc R2
Jmp LOAD_NEW_CONFIG
INC_PHS1:
Inc R1
Jmp LOAD_NEW_CONFIG
END_ASM_CAN_AUTOBAUD:
Mov CANSTCH, #00h;
Mov CANCONCH, #088h;
Pop AR3
Pop AR2
Pop AR1
Pop AR0
Ret
;*****************************************************************************
; FUNCTION_NAME: LOAD_CAN_BIT_TIMING
;----------------------------------------------------------------------------
; NOTE:
;*****************************************************************************
LOAD_CAN_BIT_TIMING:
Mov CANBT1, #00h
Mov CANBT2, #00h
Mov CANBT3, #00h
Mov A, R3
Rl A
Mov CANBT1, A
Mov A, R0
Rl A
Mov CANBT2, A
Mov A, R2
Swap A
Mov CANBT3, A
Mov A, R1
Rl A
Orl CANBT3, A
Orl CANGCON, #02h ; CAN_CONTROLLER_ENABLE
Mov CANGIT, #00h;
Mov CANSTCH, #00h;
Ret
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -