⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autobaud.a51

📁 T89C51CC01 uart BOOTLOAD
💻 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 + -