十年專注單片機方案開發的方案公司英銳恩,分享USART 自動選擇波特率的程序。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。
;==========常數===========
BPS1152 EQU 00ah
BPS576 EQU 015h
BPS384 EQU 020h
BPS96 EQU 081h
VAL_BPS EQU BPS384
PWM_MAX EQU 0ffh
;=====================
;RC3 RA4 選擇波特率
;#1 #0 : Baud Rate
; L L : 9600bps (BPS96)
; L H : 38400bps (BPS384)
; H L : 57600bps (BPS576)
; H H : 115200bps(BPS1152)
;----------------------------
BAUDRATE
btfss PORTC,3 ;選擇四種波特率
goto BAUD_L
btfss PORTA,4
goto BAUD_HL
BAUD_HH
movlw BPS1152 ;0X0A
113600有誤差
goto BAUDSET
BAUD_HL
movlw BPS576 ;0X15 56800
goto BAUDSET
BAUD_L
btfss PORTA,4
goto BAUD_LL
BAUD_LH
movlw BPS384 ;0X20 39000
goto BAUDSET
BAUD_LL
movlw BPS96 ;0X81 9690
BAUDSET
bsf STATUS,RP0
movwf SPBRG
bcf STATUS,RP0