informe
FIEC
Laboratorio de Microcontroladores
PRÁCTICA #5
Contadores
Alumnos:
Maritza Isabel Chávez Tigrero
José Daniel Plúas Segura
Paralelo: 8 Grupo: 2
Fecha de Presentación:
5/12/2014
1.- Enunciado del proyecto
En este programa se utilizan displays de 7 segmentos para su uso en contadores de uno y dos dígitos además de estose utiliza la técnica de multiplexado por división de tiempo.
2.- Diagrama de Bloques
3.- Diagrama de Flujo funcional del Programa principal y de las subrutinas.
PROGRAMA 1
PROGRAMA 2
PROGRAMA 3
4.- Descripción del algoritmo o estrategia utilizada.
PROGRAMA 1
1. Usamos la directiva CBLOCK paravariables a partir de 0x20H, las cuales son; contador, unidades, uni_cod.
2. Se realiza el seteo de bancos y puertos.
3. Se configura PORTB como salida.
4. Seteo del registro OPTION_REG.
5. Se selecciona el pre-escalador 256, con una frecuencia de 4MHz con lo que obtendremos una interrupción cada 10mS.
6. Encera el PORTB y las unidades.
7. Se carga el TIMER0 con el valor .217 y el contador con100.
8. Se habilitan las banderas de interrupciones.
9. Para mostrar el cero inicial se llama a la tabla con el valor de “0” en el registro de trabajo W.
10. El valor encriptado de 7 segmentos es guardado en unid_cod y luego se lo ponemos al PORTB.
11. Se incrementa las unidades.
12. Se ingresa al lazo mudo LOOP esperando que el TIMER0 se desborde y se ejecute la subrutina.
PROGRAMA 2
1.Usamos la directiva CBLOCK para variables a partir de 0x20H, las cuales son; contador, unidades, uni_cod, dec_dod.
2. Se realiza el seteo de bancos y puertos.
3. Se configura PORTB, PORTC como salida.
4. Se encera las variables unidades y decenas.
5. Seteo del registro OPTION_REG.
6. Se selecciona el pre-escalador 256, con una frecuencia de 4MHz con lo que obtendremos una interrupción cada10mS.
7. Se carga el TIMER0 con el valor .217 y el contador con 100.
8. Se habilitan las banderas de interrupciones en el registro INTCON.
9. Se ingresa el lazo mudo LOOP hasta que el TIMER0 se desborde y se ejecute la subrutina.
PROGRAMA 3
1. Usamos la directiva CBLOCK para variables a partir de 0x20H, las cuales son; contador, unidades, uni_cod, dec_dod, sel.
2. Se realiza elseteo de bancos y puertos.
3. Se configura PORTB, PORTC como salida.
4. Se encera las variables unidades y decenas.
5. Seteo del registro OPTION_REG.
6. Se selecciona el pre-escalador 256, con una frecuencia de 4MHz con lo que obtendremos una interrupción cada 10mS.
7. Se carga el TIMER0 con el valor .217 y el contador con 100.
8. Se habilitan las banderas de interrupciones en el registroINTCON.
9. Se ingresa el lazo mudo LOOP hasta que el TIMER0 se desborde y se ejecute la subrutina.
Fuente en lenguaje ensamblador con comentarios en las líneas de código que considere fundamentales
PARTE 1
;**********************************************************
; CONTADOR CON DISPLAY DE SIETE SEGMENTOS
; USANDO EL TMR0 COMO BASE DE TIEMPO DE 10ms
;PARA CONTAR CADA SEGUNDO
;**********************************************************
; NOMBRE: p5a_1d.asm
; FECHA: 21/06/2010
; VERSION: 1.00
; PROGRAMADOR: Carlos Valdivieso
;**********************************************************
; DESCRIPCION:
;Se trata de incrementar un contador cada segundo y mostrar
;su valor en el display. Se programa el tmr0 para que genere;una interrupción cada 0.01 seg. (10 mS) que se repetirá 50
;veces con el objeto de activar el conteo cada 500 mS. Use reloj de 4MHz.
;**********************************************************
;DIRECTIVAS
LIST p=16F887 ;Tipo de microcontrolador
INCLUDE P16F887.INC ;Define los SFRs y bits del
;P16F887
__CONFIG _CONFIG1, _CP_OFF&_WDT_OFF&_XT_OSC
;Setea parámetros de...
Regístrate para leer el documento completo.