OSDN Git Service

95e8eb120e44bfb2e1b5906e09b5fefdefe8cd43
[fast-forth/master.git] / inc / TERMINALBAUDRATE.inc
1
2 ; TERM alias eUSCI_Ax : select baudrate versus frequency
3     .IF FREQUENCY = 0.25
4         .SWITCH TERMINALBAUDRATE
5         .CASE 9600
6 ; Configure UART_TERM @ 38400 bauds / 1MHz
7 ; N=1000000/38400=26.04166... ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.04166)=0x00
8 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
9 TERMBRW_INI     .equ 1
10 TERMMCTLW_INI   .equ 00A1h
11
12         .CASE 19200  ; PL2303TA baudrate
13 ; Configure UART_TERM @ 38400 bauds / 500kHz
14 ; N=500000/38400=13.20833 ==> UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.20833)=0x11
15 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
16 TERMBRW_INI     .equ 13
17 TERMMCTLW_INI   .equ 1100h
18
19         .CASE 31250  ; MIDI interface
20 ; Configure UART_TERM @ 31250 bauds / 250kHz
21 ; N=250000/31250=8 ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
22 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
23 TERMBRW_INI     .equ 8
24 TERMMCTLW_INI   .equ 0000h
25
26         .CASE 38400
27 ; Configure UART_TERM @ 38400 bauds / 250kHz
28 ; N=250000/38400=6.5124166... ==> UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.512416)=0xAA
29 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
30 TERMBRW_INI     .equ 6
31 TERMMCTLW_INI   .equ 0AA00h
32
33         .CASE 57600  ; PL2303TA baudrate
34 ; Configure UART_TERM @ 57600 bauds / 250kHz
35 ; N=250000/57600=4.340277.. ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.340277)=0x49
36 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
37 TERMBRW_INI     .equ 4
38 TERMMCTLW_INI   .equ 04900h
39         .ELSECASE
40             .error "UART_TERM / 250 kHz : baudrate not implemented"
41         .ENDCASE
42     .ELSEIF FREQUENCY = 0.5
43         .SWITCH TERMINALBAUDRATE
44         .CASE 9600
45 ; Configure UART_TERM @ 19200 bauds / 1MHz
46 ; N=1000000/19200=52.0833... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
47 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
48 TERMBRW_INI     .equ 3
49 TERMMCTLW_INI   .equ 0241h
50
51         .CASE 19200
52 ; Configure UART_TERM @ 38400 bauds / 1MHz
53 ; N=1000000/38400=26.04166... ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.04166)=0x00
54 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
55 TERMBRW_INI     .equ 1
56 TERMMCTLW_INI   .equ 00A1h
57
58         .CASE 31250  ; MIDI interface
59 ; Configure UART_TERM @ 31250 bauds / 500kHz
60 ; N=500000/31250=16 ==> UCOS16=0, UCBR0=int(N)=16, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
61 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
62 TERMBRW_INI     .equ 16
63 TERMMCTLW_INI   .equ 0000h
64
65         .CASE 38400  ; PL2303TA baudrate
66 ; Configure UART_TERM @ 38400 bauds / 500kHz
67 ; N=500000/38400=13.20833 ==> UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.20833)=0x11
68 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
69 TERMBRW_INI     .equ 13
70 TERMMCTLW_INI   .equ 1100h
71
72         .CASE 57600
73 ; Configure UART_TERM @ 115200 bauds / 1MHz
74 ; N=1000000/115200=8.68055... ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.68055)=0xD6
75 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
76 TERMBRW_INI     .equ 8
77 TERMMCTLW_INI   .equ 0D600h
78
79         .CASE 100800  ; PL2303TA baudrate
80 ; Configure UART_TERM @ 201600 bauds / 1MHz
81 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
82 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
83 TERMBRW_INI     .equ 4
84 TERMMCTLW_INI   .equ 0FE00h
85
86         .CASE 115200
87 ; Configure UART_TERM @ 230400 bauds / 1MHz
88 ; N=1000000/230400=4.34027... ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.340277)=0x49
89 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
90 TERMBRW_INI     .equ 4
91 TERMMCTLW_INI   .equ 04900h
92
93 ;         .CASE 134400  ; PL2303TA baudrate
94 ; ; Configure UART_TERM @ 268800 bauds / 1MHz
95 ; ; N=1000000/134400=3.72024 ==> UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.72024)=0xBB
96 ; ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
97 ; TERMBRW_INI     .equ 3
98 ; TERMMCTLW_INI   .equ 0BB00h
99
100 ;        .CASE 161280  ; PL2303TA baudrate
101 ;; Configure UART_TERM @ 161280 bauds / 500kHz
102 ;; N=500000/161280=3.100198 ==> UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.100198)=0x08
103 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
104 ;TERMBRW_INI     .equ 3
105 ;TERMMCTLW_INI   .equ 01100h
106         .ELSECASE
107             .error "UART_TERM / 500 kHz : baudrate not implemented"
108         .ENDCASE
109
110     .ELSEIF FREQUENCY = 1
111         .SWITCH TERMINALBAUDRATE
112         .CASE 9600
113 ; Configure UART_TERM @ 9600 bauds / 1MHz
114 ; N=1000000/9600=104.166... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
115 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
116 TERMBRW_INI     .equ 6
117 TERMMCTLW_INI   .equ 2081h
118
119         .CASE 19200
120 ; Configure UART_TERM @ 19200 bauds / 1MHz
121 ; N=1000000/19200=52.0833... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
122 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
123 TERMBRW_INI     .equ 3
124 TERMMCTLW_INI   .equ 0241h
125
126         .CASE 31250  ; MIDI interface
127 ; Configure UART_TERM @ 31250 bauds / 1MHz
128 ; N=1000000/31250=32 ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
129 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
130 TERMBRW_INI     .equ 2
131 TERMMCTLW_INI   .equ 0001h
132
133         .CASE 38400
134 ; Configure UART_TERM @ 38400 bauds / 1MHz
135 ; N=1000000/38400=26.04166... ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.04166)=0x00
136 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
137 TERMBRW_INI     .equ 1
138 TERMMCTLW_INI   .equ 00A1h
139
140         .CASE 57600
141 ; Configure UART_TERM @ 57600 bauds / 1MHz
142 ; N=1000000/57600=17.301... ==> UCOS16=0, UCBR0=int(N)=17, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.301)=0x4A
143 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
144 TERMBRW_INI     .equ 17
145 TERMMCTLW_INI   .equ 04A00h
146
147         .CASE 100000
148 ; Configure UCBx_TERM for I2C @ 100kHZ / 1MHz
149 TERMBRW_INI     .equ 10
150 TERMMCTLW_INI   .equ 0
151
152         .CASE 100800  ; PL2303TA baudrate
153 ; Configure UART_TERM @ 100800 bauds / 1MHz
154 ; N=1000000/100800=9,920634 ==> UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.920634)=0xFD
155 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
156 TERMBRW_INI     .equ 9
157 TERMMCTLW_INI   .equ 0FD00h
158
159         .CASE 115200
160 ; Configure UART_TERM @ 115200 bauds / 1MHz
161 ; N=1000000/115200=8.68055... ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.68055)=0xD6
162 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
163 TERMBRW_INI     .equ 8
164 TERMMCTLW_INI   .equ 0D600h
165
166         .CASE 134400  ; PL2303TA baudrate
167 ; Configure UART_TERM @ 134400 bauds / 1MHz
168 ; N=1000000/134400=7.440476 ==> UCOS16=0, UCBR0=int(N)=7, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.440476)=0x55
169 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
170 TERMBRW_INI     .equ 7
171 TERMMCTLW_INI   .equ 05500h
172
173         .CASE 161280  ; PL2303TA baudrate
174 ; Configure UART_TERM @ 161280 bauds / 1MHz
175 ; N=1000000/161280=6.200396 ==> UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0x11
176 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
177 TERMBRW_INI     .equ 6
178 TERMMCTLW_INI   .equ 01100h
179
180         .CASE 201600  ; PL2303TA baudrate
181 ; Configure UART_TERM @ 201600 bauds / 1MHz
182 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
183 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
184 TERMBRW_INI     .equ 4
185 TERMMCTLW_INI   .equ 0FE00h
186
187         .CASE 230400
188 ; Configure UART_TERM @ 230400 bauds / 1MHz
189 ; N=1000000/230400=4.34027... ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.340277)=0x49
190 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
191 TERMBRW_INI     .equ 4
192 TERMMCTLW_INI   .equ 04900h
193
194         .CASE 250000  ; DMX interface
195 ; Configure UART_TERM @ 250000 bauds / 1MHz
196 ; N=1000000/250000=4 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
197 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
198 TERMBRW_INI     .equ 4
199 TERMMCTLW_INI   .equ 0000h
200
201 ;        .CASE 268800  ; PL2303TA baudrate
202 ;; Configure UART_TERM @ 268800 bauds / 1MHz
203 ;; N=1000000/268800=3.72024 ==> UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.72024)=0xBB
204 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
205 ;TERMBRW_INI     .equ 3
206 ;TERMMCTLW_INI   .equ 0BB00h
207
208 ;        .CASE 403200  ; PL2303TA baudrate
209 ;; Configure UART_TERM @ 403200 bauds / 1MHz
210 ;; N=1000000/403200=2.48016 ==> UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.48016)=0x55
211 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
212 ;TERMBRW_INI     .equ 2
213 ;TERMMCTLW_INI   .equ 05500h
214         .ELSECASE
215             .error "UART_TERM / 1 MHz : baudrate not implemented"
216         .ENDCASE
217
218     .ELSEIF FREQUENCY = 2
219         .SWITCH TERMINALBAUDRATE
220         .CASE 9600
221 ; Configure UART_TERM @ 19200 bauds / 4MHz
222 ; N=4000000/38400=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
223 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
224 TERMBRW_INI     .equ 13
225 TERMMCTLW_INI   .equ 4901h
226
227         .CASE 19200
228 ; Configure UART_TERM @ 9600 bauds / 1MHz
229 ; N=1000000/9600=104.166... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
230 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
231 TERMBRW_INI     .equ 6
232 TERMMCTLW_INI   .equ 2081h
233
234         .CASE 31250  ; MIDI interface
235 ; Configure UART_TERM @ 31250 bauds / 2MHz
236 ; N=2000000/31250=64 ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
237 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
238 TERMBRW_INI     .equ 4
239 TERMMCTLW_INI   .equ 0001h
240
241         .CASE 38400
242 ; Configure UART_TERM @ 19200 bauds / 1MHz
243 ; N=1000000/19200=52.0833... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
244 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
245 TERMBRW_INI     .equ 3
246 TERMMCTLW_INI   .equ 0241h
247
248         .CASE 57600
249 ; Configure UART_TERM @ 115200 bauds / 4MHz
250 ; N=8000000/230400=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
251 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
252 TERMBRW_INI     .equ 2
253 TERMMCTLW_INI   .equ 0BB21h
254
255         .CASE 100000
256 ; Configure UCBx_TERM for I2C @ 100kHZ / 2MHz
257 TERMBRW_INI     .equ 20
258 TERMMCTLW_INI   .equ 0
259
260         .CASE 115200
261 ; Configure UART_TERM @ 57600 bauds / 1MHz
262 ; N=1000000/57600=17.301... ==> UCOS16=0, UCBR0=int(N)=17, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.301)=0x4A
263 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
264 TERMBRW_INI     .equ 17
265 TERMMCTLW_INI   .equ 04A00h
266
267         .CASE 230400
268 ; Configure UART_TERM @ 115200 bauds / 1MHz
269 ; N=1000000/115200=8.68055... ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.68055)=0xD6
270 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
271 TERMBRW_INI     .equ 8
272 TERMMCTLW_INI   .equ 0D600h
273
274         .CASE 250000  ; DMX interface
275 ; Configure UART_TERM @ 250000 bauds / 2MHz
276 ; N=2000000/250000=8 ==> UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0)=0
277 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
278 TERMBRW_INI     .equ 8
279 TERMMCTLW_INI   .equ 0000h
280
281         .CASE 268800  ; PL2303TA baudrate
282 ; Configure UART_TERM @ 134400 bauds / 1MHz
283 ; N=1000000/134400=7.440476 ==> UCOS16=0, UCBR0=int(N)=7, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.440476)=0x55
284 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
285 TERMBRW_INI     .equ 7
286 TERMMCTLW_INI   .equ 05500h
287
288         .CASE 403200  ; PL2303TA baudrate
289 ; Configure UART_TERM @ 201600 bauds / 1MHz
290 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
291 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
292 TERMBRW_INI     .equ 4
293 TERMMCTLW_INI   .equ 0FE00h
294
295         .CASE 460800 ; CP2102 baudrate
296 ; Configure UART_TERM @ 921600 bauds / 4MHz
297 ; N = 4000000/460800 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.34027)=0x49
298 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
299 TERMBRW_INI     .equ 4
300 TERMMCTLW_INI   .equ 04900h
301
302 ;         .CASE 614400 ; PL2303TA baudrate
303 ; ; Configure UART_TERM @ 2457600 bauds / 8MHz
304 ; ; N = 8000000/2457600 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
305 ; ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
306 ; TERMBRW_INI     .equ 3
307 ; TERMMCTLW_INI   .equ 04400h
308 ;
309 ;         .CASE 806400  ; PL2303TA baudrate
310 ; ; Configure UART_TERM @ 806400 bauds / 2MHz
311 ; ; Configure UART_TERM @ 403200 bauds / 1MHz
312 ; ; N=1000000/403200=2.48016 ==> UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.48016)=0x55
313 ; ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
314 ; TERMBRW_INI     .equ 2
315 ; TERMMCTLW_INI   .equ 05500h
316
317 ;        .CASE 921600
318 ;; Configure UART_TERM @ 921600 bauds / 2MHz
319 ;; N = 2000000/921600 = 2.170138... ==> {UCOS16=0, UCBR1=int(N)=2, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.170138)=0x11
320 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
321 ;TERMBRW_INI     .equ 2
322 ;TERMMCTLW_INI   .equ 01100h
323         .ELSECASE
324             .error "UART_TERM / 2 MHz : baudrate not implemented"
325         .ENDCASE
326
327     .ELSEIF FREQUENCY = 4
328         .SWITCH TERMINALBAUDRATE
329         .CASE 9600
330 ; Configure UART_TERM @ 9600 bauds / 4MHz
331 ; N=4000000/19200=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
332 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
333 TERMBRW_INI     .equ 26
334 TERMMCTLW_INI   .equ 0D601h
335
336         .CASE 19200
337 ; Configure UART_TERM @ 19200 bauds / 4MHz
338 ; N=4000000/38400=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
339 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
340 TERMBRW_INI     .equ 13
341 TERMMCTLW_INI   .equ 4901h
342
343         .CASE 31250  ; MIDI interface
344 ; Configure UART_TERM @ 31250 bauds / 4MHz
345 ; N=4000000/31250=128 ==> UCOS16=1, UCBR0=int(N/16)=8, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
346 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
347 TERMBRW_INI     .equ 8
348 TERMMCTLW_INI   .equ 0001h
349
350         .CASE 38400
351 ; Configure UART_TERM @ 38400 bauds / 4MHz
352 ; N=4000000/38400=104.1666... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.16666)=0x20
353 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
354 TERMBRW_INI     .equ 6
355 TERMMCTLW_INI   .equ 02081h
356
357         .CASE 57600
358 ; Configure UART_TERM @ 57600 bauds / 4MHz
359 ; N=8000000/115200=69.444... ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.44444)=0x55
360 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
361 TERMBRW_INI     .equ 4
362 TERMMCTLW_INI   .equ 5551h
363
364         .CASE 100000
365 ; Configure UCBx_TERM for I2C @ 100kHZ / 4MHz
366 TERMBRW_INI     .equ 40
367 TERMMCTLW_INI   .equ 0
368
369         .CASE 115200
370 ; Configure UART_TERM @ 115200 bauds / 4MHz
371 ; N=8000000/230400=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
372 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
373 TERMBRW_INI     .equ 2
374 TERMMCTLW_INI   .equ 0BB21h
375
376         .CASE 230400
377 ; Configure UART_TERM @ 230400 bauds / 4MHz
378 ; see table "Recommended Settings for Typical Crystals and Baudrates"
379 TERMBRW_INI     .equ 17
380 TERMMCTLW_INI   .equ 04A00h
381
382         .CASE 250000  ; DMX interface
383 ; Configure UART_TERM @ 250000 bauds / 4MHz
384 ; N=4000000/250000=16 ==> UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
385 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
386 TERMBRW_INI     .equ 1
387 TERMMCTLW_INI   .equ 0001h
388
389         .CASE 460800
390 ; Configure UART_TERM @ 460800 bauds / 4MHz
391 ; N = 8000000/921600 = 8.680555... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.68055)=0xD6
392 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
393 TERMBRW_INI     .equ 8
394 TERMMCTLW_INI   .equ 0D600h
395
396         .CASE 806400  ; PL2303TA baudrate
397 ; Configure UART_TERM @ 806400 bauds / 4MHz
398 ; Configure UART_TERM @ 201600 bauds / 1MHz
399 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
400 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
401 TERMBRW_INI     .equ 4
402 TERMMCTLW_INI   .equ 0FE00h
403
404         .CASE 921600 ; CP2102 baudrate
405 ; Configure UART_TERM @ 921600 bauds / 4MHz
406 ; N = 8000000/921600 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.34027)=0x49
407 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
408 TERMBRW_INI     .equ 4
409 TERMMCTLW_INI   .equ 04900h
410
411 ;         .CASE 1228800 ; PL2303TA baudrate
412 ; ; Configure UART_TERM @ 2457600 bauds / 8MHz
413 ; ; N = 8000000/1228800 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
414 ; ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
415 ; TERMBRW_INI     .equ 3
416 ; TERMMCTLW_INI   .equ 04400h
417         .ELSECASE
418             .error "UART_TERM / 4 MHz : baudrate not implemented"
419         .ENDCASE ; UART_TERM / 4 MHz baudrates
420
421     .ELSEIF FREQUENCY = 8
422         .SWITCH TERMINALBAUDRATE
423         .CASE 9600
424 ; Configure UART_TERM @ 9600 bauds / 8MHz
425 ; N=8000000/9600=833.333... ==> UCOS16=1, UCBR0=int(N/16)=52, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
426 TERMBRW_INI     .equ 52
427 TERMMCTLW_INI   .equ 4911h
428
429         .CASE 19200
430 ; Configure UART_TERM @ 19200 bauds / 8MHz
431 ; N=8000000/19200=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
432 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
433 TERMBRW_INI     .equ 26
434 TERMMCTLW_INI   .equ 0D601h
435
436         .CASE 31250  ; MIDI interface
437 ; Configure UART_TERM @ 31250 bauds / 8MHz
438 ; N=8000000/31250=256 ==> UCOS16=1, UCBR0=int(N/16)=16, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
439 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
440 TERMBRW_INI     .equ 16
441 TERMMCTLW_INI   .equ 0001h
442
443         .CASE 38400
444 ; Configure UART_TERM @ 38400 bauds / 8MHz
445 ; N=8000000/38400=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
446 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
447 TERMBRW_INI     .equ 13
448 TERMMCTLW_INI   .equ 4901h
449
450         .CASE 57600
451 ; Configure UART_TERM @ 57600 bauds / 8MHz
452 ; N=8000000/57600=138.888... ==> UCOS16=1, UCBR0=int(N/16)=8, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.88888)=0xF7
453 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
454 TERMBRW_INI     .equ 8
455 TERMMCTLW_INI   .equ 0F7A1h
456
457         .CASE 100000
458 ; Configure UCBx_TERM for I2C @ 100kHZ / 8MHz
459 TERMBRW_INI     .equ 80
460 TERMMCTLW_INI   .equ 0
461
462         .CASE 115200
463 ; Configure UART_TERM @ 115200 bauds / 8MHz
464 ; N=8000000/115200=69.444... ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.44444)=0x55
465 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
466 TERMBRW_INI     .equ 4
467 TERMMCTLW_INI   .equ 5551h
468
469         .CASE 230400
470 ; Configure UART_TERM @ 230400 bauds / 8MHz
471 ; N=8000000/230400=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
472 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
473 TERMBRW_INI     .equ 2
474 TERMMCTLW_INI   .equ 0BB21h
475
476         .CASE 250000  ; DMX interface
477 ; Configure UART_TERM @ 250000 bauds / 8MHz
478 ; N=8000000/250000=32 ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
479 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
480 TERMBRW_INI     .equ 2
481 TERMMCTLW_INI   .equ 0001h
482
483         .CASE 460800
484 ; Configure UART_TERM @ 460800 bauds / 8MHz
485 ; see table "Recommended Settings for Typical Crystals and Baudrates"
486 TERMBRW_INI     .equ 17
487 TERMMCTLW_INI   .equ 04A00h
488
489         .CASE 614400 ; PL2303TA baudrate
490 ; Configure UART_TERM @ 614400 bauds / 8MHz
491 ; N = 8000000/614400 = 13.02083... ==> {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.02083)=0x02
492 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
493 TERMBRW_INI     .equ 13
494 TERMMCTLW_INI   .equ 00200h
495
496         .CASE 806400  ; PL2303TA baudrate
497 ; Configure UART_TERM @ 806400 bauds / 8MHz
498 ; Configure UART_TERM @ 100800 bauds / 1MHz
499 ; N=1000000/100800=9,920634 ==> UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.920634)=0xFD
500 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
501 TERMBRW_INI     .equ 9
502 TERMMCTLW_INI   .equ 0FD00h
503
504         .CASE 921600
505 ; Configure UART_TERM @ 921600 bauds / 8MHz
506 ; Configure UART_TERM @ 1843200 bauds / 16MHz
507 ; N = 16000000/1843200 = 8.680555... ==> {UCOS16=0, UCBR1=int(N)=8, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.68055)=0xD6
508 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
509 TERMBRW_INI     .equ 8
510 TERMMCTLW_INI   .equ 0D600h
511
512         .CASE 1000000
513 ; Configure UART_TERM @ 1000000 bauds / 8MHz
514 ; Configure UART_TERM @ 2000000 bauds / 16MHz
515 ; N = 16000000/2000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
516 TERMBRW_INI     .equ 8
517 TERMMCTLW_INI   .equ 00000h
518
519         .CASE 1228800 ; PL2303TA baudrate
520 ; Configure UART_TERM @ 1228800 bauds / 8MHz
521 ; N = 8000000/1228800 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.510416)=0xAA
522 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
523 TERMBRW_INI     .equ 6
524 TERMMCTLW_INI   .equ 0AA00h
525
526         .CASE 1382400 ; CP2102 baudrate
527 ; Configure UART_TERM @ 1382400 bauds / 8MHz
528 ; N = 8000000/1382400 = 5.787037... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.787037)=0xED
529 TERMBRW_INI     .equ 5
530 TERMMCTLW_INI   .equ 0DD00h
531
532         .CASE 1843200 ; CP2102 baudrate (with programming)
533 ; Configure UART_TERM @ 1843200 bauds / 8MHz
534 ; N = 16000000/1843200 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.34027)=0x49
535 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
536 TERMBRW_INI     .equ 4
537 TERMMCTLW_INI   .equ 04900h
538
539 ;         .CASE 2457600 ; PL2303TA baudrate
540 ; ; Configure UART_TERM @ 2457600 bauds / 8MHz
541 ; ; N = 8000000/1228800 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
542 ; ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
543 ; TERMBRW_INI     .equ 3
544 ; TERMMCTLW_INI   .equ 04400h
545 ;
546 ;         .CASE 3000000 ; PL2303TA baudrate
547 ; ; Configure UART_TERM @ 3000000 bauds / 8MHz
548 ; ; Configure UART_TERM @ 6000000 bauds / 16MHz
549 ; ; N = 16000000/6000000 = 2.6666.. ==> {UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.6666)=0xB6
550 ; TERMBRW_INI     .equ 2
551 ; TERMMCTLW_INI   .equ 0B600h
552         .ELSECASE
553             .error "UART_TERM / 8 MHz : baudrate not implemented"
554         .ENDCASE ; UART_TERM / 8 MHz baudrates
555
556     .ELSEIF FREQUENCY = 10
557         .SWITCH TERMINALBAUDRATE
558         .CASE 9600
559 ; Configure UART_TERM @ 9600 bauds / 10MHz
560 ; Configure UART_TERM @ 19200 bauds / 20MHz
561 ; N=20000000/19200=1041.66666 ==> UCOS16=1, UCBR0=int(N/16)=65, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.66666)=0xd6
562 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
563 TERMBRW_INI     .equ 65
564 TERMMCTLW_INI   .equ 0D611h
565
566         .CASE 19200
567 ; Configure UART_TERM @ 19200 bauds / 10MHz
568 ; Configure UART_TERM @ 38400 bauds / 20MHz
569 ; N=20000000/38400=520.833333 ==> UCOS16=1, UCBR0=int(N/16)=32, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0)=0xBF
570 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
571 TERMBRW_INI     .equ 32
572 TERMMCTLW_INI   .equ 0BF01h
573
574         .CASE 31250  ; MIDI interface
575 ; Configure UART_TERM @ 31250 bauds / 10MHz
576 ; N=10000000/31250=320 ==> UCOS16=1, UCBR0=int(N/16)=20, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
577 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
578 TERMBRW_INI     .equ 20
579 TERMMCTLW_INI   .equ 0001h
580
581         .CASE 38400
582 ; Configure UART_TERM @ 38400 bauds / 10MHz
583 ; N=10000000/38400=260.41666 ==> UCOS16=1, UCBR0=int(N/16)=16, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(.04166)=0x92
584 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
585 TERMBRW_INI     .equ 16
586 TERMMCTLW_INI   .equ 09241h
587
588         .CASE 57600
589 ; Configure UART_TERM @ 57600 bauds / 10MHz
590 ; Configure UART_TERM @ 115200 bauds / 20MHz
591 ; N=20000000/115200=173.61111... ==> UCOS16=1, UCBR0=int(N/16)=10, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.6111)=0xAD
592 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
593 TERMBRW_INI     .equ 10
594 TERMMCTLW_INI   .equ 0AD01h
595
596         .CASE 100000
597 ; Configure UCBx_TERM for I2C @ 100kHZ / 10MHz
598 TERMBRW_INI     .equ 100
599 TERMMCTLW_INI   .equ 0
600
601         .CASE 115200
602 ; Configure UART_TERM @ 115200 bauds / 10MHz
603 ; Configure UART_TERM @ 230400 bauds / 20MHz
604 ; N=20000000/230400=86.80555... ==> UCOS16=1, UCBR0=int(N/16)=5, UCBRF0=int(frac(N/16)*16)=6, UCBRS0= fn(frac(N))=fn(0.80555)=0xEE
605 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
606 TERMBRW_INI     .equ 5
607 TERMMCTLW_INI   .equ 0EE61h
608
609         .CASE 230400
610 ; Configure UART_TERM @ 230400 bauds / 10MHz
611 ; Configure UART_TERM @ 460800 bauds / 20MHz
612 ; N=20000000/460800=43.402777... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0Bh, UCBRS0= fn(frac(N))=fn(0.4027)=0x92
613 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
614 TERMBRW_INI     .equ 2
615 TERMMCTLW_INI   .equ 92B1h
616
617         .CASE 250000  ; DMX interface
618 ; Configure UART_TERM @ 250000 bauds / 10MHz
619 ; Configure UART_TERM @ 500000 bauds / 20MHz
620 ; N = 20000000/500000 = 40 ==> {UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=8  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
621 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
622 TERMBRW_INI     .equ 2
623 TERMMCTLW_INI   .equ 0081h
624
625         .CASE 460800
626 ; Configure UART_TERM @ 460800 bauds / 10MHz
627 ; Configure UART_TERM @ 921600 bauds / 20MHz
628 ; N = 20000000/921600 = 21.701388... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=5  UCBRS0=fn(frac(N))=fn(0.70138)=0xB7
629 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
630 TERMBRW_INI     .equ 1
631 TERMMCTLW_INI   .equ 0B751h
632
633         .CASE 500000 ; CP2102 baudrate
634 ; Configure UART_TERM @ 500000 bauds / 10MHz
635 ; Configure UART_TERM @ 1000000 bauds / 20MHz
636 ; N = 20000000/1000000 = 20 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
637 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
638 TERMBRW_INI     .equ 1
639 TERMMCTLW_INI   .equ 0041h
640
641         .CASE 614400
642 ; Configure UART_TERM @ 614400 bauds / 10MHz
643 ; Configure UART_TERM @ 1228800 bauds / 20MHz
644 ; N = 20000000/1228800 = 16.276... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=0,  UCBRS0=fn(frac(N))=fn(0.276)=0x44
645 TERMBRW_INI     .equ 1
646 TERMMCTLW_INI   .equ 04411h
647
648         .CASE 921600
649 ; Configure UART_TERM @ 921600 bauds / 10MHz
650 ; Configure UART_TERM @ 1843200 bauds / 20MHz
651 ; N = 20000000/1843200 = 10.85069...  {UCOS16=0, UCBR0=int(N)=10, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.85069)=0xDF
652 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
653 TERMBRW_INI     .equ 10
654 TERMMCTLW_INI   .equ 0DF00h
655
656         .CASE 1000000
657 ; Configure UART_TERM @ 1000000 bauds / 10MHz
658 ; N = 10000000/1000000 = 10 ==> {UCOS16=0, UCBR0=int(N)=10, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.0)=0x00
659 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
660 TERMBRW_INI     .equ 10
661 TERMMCTLW_INI   .equ 0
662
663         .CASE 1228800
664 ; Configure UART_TERM @ 1228800 bauds / 10MHz
665 ; N = 10000000/1228800 = 8.138.. ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.138)=0x10
666 TERMBRW_INI     .equ 8
667 TERMMCTLW_INI   .equ 01000h
668
669         .CASE 1382400
670 ; Configure UART_TERM @ 1382400 bauds / 10MHz
671 ; N = 10000000/1382400 = 7.2338.. ==> {UCOS16=0, UCBR0=int(N)=7, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.2338)=0x22
672 TERMBRW_INI     .equ 7
673 TERMMCTLW_INI   .equ 02200h
674
675         .CASE 1843200
676 ; Configure UART_TERM @ 1843200 bauds / 10MHz
677 ; N = 10000000/1843200 = 5.4253...  {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.4253)=0x92
678 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
679 TERMBRW_INI     .equ 5
680 TERMMCTLW_INI   .equ 09200h
681
682         .CASE 2457600 ; PL2303TA baudrate
683 ; Configure UART_TERM @ 2457600 bauds / 10MHz
684 ; N = 10000000/2457600 = 4.069010... ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.06901)=0x01
685 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
686 TERMBRW_INI     .equ 4
687 TERMMCTLW_INI   .equ 00100h
688
689 ;         .CASE 3000000 ; PL2303TA baudrate
690 ; ; Configure UART_TERM @ 3000000 bauds / 10MHz
691 ; ; Configure UART_TERM @ 6000000 bauds / 20MHz
692 ; ; N = 20000000/6000000 = 3.3333333 ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.33333)=0x49
693 ; TERMBRW_INI     .equ 3
694 ; TERMMCTLW_INI   .equ 04900h
695
696         .ELSECASE
697             .error "UART_TERM / 10 MHz : baudrate not implemented"
698         .ENDCASE ; UART_TERM / 10 MHz baudrates
699
700     .ELSEIF FREQUENCY = 12
701         .SWITCH TERMINALBAUDRATE
702         .CASE 9600
703 ; Configure UART_TERM @ 9600 bauds / 12MHz
704 ; Configure UART_TERM @ 19200 bauds / 24MHz
705 ; N=12000000/19200=1250 ==> UCOS16=1, UCBR0=int(N/16)=78, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0)=0x00
706 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
707 TERMBRW_INI     .equ 78
708 TERMMCTLW_INI   .equ 0021h
709
710         .CASE 19200
711 ; Configure UART_TERM @ 19200 bauds / 12MHz
712 ; Configure UART_TERM @ 38400 bauds / 24MHz
713 ; N=24000000/19200=625 ==> UCOS16=1, UCBR0=int(N/16)=39, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0)=0x00
714 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
715 TERMBRW_INI     .equ 39
716 TERMMCTLW_INI   .equ 0011h
717
718         .CASE 31250  ; MIDI interface
719 ; Configure UART_TERM @ 31250 bauds / 8MHz
720 ; N=12000000/31250=384 ==> UCOS16=1, UCBR0=int(N/16)=24, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
721 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
722 TERMBRW_INI     .equ 24
723 TERMMCTLW_INI   .equ 1
724
725         .CASE 38400
726 ; Configure UART_TERM @ 38400 bauds / 12MHz
727 ; N=12000000/19200=312.5... ==> UCOS16=1, UCBR0=int(N/16)=19, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.5)=0x55
728 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
729 TERMBRW_INI     .equ 19
730 TERMMCTLW_INI   .equ 05581h
731
732         .CASE 57600
733 ; Configure UART_TERM @ 57600 bauds / 12MHz
734 ; Configure UART_TERM @ 115200 bauds / 24MHz
735 ; N=24000000/115200=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.333)=0x49
736 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
737 TERMBRW_INI     .equ 13
738 TERMMCTLW_INI   .equ 04901h
739
740         .CASE 100000
741 ; Configure UCBx_TERM for I2C @ 100kHZ / 12MHz
742 TERMBRW_INI     .equ 120
743 TERMMCTLW_INI   .equ 0
744
745         .CASE 115200
746 ; Configure UART_TERM @ 115200 bauds / 12MHz
747 ; Configure UART_TERM @ 230400 bauds / 24MHz
748 ; N=24000000/230400=104.1666... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
749 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
750 TERMBRW_INI     .equ 6
751 TERMMCTLW_INI   .equ 2081h
752
753         .CASE 230400
754 ; Configure UART_TERM @ 230400 bauds / 12MHz
755 ; Configure UART_TERM @ 460800 bauds / 24MHz
756 ; N=24000000/460800=52.08333... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
757 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
758 TERMBRW_INI     .equ 3
759 TERMMCTLW_INI   .equ 0241h
760
761         .CASE 250000  ; DMX interface
762 ; Configure UART_TERM @ 250000 bauds / 12MHz
763 ; Configure UART_TERM @ 500000 bauds / 24MHz
764 ; N = 24000000/500000 = 48 ==> {UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
765 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
766 ;TERMBRW_INI     .equ 3
767 ;TERMMCTLW_INI   .equ 0001h
768
769         .CASE 460800
770 ; Configure UART_TERM @ 460800 bauds / 12MHz
771 ; Configure UART_TERM @ 921600 bauds / 24MHz
772 ; N = 24000000/921600 = 26.041666... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10  UCBRS0=fn(frac(N))=fn(0.0416)=0x00
773 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
774 TERMBRW_INI     .equ 1
775 TERMMCTLW_INI   .equ 00A1h
776
777         .CASE 500000 ; CP2102 baudrate
778 ; Configure UART_ @ 500000 bauds / 12MHz
779 ; Configure UART_ @ 1000000 bauds / 24MHz
780 ; N = 24000000/1000000 = 24 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
781 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
782 TERMBRW_INI     .equ 1
783 TERMMCTLW_INI   .equ 0041h
784
785         .CASE 614400
786 ; Configure UART_TERM @ 614400 bauds / 12MHz
787 ; Configure UART_TERM @ 1228800 bauds / 24MHz
788 ; N = 24000000/1228800 = 19.531... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=3,  UCBRS0=fn(frac(N))=fn(0.531)=0xAA
789 TERMBRW_INI     .equ 1
790 TERMMCTLW_INI   .equ 0AA31h
791
792         .CASE 921600
793 ; Configure UART_TERM @ 921600 bauds / 12MHz
794 ; Configure UART_TERM @ 1843200 bauds / 24MHz
795 ; N = 24000000/1843200 = 13.08203...  {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.08203)=0x02
796 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
797 TERMBRW_INI     .equ 13
798 TERMMCTLW_INI   .equ 00200h
799
800         .CASE 1000000
801 ; Configure UART_TERM @ 1000000 bauds / 12MHz
802 ; N = 12000000/1000000 = 12 ==> {UCOS16=0, UCBR0=int(N)=12, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
803 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
804 TERMBRW_INI     .equ 12
805 TERMMCTLW_INI   .equ 0
806
807         .CASE 1228800 ; PL2303TA baudrate
808 ; Configure UART_TERM @ 1228800 bauds / 12MHz
809 ; Configure UART_TERM @ 2457600 bauds / 24MHz
810 ; N = 24000000/2457600 = 9.765625... ==> {UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.765625)=0xDD
811 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
812 TERMBRW_INI     .equ 9
813 TERMMCTLW_INI   .equ 0dd00h
814
815         .CASE 1382400 ; CP2102 baudrate (with programming)
816 ; Configure UART_TERM @ 1382400 bauds / 12MHz
817 ; N = 12000000/1382400 = 8.68055... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.68055)=0x6B
818 TERMBRW_INI     .equ 8
819 TERMMCTLW_INI   .equ 06B00h
820
821         .CASE 1843200 ; CP2102 baudrate (with programming)
822 ; Configure UART_TERM @ 1843200 bauds / 12MHz
823 ; N = 12000000/1843200 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.5104)=0xaa
824 TERMBRW_INI     .equ 6
825 TERMMCTLW_INI   .equ 0AA00h
826
827         .CASE 2000000
828 ; Configure UART_TERM @ 2000000 bauds / 12MHz
829 ; Configure UART_TERM @ 4000000 bauds / 24MHz
830 ; N = 24000000/4000000 = 6... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
831 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
832 TERMBRW_INI     .equ 6
833 TERMMCTLW_INI   .equ 0
834
835         .CASE 2457600 ; PL2303TA baudrate
836 ; Configure UART_TERM @ 1228800 bauds / 12MHz
837 ; N = 12000000/2457600 = 4.8828... ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.8828)=0xF7
838 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
839 TERMBRW_INI     .equ 4
840 TERMMCTLW_INI   .equ 0F700h
841
842         .CASE 3000000 ; PL2303TA baudrate
843 ; Configure UART_TERM @ 3000000 bauds / 12MHz
844 ; Configure UART_TERM @ 6000000 bauds / 24MHz
845 ; N = 24000000/6000000 = 4 ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
846 TERMBRW_INI     .equ 4
847 TERMMCTLW_INI   .equ 0
848
849         .ELSECASE
850             .error "UART_TERM / 12 MHz : baudrate not implemented"
851         .ENDCASE ; UART_TERM / 12 MHz baudrates
852
853
854     .ELSEIF FREQUENCY = 16
855         .SWITCH TERMINALBAUDRATE
856         .CASE 9600
857 ; Configure UART_TERM @ 9600 bauds / 16MHz
858 ; N=16000000/9600=1666.666... ==> UCOS16=1, UCBR0=int(N/16)=104, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
859 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
860 TERMBRW_INI     .equ 104
861 TERMMCTLW_INI   .equ 0D621h
862
863         .CASE 19200
864 ; Configure UART_TERM @ 19200 bauds / 16MHz
865 ; N=16000000/19200=833.333... ==> UCOS16=1, UCBR0=int(N/16)=52, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.33333)=0x49
866 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
867 TERMBRW_INI     .equ 52
868 TERMMCTLW_INI   .equ 4911h
869
870         .CASE 31250  ; MIDI interface
871 ; Configure UART_TERM @ 31250 bauds / 16MHz
872 ; N=16000000/31250=512 ==> UCOS16=1, UCBR0=int(N/16)=32, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
873 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
874 TERMBRW_INI     .equ 32
875 TERMMCTLW_INI   .equ 0001h
876
877         .CASE 38400
878 ; Configure UART_TERM @ 38400 bauds / 16MHz
879 ; N=16000000/19200=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.66666)=0xD6
880 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
881 TERMBRW_INI     .equ 26
882 TERMMCTLW_INI   .equ 0D601h
883
884         .CASE 57600
885 ; Configure UART_TERM @ 57600 bauds / 16MHz
886 ; N=16000000/57600=277.777... ==> UCOS16=1, UCBR0=int(N/16)=17, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.77777)=0xDD
887 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
888 TERMBRW_INI     .equ 17
889 TERMMCTLW_INI   .equ 0DD51h
890
891         .CASE 100000
892 ; Configure UCBx_TERM for I2C @ 100kHZ / 16MHz
893 TERMBRW_INI     .equ 160
894 TERMMCTLW_INI   .equ 0
895
896         .CASE 115200
897 ; Configure UART_TERM @ 115200 bauds / 16MHz
898 ; N=16000000/115200=138.888... ==> UCOS16=1, UCBR0=int(N/16)=8, UCBRF0=int(frac(N/16)*16)=10, UCBRS0= fn(frac(N))=fn(0.88888)=0xF7
899 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
900 TERMBRW_INI     .equ 8
901 TERMMCTLW_INI   .equ 0F7A1h
902
903         .CASE 230400
904 ; Configure UART_TERM @ 230400 bauds / 16MHz
905 ; N=16000000/230400=69.444... ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=5, UCBRS0= fn(frac(N))=fn(0.44444)=0x55
906 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
907 TERMBRW_INI     .equ 4
908 TERMMCTLW_INI   .equ 5551h
909
910         .CASE 250000  ; DMX interface
911 ; Configure UART_TERM @ 250000 bauds / 16MHz
912 ; N=16000000/250000=64 ==> UCOS16=1, UCBR0=int(N/16)=4, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
913 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
914 TERMBRW_INI     .equ 4
915 TERMMCTLW_INI   .equ 0001h
916
917         .CASE 460800
918 ; Configure UART_TERM @ 460800 bauds / 16MHz
919 ; N=16000000/460800=34.7222... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0.72222)=0xBB
920 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
921 TERMBRW_INI     .equ 2
922 TERMMCTLW_INI   .equ 0BB21h
923
924         .CASE 500000 ; CP2102 baudrate
925 ; Configure UART_TERM @ 500000 bauds / 16MHz
926 ; N = 16000000/500000 = 32 ==> {UCOS16=1, UCBR0=int(N/16)=2, UCBRF1=int(frac(N/16)*16)=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
927 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
928 ;TERMBRW_INI     .equ 2
929 ;TERMMCTLW_INI   .equ 00001h
930
931         .CASE 921600
932 ; Configure UART_TERM @ 921600 bauds / 16MHz
933 ; Configure UART_TERM @ 460800 bauds / 8MHz
934 ; see table "Recommended Settings for Typical Crystals and Baudrates"
935 TERMBRW_INI     .equ 17
936 TERMMCTLW_INI   .equ 04A00h
937
938         .CASE 1000000
939 ; Configure UART_TERM @ 1000000 bauds / 16MHz
940 ; N = 16000000/1000000 = 16 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
941 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
942 TERMBRW_INI     .equ 1
943 TERMMCTLW_INI   .equ 00001h
944
945         .CASE 1228800 ; PL2303TA baudrate
946 ; Configure UART_TERM @ 1228800 bauds / 16MHz
947 ; Configure UART_TERM @ 614400 bauds / 8MHz
948 ; N = 8000000/614400 = 13.02083... ==> {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.02083)=0x02
949 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
950 TERMBRW_INI     .equ 13
951 TERMMCTLW_INI   .equ 00200h
952
953         .CASE 1382400 ; CP2102 baudrate (with programming)
954 ; Configure UART_TERM @ 1382400 bauds / 16MHz
955 ; N = 16000000/1382400 = 11.574074... ==> {UCOS16=0, UCBR0=int(N)=11, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.68055)=0x6B
956 TERMBRW_INI     .equ 11
957 TERMMCTLW_INI   .equ 06B00h
958
959         .CASE 1843200 ; CP2102 baudrate (with programming)
960 ; Configure UART_TERM @ 1843200 bauds / 16MHz
961 ; N = 16000000/1843200 = 8.680555... ==> {UCOS16=0, UCBR1=int(N)=8, UCBRF1=dont_care=0  UCBRS1=fn(frac(N))=fn(0.68055)=0xD6
962 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
963 TERMBRW_INI     .equ 8
964 TERMMCTLW_INI   .equ 0D600h
965
966         .CASE 2000000
967 ; Configure UART_TERM @ 2000000 bauds / 16MHz
968 ; N = 16000000/2000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
969 TERMBRW_INI     .equ 8
970 TERMMCTLW_INI   .equ 00000h
971
972         .CASE 2457600 ; PL2303TA baudrate
973 ; Configure UART_TERM @ 1228800 bauds / 8MHz
974 ; N = 8000000/1228800 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.510416)=0xAA
975 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
976 TERMBRW_INI     .equ 6
977 TERMMCTLW_INI   .equ 0AA00h
978
979         .CASE 2764800
980 ; Configure UART_TERM @ 2764800 bauds / 16MHz
981 ; N = 16000000/2764800 = 5.787037... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.787037)=0xED
982 TERMBRW_INI     .equ 5
983 TERMMCTLW_INI   .equ 0DD00h
984
985         .CASE 3000000 ; PL2303TA baudrate
986 ; Configure UART_TERM @ 3000000 bauds / 16MHz
987 ; N = 16000000/3000000 = 5.333333... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.333333)=0x49
988 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
989 TERMBRW_INI     .equ 5
990 TERMMCTLW_INI   .equ 04900h
991
992         .CASE 4000000 ; PL203HXD baudrate
993 ; Configure UART_TERM @ 4000000 bauds / 16MHz
994 ; N = 16000000/4000000 = 4... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
995 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
996 TERMBRW_INI     .equ 4
997 TERMMCTLW_INI   .equ 0
998
999 ;         .CASE 5000000 ; PL203HXD baudrate
1000 ; ; Configure UART_TERM @ 5000000 bauds / 16MHz
1001 ; ; N = 16000000/5000000 = 3.2... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.2)=0x11
1002 ; ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1003 ; TERMBRW_INI     .equ 3
1004 ; TERMMCTLW_INI   .equ 02100h
1005 ;
1006 ;         .CASE 6000000 ; PL2303TA baudrate
1007 ; ; Configure UART_TERM @ 6000000 bauds / 24MHz
1008 ; ; N = 16000000/6000000 = 2.6666.. ==> {UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.6666)=0xB6
1009 ; TERMBRW_INI     .equ 2
1010 ; TERMMCTLW_INI   .equ 0B600h
1011
1012         .ELSECASE
1013             .error "UART_TERM / 16 MHz : baudrate not implemented"
1014         .ENDCASE ; UART_TERM / 16 MHz baudrates
1015
1016     .ELSEIF FREQUENCY = 20
1017         .SWITCH TERMINALBAUDRATE
1018         .CASE 9600
1019 ; Configure UART_TERM @ 9600 bauds / 20MHz
1020 ; N=20000000/9600=2083.3333 ==> UCOS16=1, UCBR0=int(N/16)=130, UCBRF0=int(frac(N/16)*16)=3, UCBRS0= fn(frac(N))=(fn(.3333))=0x25
1021 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1022 TERMBRW_INI     .equ 130
1023 TERMMCTLW_INI   .equ 2531h
1024
1025         .CASE 19200
1026 ; Configure UART_TERM @ 19200 bauds / 20MHz
1027 ; N=20000000/19200=1041.66666 ==> UCOS16=1, UCBR0=int(N/16)=65, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0.66666)=0xd6
1028 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1029 TERMBRW_INI     .equ 65
1030 TERMMCTLW_INI   .equ 0D611h
1031
1032         .CASE 31250  ; MIDI interface
1033 ; Configure UART_TERM @ 31250 bauds / 20MHz
1034 ; N=20000000/31250=640 ==> UCOS16=1, UCBR0=int(N/16)=40, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
1035 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1036 TERMBRW_INI     .equ 40
1037 TERMMCTLW_INI   .equ 0001h
1038
1039         .CASE 38400
1040 ; Configure UART_TERM @ 38400 bauds / 20MHz
1041 ; N=20000000/38400=520.833333 ==> UCOS16=1, UCBR0=int(N/16)=32, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0)=0xBF
1042 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1043 TERMBRW_INI     .equ 32
1044 TERMMCTLW_INI   .equ 0BF01h
1045
1046         .CASE 57600
1047 ; Configure UART_TERM @ 57600 bauds / 20MHz
1048 ; N=20000000/57600=346.0207... ==> UCOS16=1, UCBR0=int(N/16)=21, UCBRF0=int(frac(N/16)*16)=0Ah, UCBRS0= fn(frac(N))=fn(0.0207)=0x00
1049 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1050 TERMBRW_INI     .equ 21
1051 TERMMCTLW_INI   .equ 000A1h
1052
1053         .CASE 100000
1054 ; Configure UCBx_TERM for I2C @ 100kHZ / 20MHz
1055 TERMBRW_INI     .equ 200
1056 TERMMCTLW_INI   .equ 0
1057
1058         .CASE 115200
1059 ; Configure UART_TERM @ 115200 bauds / 20MHz
1060 ; N=20000000/115200=173.61111... ==> UCOS16=1, UCBR0=int(N/16)=10, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.6111)=0xAD
1061 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1062 TERMBRW_INI     .equ 10
1063 TERMMCTLW_INI   .equ 0AD01h
1064
1065         .CASE 230400
1066 ; Configure UART_TERM @ 230400 bauds / 20MHz
1067 ; N=20000000/230400=86.80555... ==> UCOS16=1, UCBR0=int(N/16)=5, UCBRF0=int(frac(N/16)*16)=6, UCBRS0= fn(frac(N))=fn(0.80555)=0xEE
1068 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1069 TERMBRW_INI     .equ 5
1070 TERMMCTLW_INI   .equ 0EE61h
1071
1072         .CASE 250000  ; DMX interface
1073 ; Configure UART_TERM @ 250000 bauds / 20MHz
1074 ; N=20000000/250000=80 ==> UCOS16=1, UCBR0=int(N/16)=5, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
1075 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1076 TERMBRW_INI     .equ 5
1077 TERMMCTLW_INI   .equ 0001h
1078
1079         .CASE 460800
1080 ; Configure UART_TERM @ 460800 bauds / 20MHz
1081 ; N=20000000/460800=43.402777... ==> UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=0Bh, UCBRS0= fn(frac(N))=fn(0.4027)=0x92
1082 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1083 TERMBRW_INI     .equ 2
1084 TERMMCTLW_INI   .equ 92B1h
1085
1086         .CASE 500000 ; CP2102 baudrate
1087 ; Configure UART_TERM @ 500000 bauds / 20MHz
1088 ; N = 20000000/500000 = 40 ==> {UCOS16=1, UCBR0=int(N/16)=2, UCBRF0=int(frac(N/16)*16)=8  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
1089 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1090 TERMBRW_INI     .equ 2
1091 TERMMCTLW_INI   .equ 0081h
1092
1093         .CASE 921600
1094 ; Configure UART_TERM @ 921600 bauds / 20MHz
1095 ; N = 20000000/921600 = 21.701388... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=5  UCBRS0=fn(frac(N))=fn(0.70138)=0xB7
1096 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1097 TERMBRW_INI     .equ 1
1098 TERMMCTLW_INI   .equ 0B751h
1099
1100         .CASE 1000000
1101 ; Configure UART_TERM @ 1000000 bauds / 20MHz
1102 ; N = 20000000/1000000 = 20 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
1103 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1104 TERMBRW_INI     .equ 1
1105 TERMMCTLW_INI   .equ 0041h
1106
1107         .CASE 1228800
1108 ; Configure UART_TERM @ 1228800 bauds / 20MHz
1109 ; N = 20000000/1228800 = 16.276... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=0,  UCBRS0=fn(frac(N))=fn(0.276)=0x44
1110 TERMBRW_INI     .equ 1
1111 TERMMCTLW_INI   .equ 04411h
1112
1113         .CASE 1382400
1114 ; Configure UART_TERM @ 1382400 bauds / 20MHz
1115 ; N = 20000000/1382400 = 14.46759... ==> {UCOS16=0, UCBR0=int(N)=14, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.46759)=0x55
1116 TERMBRW_INI     .equ 14
1117 TERMMCTLW_INI   .equ 05500h
1118
1119         .CASE 1843200
1120 ; Configure UART_TERM @ 1843200 bauds / 20MHz
1121 ; N = 20000000/1843200 = 10.85069...  {UCOS16=0, UCBR0=int(N)=10, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.85069)=0xDF
1122 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1123 TERMBRW_INI     .equ 10
1124 TERMMCTLW_INI   .equ 0DF00h
1125
1126         .CASE 2457600 ; PL2303TA baudrate
1127 ; Configure UART_TERM @ 2457600 bauds / 20MHz
1128 ; N = 20000000/2457600 = 8.13802... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.13802)=0x11
1129 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1130 TERMBRW_INI     .equ 8
1131 TERMMCTLW_INI   .equ 01100h
1132
1133         .CASE 3000000 ; PL2303TA baudrate
1134 ; Configure UART_TERM @ 3000000 bauds / 20MHz
1135 ; N = 20000000/3000000 = 6.666666 ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.66666)=0xD6
1136 TERMBRW_INI     .equ 6
1137 TERMMCTLW_INI   .equ 0D600h
1138
1139         .CASE 4000000 ; PL2303HXD baudrate
1140 ; Configure UART_TERM @ 4000000 bauds / 20MHz
1141 ; N = 20000000/4000000 = 5... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
1142 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1143 TERMBRW_INI     .equ 5
1144 TERMMCTLW_INI   .equ 0
1145
1146         .CASE 5000000 ; PL203HXD baudrate
1147 ; Configure UART_TERM @ 5000000 bauds / 20MHz
1148 ; N = 20000000/5000000 = 4... ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.00)=0x00
1149 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1150 TERMBRW_INI     .equ 4
1151 TERMMCTLW_INI   .equ 0
1152
1153 ;         .CASE 6000000 ; PL2303TA baudrate
1154 ; ; Configure UART_TERM @ 6000000 bauds / 20MHz
1155 ; ; N = 20000000/6000000 = 3.3333333 ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.33333)=0x49
1156 ; TERMBRW_INI     .equ 3
1157 ; TERMMCTLW_INI   .equ 04900h
1158
1159         .ELSECASE
1160             .error "UART_TERM / 20 MHz : baudrate not implemented"
1161         .ENDCASE ; UART_TERM / 20 MHz baudrates
1162
1163     .ELSEIF FREQUENCY = 24
1164         .SWITCH TERMINALBAUDRATE
1165         .CASE 9600
1166 ; Configure UART_TERM @ 9600 bauds / 24MHz
1167 ; N=24000000/9600=2500 ==> UCOS16=1, UCBR0=int(N/16)=156, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=(fn(0))=0x00
1168 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1169 TERMBRW_INI     .equ 9Ch
1170 TERMMCTLW_INI   .equ 0041h
1171
1172         .CASE 19200
1173 ; Configure UART_TERM @ 19200 bauds / 24MHz
1174 ; N=24000000/19200=1250 ==> UCOS16=1, UCBR0=int(N/16)=78, UCBRF0=int(frac(N/16)*16)=2, UCBRS0= fn(frac(N))=fn(0)=0x00
1175 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1176 TERMBRW_INI     .equ 4Eh
1177 TERMMCTLW_INI   .equ 0021h
1178
1179         .CASE 31250  ; MIDI interface
1180 ; Configure UART_TERM @ 31250 bauds / 8MHz
1181 ; N=24000000/31250=768 ==> UCOS16=1, UCBR0=int(N/16)=48, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
1182 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1183 TERMBRW_INI     .equ 48
1184 TERMMCTLW_INI   .equ 0001h
1185
1186         .CASE 38400
1187 ; Configure UART_TERM @ 38400 bauds / 24MHz
1188 ; N=24000000/19200=625 ==> UCOS16=1, UCBR0=int(N/16)=39, UCBRF0=int(frac(N/16)*16)=1, UCBRS0= fn(frac(N))=fn(0)=0x00
1189 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1190 TERMBRW_INI     .equ 39
1191 TERMMCTLW_INI   .equ 0011h
1192
1193         .CASE 57600
1194 ; Configure UART_TERM @ 57600 bauds / 24MHz
1195 ; N=24000000/57600=416.666... ==> UCOS16=1, UCBR0=int(N/16)=26, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.666)=0xD6
1196 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1197 TERMBRW_INI     .equ 26
1198 TERMMCTLW_INI   .equ 0D601h
1199
1200         .CASE 100000
1201 ; Configure UCBx_TERM for I2C @ 100kHZ / 24MHz
1202 TERMBRW_INI     .equ 240
1203 TERMMCTLW_INI   .equ 0
1204
1205         .CASE 115200
1206 ; Configure UART_TERM @ 115200 bauds / 24MHz
1207 ; N=24000000/115200=208.333... ==> UCOS16=1, UCBR0=int(N/16)=13, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0.333)=0x49
1208 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1209 TERMBRW_INI     .equ 13
1210 TERMMCTLW_INI   .equ 04901h
1211
1212         .CASE 230400
1213 ; Configure UART_TERM @ 230400 bauds / 24MHz
1214 ; N=24000000/230400=104.1666... ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=8, UCBRS0= fn(frac(N))=fn(0.1666)=0x20
1215 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1216 TERMBRW_INI     .equ 6
1217 TERMMCTLW_INI   .equ 2081h
1218
1219         .CASE 250000  ; DMX interface
1220 ; Configure UART_TERM @ 250000 bauds / 24MHz
1221 ; N=24000000/250000=96 ==> UCOS16=1, UCBR0=int(N/16)=6, UCBRF0=int(frac(N/16)*16)=0, UCBRS0= fn(frac(N))=fn(0)=0
1222 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1223 TERMBRW_INI     .equ 6
1224 TERMMCTLW_INI   .equ 0001h
1225
1226         .CASE 460800
1227 ; Configure UART_TERM @ 460800 bauds / 24MHz
1228 ; N=24000000/460800=52.08333... ==> UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=4, UCBRS0= fn(frac(N))=fn(0.0833)=0x02
1229 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1230 TERMBRW_INI     .equ 3
1231 TERMMCTLW_INI   .equ 0241h
1232
1233         .CASE 500000 ; CP2102 baudrate
1234 ; Configure UART_TERM @ 500000 bauds / 24MHz
1235 ; N = 24000000/500000 = 48 ==> {UCOS16=1, UCBR0=int(N/16)=3, UCBRF0=int(frac(N/16)*16)=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
1236 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1237 ;TERMBRW_INI     .equ 3
1238 ;TERMMCTLW_INI   .equ 0001h
1239
1240         .CASE 921600
1241 ; Configure UART_TERM @ 921600 bauds / 24MHz
1242 ; N = 24000000/921600 = 26.041666... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=10  UCBRS0=fn(frac(N))=fn(0.0416)=0x00
1243 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1244 TERMBRW_INI     .equ 1
1245 TERMMCTLW_INI   .equ 00A1h
1246
1247         .CASE 1000000
1248 ; Configure UART_TERM @ 1000000 bauds / 24MHz
1249 ; N = 24000000/1000000 = 24 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=4,  UCBRS0=fn(frac(N))=fn(0.000)=0x00
1250 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1251 TERMBRW_INI     .equ 1
1252 TERMMCTLW_INI   .equ 0041h
1253
1254         .CASE 1228800
1255 ; Configure UART_TERM @ 1228800 bauds / 24MHz
1256 ; N = 24000000/1228800 = 19.531... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=3,  UCBRS0=fn(frac(N))=fn(0.531)=0xAA
1257 TERMBRW_INI     .equ 1
1258 TERMMCTLW_INI   .equ 0AA31h
1259
1260         .CASE 1382400
1261 ; Configure UART_TERM @ 1382400 bauds / 24MHz
1262 ; N = 24000000/1382400 = 17.36111... ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=int(frac(N/16)*16)=1,  UCBRS0=fn(frac(N))=fn(0.3611)=0x4A
1263 TERMBRW_INI     .equ 1
1264 TERMMCTLW_INI   .equ 04A11h
1265
1266         .CASE 1843200
1267 ; Configure UART_TERM @ 1843200 bauds / 24MHz
1268 ; N = 24000000/1843200 = 13.08203...  {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.08203)=0x02
1269 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1270 TERMBRW_INI     .equ 13
1271 TERMMCTLW_INI   .equ 0200h
1272
1273         .CASE 2457600 ; PL2303TA baudrate
1274 ; Configure UART_TERM @ 2457600 bauds / 24MHz
1275 ; N = 24000000/2457600 = 9.765625... ==> {UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.765625)=0xDD
1276 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1277 TERMBRW_INI     .equ 9
1278 TERMMCTLW_INI   .equ 0DD00h
1279
1280         .CASE 3000000 ; PL2303TA baudrate
1281 ; Configure UART_TERM @ 3000000 bauds / 24MHz
1282 ; N = 24000000/3000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
1283 TERMBRW_INI     .equ 8
1284 TERMMCTLW_INI   .equ 0
1285
1286         .CASE 4000000 ; PL2303HXD baudrate
1287 ; Configure UART_TERM @ 4000000 bauds / 24MHz
1288 ; N = 24000000/4000000 = 6... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
1289 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1290 TERMBRW_INI     .equ 6
1291 TERMMCTLW_INI   .equ 0
1292
1293         .CASE 5000000 ; PL203HXD baudrate
1294 ; Configure UART_TERM @ 5000000 bauds / 24MHz
1295 ; N = 24000000/5000000 = 4.8... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.8)=0xEE
1296 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
1297 TERMBRW_INI     .equ 4
1298 TERMMCTLW_INI   .equ 0EE00h
1299
1300         .CASE 6000000 ; PL2303TA baudrate
1301 ; Configure UART_TERM @ 6000000 bauds / 24MHz
1302 ; N = 24000000/6000000 = 4 ==> {UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0  UCBRS0=fn(frac(N))=fn(0.00000)=0x00
1303 TERMBRW_INI     .equ 4
1304 TERMMCTLW_INI   .equ 0
1305
1306         .ELSECASE
1307             .error "UART_TERM / 24 MHz : baudrate not implemented"
1308         .ENDCASE ; UART_TERM / 24MHz baudrates
1309     .ELSEIF
1310         .error "UART_TERM frequency not implemented"
1311     .ENDIF ; frequency