background image
宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商   www.MCU-Memory.com   STC12C5410AD 系列 1T 8051 单片机中文指南
57
;------------------------------------------------------------------------------
;入口参数: A = 要发送的字节
Send_One_Byte:                      ;发送一个字节
    CLR   ES
    CLR   TI                        ;清零串口发送中断标志
    MOV   SBUF, A
Wait_Send_Finish:
    JNB   TI, Wait_Send_Finish      ;等待发送完毕
    CLR   TI                        ;清零串口发送中断标志
    SETB  ES
    RET
;------------------------------------------------------------------------------
    END
;------------------------------------------------------------------------------
;计算自动重装数 RELOAD (SMOD = 0, SMOD 是 PCON 特殊功能寄存器的最高位):
;  1. 计算 RELOAD (以下是 SMOD = 0 时的计算公式)
;     a) 12T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32/12 + 0.5)
;     b)  1T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32 + 0.5)
;     式中: INT() 表示取整运算即舍去小数, 在式中加 0.5 可以达到四舍五入的目的
;           Fosc = 晶振频率
;           Baud0 = 标准波特率
;  2. 计算用 RELOAD 产生的波特率:
;       a)   Baud = Fosc/(256 - RELOAD)/32/12       12T 模式
;       b)   Baud = Fosc/(256 - RELOAD)/32           1T 模式
;  3. 计算误差
;          error = (Baud - Baud0)/Baud0 * 100%
;  4. 如果误差绝对值 > 4.5% 要更换波特率或者更换晶体频率,  重复步骤 1-4
;例: Fosc = 22.1184MHz, Baud0 = 57600 (12T 模式)
; 1. RELOAD = 256 - INT( 22118400/57600/32/12 + 0.5)
;           = 256 - INT( 1.5 )
;           = 256 - 1
;           = 255
;           = 0FFH
; 2. Baud = 22118400/(256-255)/32/12
;         = 57600
; 3. 误差等于零