microcontrolador mc68hc11
microcontrolador mc68hc11
microcontrolador mc68hc11
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
MICROCONTROLADOR 68HC11: Fundamentos, recursos y programación.<br />
MICROBÓTICA.<br />
5.2.4. Listado del programa bootstrap<br />
; +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />
; ¦ Programa BOOTSTRAP. (C) MOTOROLA. ¦<br />
; +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />
; Offset de los registros de control utilizados<br />
PORTD EQU $08<br />
DDRD EQU $09<br />
SPCR EQU $28<br />
BAUD EQU $2B<br />
SCCR1 EQU $2C<br />
SCCR2 EQU $2D<br />
SCSR EQU $2E<br />
SCDAT EQU $2F<br />
PPROG EQU $3B<br />
TEST1 EQU $3E<br />
CONFIG EQU $3F<br />
EEPSTR EQU $B600<br />
EEPEND EQU $B7FF<br />
begin<br />
wait<br />
ORG $BF40<br />
; Comienzo de la EEPROM<br />
; Final de la EEPROM<br />
LDS #$00FF ; Inicializar la pila<br />
LDX #$1000 ; Inicializar X para acceso indexado a registros<br />
BSET SPCR,X $20 ; Poner el puerto D en colector abierto<br />
LDAA #$A2 ; Establecer velocidad de comunicaciones<br />
STAA BAUD,X ; (Divisor de velocidad 16)<br />
; Para un cristal de 8MHZ la velocidad configurada<br />
; es de 7812 Baudios<br />
LDAA #$0C<br />
STAA SCCR2,X<br />
; Habilitar transmisor y receptor<br />
BSET SCCR2,X $01 ; Enviar señal de BREAK<br />
BRSET PORTD,X $01 wait ; Esperar hasta que se mande bit de start<br />
BCLR SCCR2,X $01 ; Ya no se envían más señales de BREAK<br />
waitcar BRCLR SCSR,X $20 waitcar ; Esperar a que llegue un carácter<br />
LDAA SCDAT,X<br />
; Leer carácter recibido<br />
BNE nocero<br />
JMP $B600<br />
nocero CMPA #$55<br />
BEQ STAR<br />
CMPA #$FF<br />
BEQ baudok<br />
; Si carácter recibido=$00 o BREAK saltar a la<br />
; memoria EEPROM<br />
; Si carácter recibido=$55, saltar al comienzo de<br />
; la RAM. (Sólo utilizado para pruebas de fabrica)<br />
; Si carácter recibido=$FF, la velocidad de Tx actual<br />
; es correcta.<br />
BSET BAUD,X $33 ; Establecer velocidad de 1200 baudios (Si cristal es<br />
; de 8MHZ<br />
baudok LDY #$0000<br />
; Inicializar puntero<br />
waitdat BRCLR SCSR,X $20 waitdat ; Esperar a que se reciba un dato<br />
LDAA SCDAT,X ; Leer dato recibido<br />
STAA $00,Y ; Almacenar dato en la RAM<br />
STAA SCDAT,X ; Hacer eco del dato recibido<br />
INY<br />
CPY #$0100 ; ¿Se ha alcanzado el final de la RAM<br />
BNE waitdat ; NO −−> Leer otro dato<br />
STAR JMP $0000 ; Ejecutar el programa cargado<br />
; +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />
; ¦ VECTORES DE INTERRUPCIÓN DEL MODO BOOTSTRAP ¦<br />
; +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />
ORG $BFD4<br />
FDB $00C4 ; SCI<br />
FDB $00C7 ; SPI<br />
FDB $00CA ; Flanco subido en acumulador de pulsos<br />
FDB $00CD ; Desbordamiento en acumulador de pulsos<br />
FDB $00D0 ; Desbordamiento del temporizador<br />
FDB $00D3 ; Comparador 5<br />
FDB $00D6 ; Comparador 4<br />
FDB $00D9 ; Comparador 3<br />
FDB $00DC ; Comparador 2<br />
FDB $00DF ; Comparador 1<br />
FDB $00E2 ; Capturador 3<br />
FDB $00E5 ; Capturador 2<br />
FDB $00E8 ; Capturador 1<br />
FDB $00EB ; Interrupción de tiempo real<br />
FDB $00EE ; IRQ<br />
FDB $00F1 ; XIRQ<br />
FDB $00F4 ; SWI<br />
FDB $00F7 ; Código de instrucción ilegal<br />
FDB $00FA ; Fallo en el sistema COP<br />
FDB $00FD ; Monitor del reloj<br />
XCV