Initial import of the bootloader code
[bootloader] / mybootload.X / spbrgselect.inc
1 RoundResult SET 0                               ; Rounding function.  RoundResult = Round(aa/bb)\r
2 Round   macro aa,bb\r
3         LOCAL rr = aa/bb\r
4         LOCAL d1 = aa - rr*bb\r
5         LOCAL d2 = (rr+1)*bb - aa\r
6 RoundResult = rr\r
7         if d1 >= d2\r
8 RoundResult++\r
9         endif\r
10         endm\r
11 \r
12 AbsResult SET 0\r
13 Abs             macro nr\r
14         if nr>=0\r
15 AbsResult = nr\r
16         else\r
17 AbsResult = -nr\r
18         endif\r
19         endm\r
20                 \r
21         Round xtal,(16*baud)\r
22 spbrg_value EQU RoundResult-1\r
23 \r
24         Round xtal,(16*(spbrg_value+1))\r
25 baud_real EQU RoundResult\r
26         Abs(baud_real-baud)\r
27 errpercent EQU AbsResult*100/baud\r
28         if errpercent > 4\r
29                 ERROR big error in baudrate: #v(errpercent)%\r
30         endif\r
31         if errpercent >= 2\r
32                 messg baudrate not exact: #v(errpercent)%\r
33         endif