OSDN Git Service

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