ENCENDIDO CONSECUTIVO DE 8 LEDS
INFORME DE LABORATORIO 2
ENCENDIDO CONSECUTIVO DE 8 LEDS
INTEGRANTES : - ANDRES FELIPE LEON SALDAÑA 19266
- EDWIN RICARDO QUINTERO LEON 19251
FOTOS AVALADAS POR EL DOCENTE
DESCRIPCIÓN DEL CASO
Se requiere encender 8 leds de forma consecutiva y que el ciclo en total dure 44,4 HZ o 1,44 Segundos, esto equivale a 5,55 HZ o cada 0.18 Segundos por led.
La oscilación debe ser producida por un micro controlador PIC16F877A, el cual sera programado en un lenguaje de programación de bajo nivel, en nuestro caso usamos lenguaje ensamblador o mejor conocido como assembler, adicionalmente a esta instrucción principal, el programa deberá reiniciarse con un pulsador.
ANÁLISIS DE DISEÑO CON DEFINICIÓN DE MATERIALES Y RECURSOS PARA DARLE SOLUCIÓN AL CASO
Como primera medida en necesario saber y aplicar los pasos a seguir para poder construir y quemar el programa en nuestro micro controlador, estos se resumen en 4 importantes pasos:
1) Idea o caso problema:
Se desea encender 8 leds consecutivamente en un ciclo infinito y a una frecuencia que se encuentre en el rango de la vision humana, a su vez este se debe reiniciar cada vez que un pulsador (P1) sea activado.
2) Algoritmo:
* Encender 8 ledas consecutivamente a una frecuencia constante.
* Al momento en que P1 sea pulsado, el ciclo reiniciara su oscilación.
3) Diagrama de flujo:
4) Programa o código Assembler
Hay que tener en cuenta que a la hora de construir el código es necesario tener en cuenta que su estructura se basa a partir de 4 importantes partes:
* LIBRERÍAS O HERRAMIENTAS
(Se escoge el micro controlador que se utilizara)
* CONFIGURACIÓN DEL MICRO CONTROLADOR
* CONFIGURACIÓN DEL LOS PERIFÉRICOS
(Se declaran variables)
* PROGRAMA FINAL
Con estos importantes pasos y conociendo el datasheet o comandos del micro controlador es suficiente para construir el código.
#INCLUDE<p16f877A.inc> ; Definición del microcontrolador es decir la librería.
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
CONTA1 EQU 0X20 ; CONTADOR 1. Definición de registros de propósito
CONTA2 EQU 0X21 ; CONTADOR 2.
BSF STATUS,5 ; Se escoge el Banco 1 para programar Puertos.
BCF STATUS,6
CLRF TRISB ; PORT B como salida los 8 leds.
BCF STATUS,5 ; Se escoge el Banco 0 para hacer el juego de luces.
BCF STATUS,6
LUCES
BCF STATUS,0 ; Se pone cero en el bit de carry.
MOVLW 0X01 ; Se garantiza el primer led prendido así: 0000 0001
MOVWF PORTB
IZQ
CALL TIEMPO ; Se da tiempo para que el led se vea prendido.
RLF PORTB,1 ; Se rota el PORTB a la izquierda
BTFSS STATUS,0 ; Se pregunta si ya se roto las 8 veces.
GOTO IZQ ; Aun no se a rotado las 8 veces a la izquierda.
GOTO LUCES ; NOTA:Para retornar si se quiere habilitar la derecha colocarle ;(punto y coma al inicio DE GOTO LUCES) y quitarle los punto y coma a las sentencias derecha (DER) y listo
;DER
; CALL TIEMPO ; Se da tiempo para que el led se vea prendido.
; RRF PORTB,1 ; Se rota el PORTB a la derecha
; BTFSS STATUS,0 ; Se pregunta si ya se roto las 8 veces.
; GOTO DER ; Aun no se a rotado las 8 veces a la derecha.
; GOTO LUCES ; Regresa a prender primer led.
TIEMPO
MOVLW 0XFF ; Valor con que se carga el contador 1.
MOVWF CONTA1
NIVEL1
MOVLW 0XFF ; Valor con que se carga el contador 2.
MOVWF CONTA2
NIVEL2
DECFSZ CONTA2,1 ; Se resta en 1 el contador 2 y se pregunta si es cero.
GOTO NIVEL2 ; Aun el contador 2 no es cero.
DECFSZ CONTA1,1 ; Se resta en 1 el contador 1 y se pregunta si es cero.
GOTO NIVEL1 ; Aun el contador 1 no es cero.
RETURN ; Retorna de la subrutina.
END ; Final del programa.
Finalmente se genera el archivo .asm com MPLAB y nos disponemos a quemarlo en el micro controlador con un PICK IT 3






