OSDN Git Service

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