view code_part1/OSTC_code_asm_part1/spbrgselect.inc @ 117:d92a6a8ab516
added sample workspace file
author |
heinrichsweikamp |
date |
Sun, 26 Dec 2010 16:47:29 +0100 (2010-12-26) |
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