十年专注单片机方案开发的方案公司英锐恩,分享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