OSDN Git Service

V 3.2
[fast-forth/master.git] / inc / LP_MSP430FR2476.asm
1 ; -*- coding: utf-8 -*-
2 ; LP_MSP430FR2476.asm
3
4 ; Fast Forth For Texas Instrument MSP430FR247
5 ;
6 ; Copyright (C) <2014>  <J.M. THOORENS>
7 ;
8 ; This program is free software: you can redistribute it and/or modify
9 ; it under the terms of the GNU General Public License as published by
10 ; the Free Software Foundation, either version 3 of the License, or
11 ; (at your option) any later version.
12 ;
13 ; This program is distributed in the hope that it will be useful,
14 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
15 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 ; GNU General Public License for more details.
17 ;
18 ; You should have received a copy of the GNU General Public License
19 ; along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21 ; ===================================================================================
22 ; in case of 3.3V powered by UARTtoUSB bridge, open J13 straps {RST,TST,V+,5V} BEFORE
23 ; ===================================================================================
24
25 ;     J101 Target    J101    eZ-FET             UARTtoUSB
26 ;
27 ;            DVSS 14 o--o 13 GND  
28 ;             5V0 12 o--o 11 5V0
29 ;            DVCC 10 o--o 9  3V3
30 ;    P1.5 UCA0_RX  8 o--o 7  <------------ TX   UARTtoUSB
31 ;    P1.4 UCA0_TX  6 o--o 5  <---------+-> RX   UARTtoUSB
32 ;     SBWTDIO/RST  4 o--o 3            |         _   
33 ;      SBWTCK/TST  2 o--o 1            +--4k7---o o-- GND
34 ;                                             DeepRST
35 ; SD_Card socket
36 ;  VCC -                       ----> VCC  SD_CardAdapter
37 ;  GND -                       <---> GND  SD_CardAdapter
38 ; P2.4 - UCA1 CLK       J2     ----> CLK  SD_CardAdapter (SCK)  
39 ; P2.6 - UCA1 TXD/SIMO  J1     ----> SDI  SD_CardAdapter (MOSI)
40 ; P2.5 - UCA1 RXD/SOMI  J1     <---- SDO  SD_CardAdapter (MISO)
41 ; P1.6 -                J4     ----> CS   SD_CardAdapter (Card Select)
42 ; P1.7 -                J4     <---- CD   SD_CardAdapter (Card Detect)
43
44 ; ======================================================================
45 ; LP_MSP430FR2476 board
46 ; ======================================================================
47
48 ; J1 - left ext.
49 ; 3v3
50 ; P1.6/UCA0CLK/TA1CLK/TDI/TCLK/A6     
51 ; P2.5/UCA1RXD/UCA1SOMI/CAP1.2
52 ; P2.6/UCA1TXD/UCA1SIMO/CAP1.3
53 ; P2.2/SYNC/ACLK/COMP0.1
54 ; P5.4/UCB1STE/TA3CLK/A11            
55 ; P3.5/UCB1CLK/TB0TRG/CAP3.1
56 ; P4.5/UCB0SOMI/UCB0SCL/TA3.2         
57 ; P1.3/UCB0SOMI/UCB0SCL/MCLK/A3
58 ; P1.2/UCB0SIMO/UCB0SDA/TA0.2/A2/VEREF-
59 ;
60 ;
61 ; J3 - left int.
62 ; 5V
63 ; GND
64 ; P1.7/UCA0STE/SMCLK/TDO/A7
65 ; P4.3/UCB1SOMI/UCB1SCL/TB0.5/A8
66 ; P4.4/UCB1SIMO/UCB1SDA/TB0.6/A9
67 ; P5.3/UCB1CLK/TA3.0/A10                      
68 ; P1.0/UCB0STE/TA0CLK/A0/VEREF+     -<J7>- LED1
69 ; P1.1/UCB0CLK/TA0.1/COMP0.0/A1     --- TEMPERATURE SENSOR ---<J9>--- 3V3
70 ; P5.7/TA2.1/COMP0.2 
71 ; P3.7/TA3.2/CAP2.0
72 ;
73 ; J4 - right int.
74 ; P5.2/UCA0TXD/UCA0SIMO/TB0.4                       
75 ; P5.1/UCA0RXD/UCA0SOMI/TB0.3       -<J8>- LED2Red
76 ; P5.0/UCA0CLK/TB0.2                -<J8>- LED2Green
77 ; P4.7/UCA0STE/TB0.1                -<J8>- LED2Blue
78 ; P6.0/TA2.2/COMP0.3
79 ; P3.3/TA2.1/CAP0.1
80 ; P6.1/TB0CLK
81 ; P6.2/TB0.0
82 ; P4.1/TA3.0/CAP2.2
83 ; P3.1/UCA1STE/CAP1.0
84 ;
85 ; J2 - right ext.
86 ; GND
87 ; P4.6/UCB0SIMO/UCB0SDA/TA3.1
88 ; P2.1/XIN
89 ; P2.0/XOUT
90 ; /RST/SBWTDIO
91 ; P3.2/UCB1SIMO/UCB1SDA/CAP3.2
92 ; P3.6/UCB1SOMI/UCB1SCL/CAP3.3
93 ; P4.2/TA3CLK/CAP2.3
94 ; P2.7/UCB1STE/CAP3.0
95 ; P2.4/UCA1CLK/CAP1.1
96 ;
97 ; switch-keys:
98 ; P4.0/TA3.1/CAP2.1                 - S1 
99 ; P2.3/TA2.0/CAP0.2                 - S2 
100 ; /RST                              - S3
101 ;
102 ; XTAL LF 32768 Hz
103 ; P2.0/XOUT
104 ; P2.1/XIN
105 ;
106 ;
107 ; Clocks:
108 ; 8 MHz DCO intern
109 ;
110 ;
111 ; ----------------------------------------------------------------------
112 ; INIT order : LOCK I/O, WDT, GPIOs, FRAM, Clock, UARTs
113 ; ----------------------------------------------------------------------
114
115 ; ----------------------------------------------------------------------
116 ; POWER ON RESET AND INITIALIZATION : LOCK PMM_LOCKLPM5
117 ; ----------------------------------------------------------------------
118 ;              BIS     #LOCKLPM5,&PM5CTL0 ; unlocked by WARM
119
120 ; ----------------------------------------------------------------------
121 ; POWER ON RESET AND INITIALIZATION : WATCHDOG TIMER A
122 ; ----------------------------------------------------------------------
123
124         MOV #WDTPW+WDTHOLD+WDTCNTCL,&WDTCTL    ; stop WDT
125
126 ; ----------------------------------------------------------------------
127 ; POWER ON RESET AND INITIALIZATION : I/O
128 ; ----------------------------------------------------------------------
129 ; ----------------------------------------------------------------------
130 ; POWER ON RESET AND INITIALIZATION : PORT1/2
131 ; ----------------------------------------------------------------------
132
133 ; reset state : Px{DIR,REN,SEL0,SEL1,SELC,IE,IFG,IV} = 0 ; Px{IN,OUT,IES} = ?
134
135 ; PORT1 usage
136 ; P1.0 - LED1 green   output low
137
138 ; PORTx default wanted state : pins as input with pullup resistor
139
140             BIS     #-1,&PAREN      ; all pins with pull up/down resistors
141             MOV     #0FFFEh,&PAOUT  ; all pins with pull up resistors  else P1.0 (LED2)
142
143     .IFDEF UCA0_TERM
144 ; P1.4  UCA0-TXD    --> USB2UART RXD    
145 ; P1.5  UCA0-RXD    <-- USB2UART TXD 
146 TXD         .equ 10h      ; P1.4 = TX + FORTH Deep_RST pin
147 RXD         .equ 20h      ; P1.5 = RX
148 TERM_BUS    .equ 30h
149 TERM_IN     .equ P1IN
150 TERM_SEL    .equ P1SEL0
151 TERM_REN    .equ P1REN
152     .ENDIF
153
154     .IFDEF UCA1_SD
155 SD_SEL      .equ PASEL0 ; to configure UCA1
156 SD_REN      .equ PAREN  ; to configure pullup resistors
157 SD_BUS      .equ 7000h  ; pins P2.4 as UCA1CLK, P2.6 as UCA1SIMO & P2.5 as UCA1SOMI
158     .ENDIF
159
160 SD_CD       .equ 080h   ; P1.7 as SD_CD
161 SD_CS       .equ 040h   ; P1.6 as SD_CS     
162 SD_CDIN     .equ P1IN
163 SD_CSOUT    .equ P1OUT
164 SD_CSDIR    .equ P1DIR
165
166 ; ----------------------------------------------------------------------
167 ; POWER ON RESET AND INITIALIZATION : PORT3/4
168 ; ----------------------------------------------------------------------
169 ; reset state : Px{DIR,REN,SEL0,SEL1,SELC,IE,IFG,IV} = 0 ; Px{IN,OUT,IES} = ?
170
171             BIS     #-1,&PBREN      ; all pins 1 with pull up/down resistors
172             MOV     #07FFFh,&PBOUT  ; all pins with pull up resistors else P4.7 (LED2B)
173
174 ; PORT3 usage
175
176 ; PORT4 usage
177
178 ; S1 - P4.0
179
180 ; LED2B - J8 - P4.7
181
182 ; ----------------------------------------------------------------------
183 ; POWER ON RESET AND INITIALIZATION : PORT5/6
184 ; ----------------------------------------------------------------------
185 ; reset state : Px{DIR,REN,SEL0,SEL1,SELC,IE,IFG,IV} = 0 ; Px{IN,OUT,IES} = ?
186
187 ; PORT5 usage
188
189 ; LED2R - J8 - P5.1  red LED
190 ; LED2G - J8 - P5.0
191
192 ; PORT6 usage
193
194 RTS         .equ    2           ; P6.1
195 CTS         .equ    4           ; P6.2
196 HANDSHAKOUT .equ    P6OUT
197 HANDSHAKIN  .equ    P6IN
198
199 ;            BIS     #00003h,&PCDIR  ; all pins 0 as input else P5.0 (LED2G) P5.1 (LED2R)
200 ;            MOV     #0FFFCh,&PCOUT  ; all pins high  else P5.0 (LED2G) P5.1 (LED2R)
201 ;            BIS     #0FFFCh,&PCREN  ; all pins with pull resistors else P5.0 (LED2G) P5.1 (LED2R)
202
203             BIS     #-1,&PCREN      ; all pins with pull up/down resistors
204             MOV     #0FFFCh,&PCOUT  ; all pins with pull up resistors else P5.0 (LED2G) P5.1 (LED2R)
205
206     .IFDEF TERMINAL4WIRES
207 ; RTS output is wired to the CTS input of UART2USB bridge 
208 ; configure RTS as output high to disable RX TERM during start FORTH
209             BIS.B #RTS,&P6DIR   ; RTS as output high
210         .IFDEF TERMINAL5WIRES
211 ; CTS input must be wired to the RTS output of UART2USB bridge 
212 ; configure CTS as input low (true) to avoid lock when CTS is not wired
213             BIC.B #CTS,&P6OUT   ; CTS input pulled down
214         .ENDIF  ; TERMINAL5WIRES
215     .ENDIF  ; TERMINAL4WIRES
216
217 ; ----------------------------------------------------------------------
218 ; FRAM config
219 ; ----------------------------------------------------------------------
220
221     .IF  FREQUENCY > 8
222             MOV.B   #0A5h,&FRCTL0_H ; enable FRCTL0 access
223             MOV.B   #10h,&FRCTL0    ; 1 waitstate @ 16 MHz
224             MOV.B   #01h,&FRCTL0_H  ; disable FRCTL0 access
225     .ENDIF
226
227 ; ----------------------------------------------------------------------
228 ; POWER ON RESET SYS config
229 ; ----------------------------------------------------------------------
230
231 ; SYS code                                  
232 ;    BIC #1,&SYSCFG0 ; enable write program in FRAM
233     MOV #0A500h,&SYSCFG0 ; enable write MAIN and INFO
234
235 ; ----------------------------------------------------------------------
236 ; POWER ON RESET AND INITIALIZATION : CLOCK SYSTEM
237 ; ----------------------------------------------------------------------
238
239 ; CS code for MSP430FR2476
240
241 ; to measure REFO frequency, output ACLK on P2.2: 
242 ;    BIS.B #4,&P2SEL1
243 ;    BIS.B #4,&P2DIR
244 ; result : REFO = xx.xx kHz
245
246
247     .IFDEF LF_XTAL
248 ;            MOV     #0000h,&CSCTL3      ; FLL select XT1, FLLREFDIV=0 (default value)
249             MOV     #0000h,&CSCTL4      ; ACLOCK select XT1, MCLK & SMCLK select DCOCLKDIV
250     .ELSE
251             BIS     #0010h,&CSCTL3      ; FLL select REFCLOCK
252 ;            MOV     #0100h,&CSCTL4      ; ACLOCK select REFO, MCLK & SMCLK select DCOCLKDIV (default value)
253
254             BIS.B   #03,&P2SEL0         ; P2.0 as XOUT, P2.1 as XIN
255
256     .ENDIF
257
258     .IF FREQUENCY = 0.5
259
260 ;            MOV     #058h,&CSCTL0       ; preset DCO = measured value @ 0x180 (88)
261 ;            MOV     #0001h,&CSCTL1      ; Set 1MHZ DCORSEL,disable DCOFTRIM,Modulation
262             MOV     #1ED1h,&CSCTL0      ; preset MOD=31, DCO = measured value @ 0x180 (209)
263             MOV     #00B0h,&CSCTL1      ; Set 1MHZ DCORSEL,enable DCOFTRIM=3h ,enable Modulation to reduce EMI
264 ; ===================================== ;  fCOCLKDIV = REFO x (FLLN+1)
265 ;            MOV     #100Dh,&CSCTL2      ; Set FLLD=1 (DCOCLKCDIV=DCO/2),set FLLN=0Dh
266                                         ; fCOCLKDIV = 32768 x (13+1) = 0.459 MHz ; measured :  MHz
267 ;            MOV     #100Eh,&CSCTL2      ; Set FLLD=1 (DCOCLKCDIV=DCO/2),set FLLN=0Eh
268                                         ; fCOCLKDIV = 32768 x (14+1) = 0.491 MHz ; measured :  MHz
269             MOV     #100Fh,&CSCTL2      ; Set FLLD=1 (DCOCLKCDIV=DCO/2),set FLLN=0Fh
270                                         ; fCOCLKDIV = 32768 x (15+1) = 0.524 MHz ; measured :  MHz
271 ; =====================================
272             MOV     #8,X
273
274     .ELSEIF FREQUENCY = 1
275
276 ;            MOV     #100h,&CSCTL0       ; preset DCO = 256 
277 ;            MOV     #00B1h,&CSCTL1      ; Set 1MHZ DCORSEL,enable DCOFTRIM=3h ,disable Modulation
278             MOV     #1EFFh,&CSCTL0       ; preset MOD=31, DCO=255  
279             MOV     #00B0h,&CSCTL1      ; Set 1MHZ DCORSEL,enable DCOFTRIM=3h ,enable Modulation to reduce EMI
280 ; ===================================== ;  fCOCLKDIV = REFO x (FLLN+1)
281 ;            MOV     #001Dh,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1Dh
282                                         ; fCOCLKDIV = 32768 x (29+1) = 0.983 MHz ; measured : 0.989MHz
283             MOV     #001Eh,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1Eh
284                                         ; fCOCLKDIV = 32768 x (30+1) = 1.015 MHz ; measured : 1.013MHz
285 ;            MOV     #001Fh,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1Fh
286                                         ; fCOCLKDIV = 32768 x (31+1) = 1.049 MHz ; measured : 1.046MHz
287 ; =====================================
288             MOV     #16,X
289
290     .ELSEIF FREQUENCY = 2
291
292 ;            MOV     #100h,&CSCTL0       ; preset DCO = 256 
293 ;            MOV     #00B3h,&CSCTL1      ; Set 2MHZ DCORSEL,enable DCOFTRIM=3h ,disable Modulation
294             MOV     #1EFFh,&CSCTL0       ; preset MOD=31, DCO=255  
295             MOV     #00B2h,&CSCTL1      ; Set 2MHZ DCORSEL,enable DCOFTRIM=3h ,enable Modulation to reduce EMI
296 ; ===================================== ;  fCOCLKDIV = REFO x (FLLN+1)
297 ;            MOV     #003Bh,&CSCTL2        ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=3Bh
298                                         ; fCOCLKDIV = 32768 x (59+1) = 1.966 MHz ; measured :  MHz
299             MOV     #003Ch,&CSCTL2         ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=3Ch
300                                         ; fCOCLKDIV = 32768 x (60+1) = 1.998 MHz ; measured :  MHz
301 ;            MOV     #003Dh,&CSCTL2        ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=3Dh
302                                         ; fCOCLKDIV = 32768 x (61+1) = 2.031 MHz ; measured :  MHz
303 ; =====================================
304             MOV     #32,X
305
306     .ELSEIF FREQUENCY = 4
307
308 ;            MOV     #100h,&CSCTL0       ; preset DCO = 256 
309 ;            MOV     #00B5h,&CSCTL1      ; Set 4MHZ DCORSEL,enable DCOFTRIM=3h ,disable Modulation
310             MOV     #1EFFh,&CSCTL0       ; preset MOD=31, DCO=255  
311             MOV     #00B4h,&CSCTL1      ; Set 4MHZ DCORSEL,enable DCOFTRIM=3h ,enable Modulation to reduce EMI
312 ; ===================================== ;  fCOCLKDIV = REFO x (FLLN+1)
313 ;            MOV     #0078h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=78h
314                                         ; fCOCLKDIV = 32768 x (120+1) = 3.965 MHz ; measured : 3.96MHz
315
316             MOV     #0079h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=79h
317                                         ; fCOCLKDIV = 32768 x (121+1) = 3.997 MHz ; measured : 3.99MHz
318
319 ;            MOV     #007Ah,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=7Ah
320                                         ; fCOCLKDIV = 32768 x (122+1) = 4.030 MHz ; measured : 4.020MHz
321 ; =====================================
322             MOV     #64,X
323
324     .ELSEIF FREQUENCY = 8
325
326 ;            MOV     #100h,&CSCTL0       ; preset DCO = 256 
327 ;            MOV     #00B7h,&CSCTL1      ; Set 8MHZ DCORSEL,enable DCOFTRIM=3h ,disable Modulation
328             MOV     #1EFFh,&CSCTL0       ; preset MOD=31, DCO=255  
329             MOV     #00B6h,&CSCTL1      ; Set 8MHZ DCORSEL,enable DCOFTRIM=3h ,enable Modulation to reduce EMI
330 ; ===================================== ;  fCOCLKDIV = REFO x (FLLN+1)
331 ;            MOV     #00F2h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=F2h
332                                         ; fCOCLKDIV = 32768 x (242+1) = 7.963 MHz ; measured : 7.943MHz
333 ;            MOV     #00F3h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=F3h
334                                         ; fCOCLKDIV = 32768 x (243+1) = 7.995 MHz ; measured : 7.976MHz
335             MOV     #00F4h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=F4h
336                                         ; fCOCLKDIV = 32768 x (244+1) = 8.028 MHz ; measured : 8.009MHz
337
338 ;            MOV     #00F5h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=F5h
339                                         ; fCOCLKDIV = 32768 x (245+1) = 8.061 MHz ; measured : 8.042MHz
340
341 ;            MOV     #00F8h,&CSCTL2      ; don't work with cp2102 (by low value)
342 ;            MOV     #00FAh,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=FAh
343
344 ; =====================================
345             MOV     #128,X
346
347     .ELSEIF FREQUENCY = 12
348
349 ;            MOV     #100h,&CSCTL0       ; preset DCO = 256 
350 ;            MOV     #00B9h,&CSCTL1      ; Set 12MHZ DCORSEL,enable DCOFTRIM=3h ,disable Modulation
351             MOV     #1EFFh,&CSCTL0       ; preset MOD=31, DCO=255  
352             MOV     #00B8h,&CSCTL1      ; Set 12MHZ DCORSEL,enable DCOFTRIM=3h ,enable Modulation to reduce EMI
353 ; ===================================== ;  fCOCLKDIV = REFO x (FLLN+1)
354 ;            MOV     #016Ch,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E6h
355                                         ; fCOCLKDIV = 32768 x 364+1) = 12.960 MHz ; measured : 11.xxxMHz
356 ;            MOV     #016Dh,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E7h
357                                         ; fCOCLKDIV = 32768 x 365+1) = 11.993 MHz ; measured : 11.xxxMHz
358             MOV     #016Eh,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E8h
359                                         ; fCOCLKDIV = 32768 x 366+1) = 12.025 MHz ; measured : 12.xxxMHz
360 ;            MOV     #016Fh,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E9h
361                                         ; fCOCLKDIV = 32768 x 367+1) = 12.058 MHz ; measured : 12.xxxMHz
362 ; =====================================
363             MOV     #192,X
364
365     .ELSEIF FREQUENCY = 16
366
367 ;            MOV     #100h,&CSCTL0       ; preset DCO = 256 
368 ;            MOV     #00BBh,&CSCTL1      ; Set 16MHZ DCORSEL,enable DCOFTRIM=3h ,disable Modulation
369             MOV     #1EFFh,&CSCTL0      ; preset MOD=31, DCO=255  
370             MOV     #00BAh,&CSCTL1      ; Set 16MHZ DCORSEL,enable DCOFTRIM=3h ,enable Modulation to reduce EMI
371 ; ===================================== ;  fCOCLKDIV = REFO x (FLLN+1)
372 ;            MOV     #01E6h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E6h
373                                         ; fCOCLKDIV = 32768 x 486+1) = 15.958 MHz ; measured : 15.92MHz
374 ;            MOV     #01E7h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E7h
375                                         ; fCOCLKDIV = 32768 x 487+1) = 15.991 MHz ; measured : 15.95MHz
376             MOV     #01E8h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E8h
377                                         ; fCOCLKDIV = 32768 x 488+1) = 16.023 MHz ; measured : 15.99MHz
378 ;            MOV     #01E9h,&CSCTL2      ; Set FLLD=0 (DCOCLKCDIV=DCO),set FLLN=1E9h
379                                         ; fCOCLKDIV = 32768 x 489+1) = 16.056 MHz ; measured : 16.02MHz
380 ; =====================================
381             MOV     #256,X
382
383     .ELSEIF
384     .error "bad frequency setting, only 0.5,1,2,4,8,12,16 MHz"
385     .ENDIF
386
387             BIS &SYSRSTIV,&SAVE_SYSRSTIV; store volatile SYSRSTIV preserving a pending request for DEEP_RST
388
389 ClockWaitX  MOV     #5209,Y             ; wait 0.5s before starting after POR
390
391 ClockWaitY  SUB     #1,Y                ;1
392             JNZ     ClockWaitY          ;2 5209x3 = 15627 cycles delay = 15.627ms @ 1MHz
393             SUB     #1,X                ; x 16 @ 1 MHZ = 250ms
394             JNZ     ClockWaitX          ; time to stabilize power source ( 500ms )
395