2 ; TERM alias eUSCI_Ax : select baudrate versus frequency
4 .SWITCH TERMINALBAUDRATE
7 ; Configure UART0 @ 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
11 MOV.W #00A1h, &TERMMCTLW
13 .CASE 19200 ; PL2303TA baudrate
14 ; Configure UART0 @ 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
18 MOV.W #1100h,&TERMMCTLW
20 .CASE 31250 ; MIDI interface
21 ; Configure UART0 @ 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
25 MOV.W #0000h,&TERMMCTLW
28 ; Configure UART0 @ 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
32 MOV.W #0AA00h,&TERMMCTLW
34 .CASE 57600 ; PL2303TA baudrate
35 ; Configure UART0 @ 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
39 MOV.W #04900h,&TERMMCTLW
42 .error "UART0 / 250 kHz : baudrate not implemented"
46 .ELSEIF FREQUENCY = 0.5
47 .SWITCH TERMINALBAUDRATE
49 ; Configure UART0 @ 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
53 MOV.W #0241h,&TERMMCTLW
56 ; Configure UART0 @ 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
60 MOV.W #00A1h, &TERMMCTLW
62 .CASE 31250 ; MIDI interface
63 ; Configure UART0 @ 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
67 MOV.W #0000h,&TERMMCTLW
69 .CASE 38400 ; PL2303TA baudrate
70 ; Configure UART0 @ 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
74 MOV.W #1100h,&TERMMCTLW
77 ; Configure UART0 @ 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
81 MOV.W #0D600h,&TERMMCTLW
83 .CASE 100800 ; PL2303TA baudrate
84 ; Configure UART0 @ 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
88 MOV.W #0FE00h,&TERMMCTLW
91 ; Configure UART0 @ 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
95 MOV.W #04900h,&TERMMCTLW
97 .CASE 134400 ; PL2303TA baudrate
98 ; Configure UART0 @ 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
102 MOV.W #0BB00h,&TERMMCTLW
104 ; .CASE 161280 ; PL2303TA baudrate
105 ;; Configure UART0 @ 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
109 ; MOV.W #01100h,&TERMMCTLW
112 .error "UART0 / 500 kHz : baudrate not implemented"
116 .ELSEIF FREQUENCY = 1
117 .SWITCH TERMINALBAUDRATE
119 ; Configure UART0 @ 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
123 MOV #2081h, &TERMMCTLW
126 ; Configure UART0 @ 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
130 MOV.W #0241h,&TERMMCTLW
132 .CASE 31250 ; MIDI interface
133 ; Configure UART0 @ 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
137 MOV.W #0001h,&TERMMCTLW
140 ; Configure UART0 @ 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
144 MOV.W #00A1h, &TERMMCTLW
147 ; Configure UART0 @ 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
151 MOV.W #04A00h,&TERMMCTLW
153 .CASE 100800 ; PL2303TA baudrate
154 ; Configure UART0 @ 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
158 MOV.W #0FD00h,&TERMMCTLW
161 ; Configure UART0 @ 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
165 MOV.W #0D600h,&TERMMCTLW
167 .CASE 134400 ; PL2303TA baudrate
168 ; Configure UART0 @ 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
172 MOV.W #05500h,&TERMMCTLW
174 .CASE 161280 ; PL2303TA baudrate
175 ; Configure UART0 @ 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
179 MOV.W #01100h,&TERMMCTLW
181 .CASE 201600 ; PL2303TA baudrate
182 ; Configure UART0 @ 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
186 MOV.W #0FE00h,&TERMMCTLW
189 ; Configure UART0 @ 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
193 MOV.W #04900h,&TERMMCTLW
195 .CASE 250000 ; DMX interface
196 ; Configure UART0 @ 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
200 MOV.W #0000h,&TERMMCTLW
202 .CASE 268800 ; PL2303TA baudrate
203 ; Configure UART0 @ 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
207 MOV.W #0BB00h,&TERMMCTLW
209 ; .CASE 403200 ; PL2303TA baudrate
210 ;; Configure UART0 @ 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
214 ; MOV.W #05500h,&TERMMCTLW
218 .error "UART0 / 1 MHz : baudrate not implemented"
221 .ELSEIF FREQUENCY = 2
222 .SWITCH TERMINALBAUDRATE
224 ; Configure UART0 @ 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
228 MOV.W #4901h, &TERMMCTLW
231 ; Configure UART0 @ 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
235 MOV #2081h, &TERMMCTLW
237 .CASE 31250 ; MIDI interface
238 ; Configure UART0 @ 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
242 MOV.W #0001h,&TERMMCTLW
245 ; Configure UART0 @ 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
249 MOV.W #0241h,&TERMMCTLW
252 ; Configure UART0 @ 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
256 MOV.W #0BB21h,&TERMMCTLW
259 ; Configure UART0 @ 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
263 MOV.W #04A00h,&TERMMCTLW
266 ; Configure UART0 @ 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
270 MOV.W #0D600h,&TERMMCTLW
272 .CASE 250000 ; DMX interface
273 ; Configure UART0 @ 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
277 MOV.W #0000h,&TERMMCTLW
279 .CASE 268800 ; PL2303TA baudrate
280 ; Configure UART0 @ 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
284 MOV.W #05500h,&TERMMCTLW
286 .CASE 403200 ; PL2303TA baudrate
287 ; Configure UART0 @ 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
291 MOV.W #0FE00h,&TERMMCTLW
293 .CASE 460800 ; CP2102 baudrate (with programming)
294 ; Configure UART0 @ 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
298 MOV.W #04900h,&TERMMCTLW
300 .CASE 614400 ; PL2303TA baudrate
301 ; Configure UART0 @ 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
305 MOV.W #04400h,&TERMMCTLW
307 ; .CASE 806400 ; PL2303TA baudrate
308 ;; Configure UART0 @ 403200 bauds / 1MHz
309 ;; N=1000000/403200=2.48016 ==> UCOS16=0, UCBR0=int(N)=2, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.48016)=0x55
310 ;; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
312 ; MOV.W #05500h,&TERMMCTLW
316 .error "UART0 / 2 MHz : baudrate not implemented"
319 .ELSEIF FREQUENCY = 4
320 .SWITCH TERMINALBAUDRATE
322 ; Configure UART0 @ 9600 bauds / 4MHz
323 ; 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
324 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
326 MOV.W #0D601h,&TERMMCTLW
329 ; Configure UART0 @ 19200 bauds / 4MHz
330 ; 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
331 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
333 MOV.W #4901h, &TERMMCTLW
335 .CASE 31250 ; MIDI interface
336 ; Configure UART0 @ 31250 bauds / 4MHz
337 ; 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
338 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
340 MOV.W #0001h,&TERMMCTLW
343 ; Configure UART0 @ 38400 bauds / 4MHz
344 ; 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
345 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
347 MOV.W #02081h,&TERMMCTLW
350 ; Configure UART0 @ 57600 bauds / 4MHz
351 ; 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
352 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
354 MOV.W #5551h, &TERMMCTLW
357 ; Configure UART0 @ 115200 bauds / 4MHz
358 ; 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
359 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
361 MOV.W #0BB21h,&TERMMCTLW
364 ; Configure UART0 @ 230400 bauds / 4MHz
365 ; see table "Recommended Settings for Typical Crystals and Baudrates"
367 MOV.W #04A00h,&TERMMCTLW
369 .CASE 250000 ; DMX interface
370 ; Configure UART0 @ 250000 bauds / 4MHz
371 ; 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
372 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
374 MOV.W #0001h, &TERMMCTLW
377 ; Configure UART0 @ 460800 bauds / 4MHz
378 ; N = 8000000/921600 = 8.680555... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.68055)=0xD6
379 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
381 MOV.W #0D600h,&TERMMCTLW
383 .CASE 806400 ; PL2303TA baudrate
384 ; Configure UART0 @ 201600 bauds / 1MHz
385 ; N=1000000/201600=4.955401 ==> UCOS16=0, UCBR0=int(N)=4, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.200396)=0xFE
386 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
388 MOV.W #0FE00h,&TERMMCTLW
390 .CASE 921600 ; CP2102 baudrate (with programming)
391 ; Configure UART0 @ 921600 bauds / 4MHz
392 ; N = 8000000/921600 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0 UCBRS1=fn(frac(N))=fn(0.34027)=0x49
393 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
395 MOV.W #04900h,&TERMMCTLW
397 .CASE 1228800 ; PL2303TA baudrate
398 ; Configure UART0 @ 2457600 bauds / 8MHz
399 ; N = 8000000/1228800 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
400 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
402 MOV.W #04400h,&TERMMCTLW
406 .error "UART0 / 4 MHz : baudrate not implemented"
407 .ENDCASE ; UART0 / 4 MHz baudrates
410 .ELSEIF FREQUENCY = 8
411 .SWITCH TERMINALBAUDRATE
413 ; Configure UART0 @ 9600 bauds / 8MHz
414 ; 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
416 MOV #4911h, &TERMMCTLW
419 ; Configure UART0 @ 19200 bauds / 8MHz
420 ; 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
421 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
423 MOV.W #0D601h,&TERMMCTLW
425 .CASE 31250 ; MIDI interface
426 ; Configure UART0 @ 31250 bauds / 8MHz
427 ; 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
428 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
430 MOV.W #0001h,&TERMMCTLW
433 ; Configure UART0 @ 38400 bauds / 8MHz
434 ; 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
435 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
437 MOV.W #4901h, &TERMMCTLW
440 ; Configure UART0 @ 57600 bauds / 8MHz
441 ; 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
442 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
444 MOV.W #0F7A1h,&TERMMCTLW
447 ; Configure UART0 @ 115200 bauds / 8MHz
448 ; 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
449 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
451 MOV.W #5551h, &TERMMCTLW
454 ; Configure UART0 @ 230400 bauds / 8MHz
455 ; 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
456 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
458 MOV.W #0BB21h,&TERMMCTLW
460 .CASE 250000 ; DMX interface
461 ; Configure UART0 @ 250000 bauds / 8MHz
462 ; 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
463 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
465 MOV.W #0001h, &TERMMCTLW
468 ; Configure UART0 @ 460800 bauds / 8MHz
469 ; see table "Recommended Settings for Typical Crystals and Baudrates"
471 MOV.W #04A00h,&TERMMCTLW
473 .CASE 614400 ; PL2303TA baudrate
474 ; Configure UART0 @ 614400 bauds / 8MHz
475 ; N = 8000000/614400 = 13.02083... ==> {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.02083)=0x02
476 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
478 MOV.W #00200h,&TERMMCTLW
480 .CASE 806400 ; PL2303TA baudrate
481 ; Configure UART0 @ 100800 bauds / 1MHz
482 ; N=1000000/100800=9,920634 ==> UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0= fn(frac(N))=fn(0.920634)=0xFD
483 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
485 MOV.W #0FD00h,&TERMMCTLW
488 ; Configure UART0 @ 921600 bauds / 8MHz
489 ; N = 8000000/921600 = 8.680555... ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.68055)=0xD6
490 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
492 MOV.W #0D600h,&TERMMCTLW
495 ; Configure UART0 @ 2000000 bauds / 16MHz
496 ; N = 16000000/2000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.00000)=0x00
498 MOV.W #00000h,&TERMMCTLW
500 .CASE 1228800 ; PL2303TA baudrate
501 ; Configure UART0 @ 1228800 bauds / 8MHz
502 ; N = 8000000/1228800 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.510416)=0xAA
503 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
505 MOV.W #0AA00h,&TERMMCTLW
507 .CASE 1382400 ; CP2102 baudrate
508 ; Configure UART0 @ 1382400 bauds / 8MHz
509 ; N = 8000000/1382400 = 5.787037... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.787037)=0xED
511 MOV.W #0DD00h,&TERMMCTLW
513 .CASE 1843200 ; CP2102 baudrate (with programming)
514 ; Configure UART0 @ 1843200 bauds / 8MHz
515 ; N = 16000000/1843200 = 4.34027... ==> {UCOS16=0, UCBR1=int(N)=4, UCBRF1=dont_care=0 UCBRS1=fn(frac(N))=fn(0.34027)=0x49
516 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
518 MOV.W #04900h,&TERMMCTLW
520 .CASE 2457600 ; PL2303TA baudrate
521 ; Configure UART0 @ 2457600 bauds / 8MHz
522 ; N = 8000000/1228800 = 3.25521... ==> {UCOS16=0, UCBR0=int(N)=3, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.25521)=0x44
523 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
525 MOV.W #04400h,&TERMMCTLW
528 .error "UART0 / 8 MHz : baudrate not implemented"
529 .ENDCASE ; UART0 / 8 MHz baudrates
532 .ELSEIF FREQUENCY = 16
533 .SWITCH TERMINALBAUDRATE
535 ; Configure UART0 @ 9600 bauds / 16MHz
536 ; 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
537 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
539 MOV #0D621h, &TERMMCTLW
542 ; Configure UART0 @ 19200 bauds / 16MHz
543 ; 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
544 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
546 MOV #4911h, &TERMMCTLW
548 .CASE 31250 ; MIDI interface
549 ; Configure UART0 @ 31250 bauds / 8MHz
550 ; 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
551 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
553 MOV.W #0001h,&TERMMCTLW
556 ; Configure UART0 @ 38400 bauds / 16MHz
557 ; 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
558 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
560 MOV.W #0D601h,&TERMMCTLW
563 ; Configure UART0 @ 57600 bauds / 16MHz
564 ; 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
565 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
567 MOV.W #0DD51h,&TERMMCTLW
570 ; Configure UART0 @ 115200 bauds / 16MHz
571 ; 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
572 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
574 MOV.W #0F7A1h,&TERMMCTLW
577 ; Configure UART0 @ 230400 bauds / 16MHz
578 ; 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
579 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
581 MOV.W #5551h, &TERMMCTLW
583 .CASE 250000 ; DMX interface
584 ; Configure UART0 @ 250000 bauds / 16MHz
585 ; 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
586 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
588 MOV.W #0001h, &TERMMCTLW
591 ; Configure UART0 @ 460800 bauds / 16MHz
592 ; 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
593 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
595 MOV.W #0BB21h,&TERMMCTLW
597 .CASE 500000 ; CP2102 baudrate
598 ; Configure UART0 @ 500000 bauds / 16MHz
599 ; N = 16000000/500000 = 32 ==> {UCOS16=1, UCBR0=int(N/16)=2, UCBRF1=0 UCBRS0=fn(frac(N))=fn(0.00000)=0x00
600 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
602 ; MOV.W #00001h,&TERMMCTLW
605 ; Configure UART0 @ 921600 bauds / 16MHz
606 ; see "Configure UART1 @ 460800 bauds / 8MHz"
608 MOV.W #04A00h,&TERMMCTLW
611 ; Configure UART0 @ 1000000 bauds / 16MHz
612 ; N = 16000000/1000000 = 16 ==> {UCOS16=1, UCBR0=int(N/16)=1, UCBRF0=0 UCBRS0=fn(frac(N))=fn(0.00000)=0x00
613 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
615 MOV.W #00001h,&TERMMCTLW
617 .CASE 1228800 ; PL2303TA baudrate
618 ; Configure UART0 @ 614400 bauds / 8MHz
619 ; N = 8000000/614400 = 13.02083... ==> {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.02083)=0x02
620 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
622 MOV.W #00200h,&TERMMCTLW
624 .CASE 1382400 ; CP2102 baudrate (with programming)
625 ; Configure UART0 @ 1382400 bauds / 16MHz
626 ; N = 16000000/1382400 = 11.574074... ==> {UCOS16=0, UCBR0=int(N)=11, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.68055)=0x6B
628 MOV.W #06B00h,&TERMMCTLW
630 .CASE 1843200 ; CP2102 baudrate (with programming)
631 ; Configure UART0 @ 1843200 bauds / 16MHz
632 ; N = 16000000/1843200 = 8.680555... ==> {UCOS16=0, UCBR1=int(N)=8, UCBRF1=dont_care=0 UCBRS1=fn(frac(N))=fn(0.68055)=0xD6
633 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
635 MOV.W #0D600h,&TERMMCTLW
638 ; Configure UART0 @ 2000000 bauds / 16MHz
639 ; N = 16000000/2000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.00000)=0x00
641 MOV.W #00000h,&TERMMCTLW
643 .CASE 2457600 ; PL2303TA baudrate
644 ; Configure UART0 @ 1228800 bauds / 8MHz
645 ; N = 8000000/1228800 = 6.510416... ==> {UCOS16=0, UCBR0=int(N)=6, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.510416)=0xAA
646 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
648 MOV.W #0AA00h,&TERMMCTLW
651 ; Configure UART0 @ 2764800 bauds / 16MHz
652 ; N = 16000000/2764800 = 5.787037... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.787037)=0xED
654 MOV.W #0DD00h,&TERMMCTLW
656 .CASE 3000000 ; PL2303TA baudrate
657 ; Configure UART0 @ 3000000 bauds / 16MHz
658 ; N = 16000000/3000000 = 5.333333... ==> {UCOS16=0, UCBR0=int(N)=5, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.333333)=0x49
659 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
661 MOV.W #04900h,&TERMMCTLW
663 .CASE 4000000 ; CP2102 baudrate
664 ; Configure UART0 @ 4000000 bauds / 16MHz
665 ; N = 16000000/4000000 = 4... ==> {UCOS16=0, UCBR0=int(N)=0, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.0000000)=0
666 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
671 .error "UART0 / 16 MHz : baudrate not implemented"
672 .ENDCASE ; UART0 / 16 MHz baudrates
674 .ELSEIF FREQUENCY = 24
675 .SWITCH TERMINALBAUDRATE
677 ; Configure UART0 @ 9600 bauds / 24MHz
678 ; 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
679 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
681 MOV #0041h, &TERMMCTLW
684 ; Configure UART0 @ 19200 bauds / 24MHz
685 ; 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
686 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
688 MOV #0021h, &TERMMCTLW
690 .CASE 31250 ; MIDI interface
691 ; Configure UART0 @ 31250 bauds / 8MHz
692 ; 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
693 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
695 MOV.W #0001h,&TERMMCTLW
698 ; Configure UART0 @ 38400 bauds / 24MHz
699 ; 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
700 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
702 MOV.W #0011h,&TERMMCTLW
705 ; Configure UART0 @ 57600 bauds / 24MHz
706 ; 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
707 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
709 MOV.W #0D601h,&TERMMCTLW
712 ; Configure UART0 @ 115200 bauds / 24MHz
713 ; 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
714 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
716 MOV.W #04901h,&TERMMCTLW
719 ; Configure UART0 @ 230400 bauds / 24MHz
720 ; 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
721 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
723 MOV.W #2081h, &TERMMCTLW
725 .CASE 250000 ; DMX interface
726 ; Configure UART0 @ 250000 bauds / 24MHz
727 ; 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
728 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
730 MOV.W #0001h, &TERMMCTLW
733 ; Configure UART0 @ 460800 bauds / 24MHz
734 ; 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
735 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
737 MOV.W #0241h,&TERMMCTLW
739 .CASE 500000 ; CP2102 baudrate
740 ; Configure UART0 @ 500000 bauds / 24MHz
741 ; 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
742 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
744 ; MOV.W #0001h,&TERMMCTLW
747 ; Configure UART0 @ 921600 bauds / 24MHz
748 ; 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
749 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
751 MOV.W #00A1h,&TERMMCTLW
754 ; Configure UART0 @ 1000000 bauds / 24MHz
755 ; 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
756 ; TERMBRW=UCBR1, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
758 MOV.W #0041h,&TERMMCTLW
761 ; Configure UART0 @ 1382400 bauds / 24MHz
762 ; 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
764 MOV.W #04A11h,&TERMMCTLW
767 ; Configure UART0 @ 1843200 bauds / 24MHz
768 ; N = 24000000/1843200 = 13.08203... {UCOS16=0, UCBR0=int(N)=13, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.08203)=0x02
769 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
771 MOV.W #0200h,&TERMMCTLW
773 .CASE 2457600 ; PL2303TA baudrate
774 ; Configure UART0 @ 2457600 bauds / 24MHz
775 ; N = 24000000/2457600 = 9.765625... ==> {UCOS16=0, UCBR0=int(N)=9, UCBRF0=dont_care=0, UCBRS0=fn(frac(N))=fn(0.765625)=0xDD
776 ; TERMBRW=UCBR0, TERMMCTLW= (UCBRS0<<8)|(UCBRF0<<4)|UCOS16
778 MOV.W #0DD00h,&TERMMCTLW
780 .CASE 3000000 ; PL2303TA baudrate
781 ; Configure UART0 @ 3000000 bauds / 24MHz
782 ; N = 24000000/3000000 = 8 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.00000)=0x00
784 MOV.W #0000h,&TERMMCTLW
786 .CASE 6000000 ; PL2303TA baudrate
787 ; Configure UART0 @ 6000000 bauds / 24MHz
788 ; N = 24000000/6000000 = 4 ==> {UCOS16=0, UCBR0=int(N)=8, UCBRF0=dont_care=0 UCBRS0=fn(frac(N))=fn(0.00000)=0x00
790 MOV.W #0000h,&TERMMCTLW
793 .error "UART0 / 24 MHz : baudrate not implemented"
794 .ENDCASE ; UART0 / 24MHz baudrates
797 .error "UART0 frequency not implemented"