Commit | Line | Data |
---|---|---|
9c66c9ff JM |
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 |