26.12.2014 Views

microcontrolador mc68hc11

microcontrolador mc68hc11

microcontrolador mc68hc11

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MICROCONTROLADOR 68HC11: Fundamentos, recursos y programación.<br />

MICROBÓTICA<br />

La subrutina ’delay’ simplemente llama a ’delay10’ un número de veces especificadas a través del<br />

acumulador A. Así, si se llama a ’delay’ con un valor A=50, se ejecutará 50 veces la subrutina ’delay10’ por lo que<br />

se logrará un retraso de 50*10mseg= 500mseg = 0.5 segundos.<br />

−EJEMPLO 2: Temporización mediante interrupciones.<br />

En el siguiente programa, el bucle principal enciende un led, activa las interrupciones del comparador 4 y<br />

ejecuta un bucle infinito. Mediante interrupciones se temporizan 2 segundos y se apaga el led. Lo importante de este<br />

programa es ver que el bucle principal podría estar realizando cualquier cosa. En este ejemplo simplemente ejecuta<br />

un bucle infinito, pero podría estar realizando cálculos mientras el led está siendo temporizado por las interrupciones<br />

del comparador 4.<br />

; +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />

; ¦ TEMPO.ASM (C) GRUPO J&J. Marzo 1997 ¦<br />

; ¦−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−¦<br />

; ¦ Programa ejemplo para ser ejecutado en la tarjeta CT6811. ¦<br />

; ¦ Este programa se debe cargar en la RAM interna del 6811. ¦<br />

; ¦ ¦<br />

; ¦ Ejemplo de utilización del comparador 4 para realizar temporiza− ¦<br />

; ¦ ciones mediante interrupciones. El programa principal enciende el led, ¦<br />

; ¦ activa la temporizaron y ejecuta un bucle infinito. Al cabo de 2 ¦<br />

; ¦ segundos el led se apagará. ¦<br />

; +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />

TMSK1 EQU $22<br />

TFLG1 EQU $23<br />

TCTL1 EQU $20<br />

TOC4 EQU $1C<br />

TMSK2 EQU $24<br />

TCNT EQU $0E<br />

PORTA EQU $00<br />

TIEMPO EQU 20000 ; Número de tics de reloj necesarios para generar un<br />

; retraso de 10 ms. Cada tic de reloj son 500ns = 0.5microseg<br />

; 20000*0.5 = 10000microseg = 10mseg.<br />

cuenta DB 0<br />

ORG $0000<br />

BRA inicio<br />

inicio LDX #$1000<br />

inf<br />

LDAA #$10<br />

STAA TMSK1,X ; Permitir la interrupción del comparador 4<br />

LDAA #$40<br />

STAA PORTA,X<br />

LDAA #200<br />

STAA cuenta<br />

CLI<br />

BRA inf<br />

; Encender el led.<br />

; Mantener el led encendido durante 2 segundos<br />

; Activar las interrupciones<br />

;+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />

;¦ Rutina de servicio de interrupción del comparador 4 ¦<br />

;+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+<br />

oc4<br />

BSET TFLG1,X $10 ; Poner a cero flag del comparador 4<br />

fin<br />

LDD TCNT,X<br />

ADDD #TIEMPO<br />

STD TOC4,X<br />

; Esperar 10 mseg<br />

LDAA cuenta<br />

CMPA #0 ; ¿Ha llegado la cuenta a 0<br />

BEQ fin<br />

; Si−−> Apagar el led<br />

dec cuenta<br />

RTI<br />

CLRA<br />

STAA PORTA,X ; Apagar el led<br />

BCLR TMSK1,X $10 ; Desactivar interrupción comparador 4<br />

RTI<br />

ORG $00D6<br />

JMP oc4<br />

END<br />

LX

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

Saved successfully!

Ooh no, something went wrong!