
Application Note
AN1060 — Rev. 1.0
MOTOROLA
251
 95               ****************************************************
 96               * PROGRAM - Utility subroutine to program EPROM.
 97               * Prior to calling PROGRAM set baud rate, turn on SCI
 98               * set X=2ms prog delay constant, and set Y=first
 99               * address to program. SP must point to RAM.
100               * Bootloader leaves baud set, SCI enabled, X=4200
101               * and Y pointing at EPROM start ($D000) so these
102               * default values don't have to be changed typically.
103               * Delay constant in X should be equivalent to 2 ms
104               *  at 2.1 MHz X=4200; at 1 MHz X=2000.
105               * An external voltage source is required for EPROM
106               * programming.
107               * This routine uses 2 bytes of stack space
108               * Routine does not return. Reset to exit.
109               ****************************************************
110 BF13          PRGROUT  EQU    *
111 BF13 3C                PSHX                  Save program delay constant
112 BF14 CE1000            LDX    #$1000         Point to internal registers
113 BF17                   
114               * Send $FF to indicate ready for program data
115
116 BF17 1F2E80FC          BRCLR  SCSR,X $80 *   Wait for TDRE
117 BF1B 86FF              LDAA   #$FF
118 BF1D A72F              STAA   SCDAT,X
119
120 BF1F          WAIT1    EQU    *
121 BF1F 1F2E20FC          BRCLR  SCSR,X $20 *   Wait for RDRF
122 BF23 E62F              LDAB   SCDAT,X        Get received byte
123 BF25 18E100            CMPB   $0,Y           See if already programmed
124 BF28 271D              BEQ    DONEIT         If so, skip prog cycle
125 BF2A 8620              LDAA   #ELAT          Put EPROM in prog mode
126 BF2C A73B              STAA   PPROG,X
127 BF2E 18E700            STAB   0,Y            Write the data
128 BF31 8621              LDAA   #ELAT+EPGM
129 BF33 A73B              STAA   PPROG,X        Turn on prog voltage
130 BF35 32                PULA                  Pull delay constant
131 BF36 33                PULB                  into D-reg
132 BF37 37                PSHB                  But also keep delay
133 BF38 36                PSHA                  keep delay on stack
134 BF39 E30E              ADDD   TCNT,X         Delay const + present TCNT
135 BF3B ED16              STD    TOC1,X         Schedule OC1 (2ms delay)
136 BF3D 8680              LDAA   #OC1F
137 BF3F A723              STAA   TFLG1,X        Clear any previous flag
138
139 BF41 1F2380FC          BRCLR  TFLG1,X OC1F * Wait for delay to expire
140 BF45 6F3B              CLR    PPROG,X        Turn off prog voltage
141               *
142 BF47          DONEIT   EQU    *
143 BF47 1F2E80FC          BRCLR  SCSR,X $80 *   Wait for TDRE
144 BF4B 18A600            LDAA   $0,Y           Read from EPROM and...
145 BF4E A72F              STAA   SCDAT,X        Xmit for verify
146 BF50 1808              INY                   Point at next location
147 BF52 20CB              BRA    WAIT1          Back to top for next
148               * Loops indefinitely as long as more data sent.
149
F
Freescale Semiconductor, Inc.
For More Information On This Product,
  Go to: www.freescale.com
n
.