annotate code_part1/OSTC_code_asm_part1/spbrgselect.inc @ 842:454ef5c2e6aa default tip

Bugfix: Auto-SP did not show >9m for some 2C hardware versions in German language firmware Make year settings until 2040 possible (This is likely the final release for this model)
author heinrichsweikamp
date Sat, 29 Nov 2025 14:11:07 +0100
parents 96a35aeda5f2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1 RoundResult SET 0 ; Rounding function. RoundResult = Round(aa/bb)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2 Round macro aa,bb
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
3 LOCAL rr = aa/bb
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
4 LOCAL d1 = aa - rr*bb
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
5 LOCAL d2 = (rr+1)*bb - aa
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
6 RoundResult = rr
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
7 if d1 >= d2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
8 RoundResult++
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
9 endif
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
10 endm
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
11
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
12 AbsResult SET 0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
13 Abs macro nr
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
14 if nr>=0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
15 AbsResult = nr
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
16 else
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
17 AbsResult = -nr
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
18 endif
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
19 endm
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 Round xtal,(16*baud)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 spbrg_value EQU RoundResult-1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
23
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
24 Round xtal,(16*(spbrg_value+1))
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
25 baud_real EQU RoundResult
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
26 Abs(baud_real-baud)
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
27 errpercent EQU AbsResult*100/baud
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
28 if errpercent > 4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
29 ERROR big error in baudrate: #v(errpercent)%
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
30 endif
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
31 if errpercent >= 2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
32 messg baudrate not exact: #v(errpercent)%
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
33 endif