26.12.2014 Views

microcontrolador mc68hc11

microcontrolador mc68hc11

microcontrolador mc68hc11

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!