You are on page 1of 12

Trabajo 2 Computadores 2.

Nombres: Ivn Salgado Vergara / Edison Snchez Barrera.

1- Trabajando con el KIT-51 cargamos el programa ensamblado (archivo .HEX) en la EPROM (programa apuntado despus del prrafo), luego generamos la seal de interrupcin enviando el cable a tierra (luego se desconecta por supuesto); y segn lo indica el programa, a partir de la direccin 5500H (Donde se almacena el nmero de interrupciones), se registraron los datos: 1 pulsacin: 6CH 2 pulsacin: 2BH 3 pulsacin: 63H Lo ideal es que solo marcase una sola unidad por cada pulsacin dada, sin embargo, estos datos eran muy elevados a los cuales se les conoce como seal de rebote. Para eliminar estos tipos de seales se tuvo que hacer algunos reajustes al programa que aparecer en la actividad 2. (Las letras con color rojo indican las funciones de cada instruccin pedida). ; Programa observar rebote. ORG 2003 ; SE UNTILIZA ESTA DIRECCION PARA EVITAR BORRAR ; TODO ; EL CHIP POR LAS RUTINAS DE SERVICIO JMP SERVICIO1 ORG 4000H PARTIDA: SETB EX0 SETB EA MOV R3, #0 MOV DPTR, #5500H CLR A ; HABILITAR INTERRUPCION EXTERNA INT0 ; HABILITAR INTERUPCIONES HABILITADAS ; USADO PARA CONTAR LAS INTERRUPCIONES ; puntero para almacenamiento ; SE UTILIZARA PARA LIMPIAR EL REGISTRO DONDE SE ; ALAMCENARAN LAS INTERUPPCIONES ; COPIAR CON UN 0 EL PRIMER REGISTRO DE RAMx ; INSTRUCCION FANTASMA, SIMULA PROCESO DE

MOVX @DPTR, A JMP $

; EJECUCION

SERVICIO1:

INC R3 MOV A, R3 MOVX @DPTR, A RETI END

; EMPIEZA A CONTAR INTERRUPCIONES

2-A partir de lo sucedido en la actividad 1 se procede a modificar el programa, usando un temporizador de 1mseg. Cargamos el registro R7 con 200 (Direccin que utiliza el timer para decrementar unidad tras unidad), luego ensamblamos el programa, y lo enviamos al KIT-51, ejecutamos el programa haciendo 10 pulsaciones a tierra y luego observamos el dato que registraba la direccin 5500H, el cual era 0AH, efectuando de esta manera la eliminacin del efecto rebote. (Programa mejorado para evitar rebote, los cambios realizados aparecen con letra roja). ORG 2003H JMP SERVICIO1

ORG 4000H PARTIDA: SETB EX0 SETB EA MOV R3, #0 MOV DPTR, #5500H CLR A ; HABILITAR INTERRUPCION EXTERNA INT0 ; HABILITAR INTERUPCIONES HABILITADAS ; USADO PARA CONTAR LAS INTERRUPCIONES ; puntero para almacenamiento ; SE UTILIZARA PARA LIMPIAR EL REGISTRO DONDE SE ; ALAMCENARAN LAS INTERUPPCIONES ; COPIAR CON UN 0 EL PRIMER REGISTRO DE RAMx ; INSTRUCCION FANTASMA, SIMULA PROCESO DE ; EJECUCION

MOVX @DPTR, A JMP $

SERVICIO1:

INC R3 MOV A, R3

; EMPIEZA A CONTAR INTERRUPCIONES

MOVX @DPTR, A CLR EA ; DESHABILITAR LA INTERRUPCION

MOV R7, #200 ; CARGAR CON 200mS CALL 15EFH ; TEMPORISADOR 1mS

SETB EA RETI END

; HABILITAR NUEVAMENTE INTERRUPCION

3. Con el chip Atmel AT89C2051, se tuvo que modificar gran parte del programa ya que los vectores de interrupcin fueron intervenidos directamente, adems, se tuvo que crear un servicio para temporizar ya que este chip no tenia mapeado en memoria un programa para temporizar. Se utiliz adems el hardware bsico del microcontrolador para ejecutar dicho trabajo. Cabe destacar adems que se tuvo que escoger una direccin de memoria para almacenar los datos y estos que sean enviados a la puerta P1 para dar demostracin de las cantidades de pulsaciones que se hacan y dar una direccin para inicializar la pila. Adems, por curiosidad propia utilizamos el vector de interrupcin INT1 para resetear el programa sin la necesidad del RESET que tiene este procesador en uno de sus terminales. El timer utilizados es de 1mseg. A continuacin aparecen el software y el hardware utilizados. Software utilizado: ORG 0 JMP 50H

ORG 03H JMP SERVICIO1 ORG 13H JMP SERVICIO2 ; SERVICIO DE INTERRUPCION 0 ; SERVICIO RESET (INTERRUPCCION 1)

ORG 50H

PARTIDA:

MOV SP, #5FH MOV P1, #0 SETB EX0 SETB EX1 SETB EA MOV R2, #0

; DIRECCION STACK

; HABILITAR INTERRUPCION EXTERNA INT0

; HABILITAR INTERUPCIONES HABILITADAS ; USADO PARA CONTAR LAS INTERRUPCIONES

JMP $

; INSTRUCCION FANTASMA, SIMULA PROCESO DE ; EJECUCION

;******************************* ; SERVICIO INTERUPPCION SERVICIO1: CLR ex0 INC R2 MOV R7, #200 CALL TEMPO MOV P1, R2 SETB ex0 RETI ; DETENER INTERRUPCIONES ; EMPIEZA A CONTAR INTERRUPCIONES ; CANTIDAD DE MILISEGUNDOS ; TEMPORIZA A R7 ; ENVIAR A PUERTAS DE SALIDAS ; HABILITAR INTERRUPCIONES

SERVICIO2:

CLR EX1 MOV R7, #200 CALL TEMPO POP 25H POP 26H SETB EX1 JMP 0 ; RECUPERAR VALORES DE LA PILA

; TEMPORIZADOR ANTIREBOTE TEMPO: MOV TH0, #0CFH MOV TL0, #0 ; CONTADOR 8 BITS ; CONTADOR 5 BITS

SETB TR0 REBALSE: JNB TF0, REBALSE MOV TCON, #0 DJNZ R7, TEMPO RET END

; ARRAQUE DE TIMER

4. Primeramente se dio una direccin de inicio a la PILA, luego procedimos a activar la interrupcin y deshabilitamos las puertas de salida (para mantener todos los LEDs desconectados), dejando solo activado P1.5 el cual volvera al programa a la normalidad despus de una interrupcin. Utilizamos la direccin 26H como bandera para el sondeo; tambin utilizamos el efecto astable para que cuando exista una interrupcin, un LEDs (P1.1) ser complementado lgicamente de tal forma que a la vista se podr ver como se enciende y apaga (cada 100mseg).

El programa cumple la funcin de sondear la puerta 26H, luego por una interrupcin setea esta direccin y luego retorna, el sondeo detecta un bit y lo enva a un servicio de rutina en el cual enciende y apaga P1.1, y a la vez sondea a P1.5. Cuando detecta un bit en P1.5, este retorna al programa principal y luego procede a bifurcar a la direccin de sondeo de 26H.

A continuacin mostramos el software y hardware desarrollados.

ORG 0 JMP 50H

ORG 03H JMP SERVICIO1 ; SERVICIO DE INTERRUPCION 0

ORG 50H PARTIDA: MOV SP, #5FH SETB EX0 SETB EA ; DIRECCION STACK ; HABILITAR INTERRUPCION EXTERNA INT0 ; HABILITAR INTERUPCIONES HABILITADAS

CHARGER:

MOV P1, #00 SETB P1.5 CLR 26H

; DESHABILITAR TODAS LAS PUERTAS ; PUERTA DE ENTRADA ; DIRECCION DE BIT A SONDEAR

SONDBAND:

JB 26H, YESBIT JMP SONDBAND

YESBIT:

CALL ONOFF CLR 26H SETB EX0 ; SE ACTIVA NUEVAMENTE LA ; INTERRUPCION (PARA QUE SE COMPLETE ; EL CICLO DEL PROGRAMA) JMP CHARGER

; SUBRUTINAS ; EFECTO ASTABLE ONOFF: CPL P1.1 MOV R7, #100 CALL TEMPO JB P1.5, ONOFF ; SI ESTA EN 0 VUELVE A RUTINA PRINCIPAL ; ENCENDIDO/APAGADO (LED)

RET

; SERVICIO INTERUPPCION SERVICIO1: CLR EX0 MOV R7, #200 CALL TEMPO SETB 26H RETI ; BANDERA ACTIVADA ; DETENER INTERRUPCIONES ; PARA ANULAR REBOTE

; TEMPORIZADOR ANTIREBOTE TEMPO: MOV TH0, #0CFH MOV TL0, #0 SETB TR0 REBALSE: JNB TF0, REBALSE MOV TCON, #0 DJNZ R7, TEMPO RET END ; CONTADOR 8 BITS ; CONTADOR 5 BITS ; ARRAQUE DE TIMER

Bibliografa:
Manuales: Manual de computadores I, Prof. Sergio Briceo M. 1998 Manual tcnico ATMEL Microcontrolador de 8 bits, con ncleo Intel MCS51 y memoria de programa Flash de 2 Kbyte. Las versiones en espaol e ingls.

You might also like