view code_part1/OSTC_code_asm_part1/spbrgselect.inc @ 819:95c08c0cfc29
3.04 beta release
author |
heinrichsweikamp |
date |
Sun, 07 Jun 2015 11:18:28 +0200 (2015-06-07) |
parents |
96a35aeda5f2 |
children |
|
line source
RoundResult SET 0 ; Rounding function. RoundResult = Round(aa/bb)
Round macro aa,bb
LOCAL rr = aa/bb
LOCAL d1 = aa - rr*bb
LOCAL d2 = (rr+1)*bb - aa
RoundResult = rr
if d1 >= d2
RoundResult++
endif
endm
AbsResult SET 0
Abs macro nr
if nr>=0
AbsResult = nr
else
AbsResult = -nr
endif
endm
Round xtal,(16*baud)
spbrg_value EQU RoundResult-1
Round xtal,(16*(spbrg_value+1))
baud_real EQU RoundResult
Abs(baud_real-baud)
errpercent EQU AbsResult*100/baud
if errpercent > 4
ERROR big error in baudrate: #v(errpercent)%
endif
if errpercent >= 2
messg baudrate not exact: #v(errpercent)%
endif