Vous êtes sur la page 1sur 7

Aprendizaje Práctico – MANUAL DE PROCEDIMIENTO

CARRERA: INGENIERIA ELECTRÓNICA PRÁCTICA #1: Control de Secuencia de Leds

Equipo Responsable CÁTEDRA O MATERIA


Ignacio Castro Huasco RELACIONADA
Accesorios:
o Mplab
o Pic16f877a
o Pickit2
REVISIÓN N°: 1
o Fuente de 5v
o Cristal de 4MHz
o Dos capacitores de 22pF SISTEMAS MICROPROCESADOS I
EDICIÓN: 1
o Protoboard
o Dip-Switch
o Tres pulsantes
o Ocho Leds
o Ocho resistencias de 330Ω
o Seis resistencias de 10kΩ
DOCENTE: # ESTUDIANTES/ PRÁCTICA: Fecha:
Ing. Pablo Cevallos L. Msc 1 Estudiante 1 de julio de 2019
Tema: Control de Secuencia de Leds.

Objetivo General: Diseñar un sistema para presentar distintas secuencias de encendido de Leds por medio de
switches/pulsantes.

Objetivos Específicos:
 Implementar tres secuencias de visualización distintas en un conjunto de 8 leds. Los dispositivos de visualización
led estarán conectados en un único puerto del uC.
 Implementar un control por medio de micro-switch para modificar la exhibición de las distintas secuencias de
visualización.
 Regular la velocidad de exhibición (temporización) de las distintas secuencias por medio de pulsadores de
Incremento/Decremento.

Competencias asociadas al manejo de uC


 Programación del Microcontrolador en Lenguaje Ensamblador
 Configuración de los puertos E/S digitales.
 Lectura de pulsadores
 Rutinas de tiempo con ciclos de máquina y timers
 Manejo de Interrupciones.

Sustento teórico:
Software Mplab
MPLAB-X es un entorno integrado de desarrollo IDE, del inglés Integrated Development Environment, lo que básicamente
significa que es un software para programar y desarrollar aplicaciones, en este caso, completamente enfocadas a los
microcontroladores de Microchip. [1]
Permite programar aplicaciones con diferentes compiladores y lenguajes, principalmente fue intencionado para C y C++
con los compiladores XC, aunque de todas maneras mantiene la misma utilidad como IDE al programar en Assembler
(MPASMWIN) u otras variantes del C como Hi-Tec C e incluso GCC o CSS. [1]
Software Proteus
Es una aplicación para la ejecución de proyectos de construcción de equipos electrónicos en todas sus etapas: diseño del
esquema electrónico, programación del software, construcción de la placa de circuito impreso, simulación de todo el
conjunto, depuración de errores, documentación y construcción. [2]
Si se desea simular el funcionamiento electrónico del circuito, el funcionamiento lógico del programa cargado en el
microprocesador, construir la placa de circuito impreso, documentar todo el proceso y obtener vistas en tres dimensiones,
Proteus le ofrece una herramienta completa a un precio competitivo. [2]
PIC 16F877A
Es un microcontrolador de Microchip Technology fabricado en tecnología CMOS, su consumo de potencia es muy bajo y
además es completamente estático (esto quiere decir que el reloj puede detenerse y los datos de memoria no se pierden)
capaz de realizar diferentes actividades que requieran del procesamiento de datos digitales y del control y comunicación
digital de diferentes dispositivos. [3]

Ilustración 1. 40-Pin PDIP[3]

Manejo De Puertos Digitales


El PIC16F877 contiene 5 puertos que pueden ser configurados como entrada o salida digitales (A, B, C, D, E). El puerto A
contiene 6 bits (RA0-5). El puerto B (RB0-7), el puerto C (RC0-7) y el puerto D (RD0-7) tienen cada uno 8 líneas. El puerto
E solo cuenta con 3 líneas (RE0-2). [3]
La operación de configuración de los puertos en general implica la siguiente secuencia:
 Ingresar al banco 1
 Configurar los puertos (registros TRISA, TRISB, TRISC, TRISD y TRISE)
 Regresar al banco 0
 Escribir o leer datos desde los puertos. (registros PORTA, PORTB, PORTC, PORTD y PORTE)

Interrupciones
Habilitar el uso de las interrupciones con el PIC se utiliza el registro INTCON, cada microntrolador PIC tiene su registro
INTCON, que es un registro legible y escribible, que contiene varios bits de habilitación y bandera para el desbordamiento
de registro TMR0, cambio de puerto RB0 y externo. [3]

Ilustración 2. Registro de Interrupciones

Retardos
Es un tiempo en el cual el microcontrolador queda en espera antes de ejecutar una función específica.

Efecto Anti reboté


Son los cambios de estados (desniveles de voltaje) no deseados que se producen al entrar en contacto el pulsante con la
parte mecánica del mismo.

Procedimiento:
1. Realizar detalladamente el diagrama de flujo de la práctica.
2. Realizar el programa mediante el software de MPLAB mediante ensamblador.
3. Entender la configuración para el PIC 16F877A, interrupciones y manejo de puertos.
4. Realizar el circuito en Proteus para la simulación implementando el código de MPLAB.
5. Implementar el circuito para el verificar el funcionamiento.
6. Presentación de la practica 1.

Registro de Resultados:
Calculo de retardos

El retardo variable consiste de 3 bucles anidados.


# ciclos de # veces que se ejecuta Total de ciclos
maquinas la instrucción de maquina
SECUENCIAS CALL RET 2(con salto) 1 2
RET MOVF i,W 1 1 1
MOVWF DELAY1 1 1 1
BUCLE1 MOVLW c 1 i i
MOVWF DELAY2 1 i i
BUCLE2 MOVLW h 1 c*i c*i
MOVWF DELAY3 1 c*i c*i
BUCLE3 DECFSZ DELAY3,F 1(sin salto) (h-1)*c*i (c*h*i)+(c*i)
2(con salto) 1*c*i
GOTO BUCLE3 2(con salto) (h-1)*c*i 2(c*h*i)-2(c*i)
DECFSZ DELAY2,F 1(sin salto) (c-1)*i (c*i)+i
2(con salto) 1*i
GOTO BUCLE2 2(con salto) (c-1)*i 2(c*i)-2*i
DECFSZ DELAY1,F 1(sin salto) (i-1) i+1
2(con salto) 1
GOTO BUCLE1 2(con salto) (i-1) 2*i-2
RETURN 2(con salto) 2

Total, de ciclos de maquina=3*c*h*i+4*c*i+4*i+5


Como la frecuencia oscilador=4MHz
El tiempo de ejecución de la subrutina deseada es: 600ms
4 ∗ 106
𝐶𝑖𝑐𝑙𝑜𝑠 𝑑𝑒 𝑚𝑎𝑞𝑢𝑖𝑛𝑎 = 600𝑥10−3 ( ) = 600000
4
Luego:
600000 = 3 ∗ c ∗ h ∗ i + 4 ∗ c ∗ i + 4 ∗ i + 5
Si hacemos:
𝑖=6
𝑐 = 250
ℎ =?
600000 = 3 ∗ 250 ∗ h ∗ 6 + 4 ∗ 250 ∗ 6 + 4 ∗ 6 + 5
600000 = 4500 ∗ h + 6000 + 24 + 5
600000 = 4500 ∗ ℎ + 6029
600000 − 6029 = 4500 ∗ ℎ
593971
=ℎ
4500
ℎ = 131.9936 ≈ 132
Se comprueba si el resultado es correcto mediante la aplicación de StopWatch del simulador de MPLAB:

Ilustración 3. Calculo de retardo de 600ms


Anexos:
ESQUEMA

Ilustración 4. Circuito implementado en la practica

DIAGRAMAS DE FLUJO

Ilustración 5. Diagrama de flujo

Código de programación:
;**********************************
; Universidad: Politecnica Salesiana
; Progama: Secuencia de Leds
; PIC: PIC16F877A
; Fecha de Inicio: 1/7/2019
; Nombre: Ignacio Castro
; **********************************
LIST P=16F877A
INCLUDE P16F877A.INC
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF &
_CP_OFF

c EQU .250 ; Cuenta el bucle 2 en la subrutina de retardo


h EQU .132
i EQU 0x20
DELAY1 EQU 0x21 ; Contador que contiene la cuenta del bucle 1
DELAY2 EQU 0x22
DELAY3 EQU 0x23
d1 EQU 0x24
d2 EQU 0x25

ORG 0
GOTO INICIO

ORG 4
GOTO INTERRU

;*********************************
; Programa Principal
;*********************************
INICIO CLRF PORTB
CLRF PORTC
BSF STATUS,RP0
MOVLW B'00111110'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
BCF STATUS,RP0
MOVLW B'10001000' ;habilitamos las interrupciones no enmascaradas(GIE)
MOVWF INTCON ;habilitamos la interrupcion por cambio(RBIE)
MOVLW .6
MOVWF i
;*********************************
; Switch
;*********************************
SWITCH1 BTFSC PORTB,1 ;testea el bit si es 0 no ejecuta
GOTO SWITCH2
GOTO SEC1
SWITCH2 BTFSC PORTB,2
GOTO SWITCH3
GOTO SEC2
SWITCH3 BTFSC PORTB,3
GOTO SWITCH1
GOTO SEC3
;*********************************
; Secuencia
;*********************************
SEC1 MOVLW B'00000011'
MOVWF PORTC
CALL RET
MOVLW B'00001100'
MOVWF PORTC
CALL RET
MOVLW B'00110000'
MOVWF PORTC
CALL RET
MOVLW B'11000000'
MOVWF PORTC
CALL RET
MOVLW B'00000000'
MOVWF PORTC
CALL RET
GOTO SWITCH1
SEC2 MOVLW B'10000001'
MOVWF PORTC
CALL RET
MOVLW B'01000010'
MOVWF PORTC
CALL RET
MOVLW B'00100100'
MOVWF PORTC
CALL RET
MOVLW B'00011000'
MOVWF PORTC
CALL RET
MOVLW B'00000000'
MOVWF PORTC
CALL RET
GOTO SWITCH2
SEC3 MOVLW B'11000000'
MOVWF PORTC
CALL RET
MOVLW B'00110000'
MOVWF PORTC
CALL RET
MOVLW B'00001100'
MOVWF PORTC
CALL RET
MOVLW B'00000011'
MOVWF PORTC
CALL RET
MOVLW B'00000000'
MOVWF PORTC
CALL RET
GOTO SWITCH3
;********************************
; Retardo
;********************************
RET MOVF i,W ;copia el valor de i en w 1
MOVWF DELAY1 ;y se pasa a delay1 1
BUCLE1 MOVLW c ;250 i
MOVWF DELAY2 ; i
BUCLE2 MOVLW h ;132 i*c
MOVWF DELAY3 ; i*c
BUCLE3 DECFSZ DELAY3,F ;Decremento y si es (i*c*h)(i*c)
GOTO BUCLE3 ;Disitinto de cero sigo repitiendo 2(i*c*h)-2(i*c)
DECFSZ DELAY2,F ; (i*c)+i
GOTO BUCLE2 ; 2(i*c)-2*i
DECFSZ DELAY1,F ; i+1
GOTO BUCLE1 ; 2*i-2
RETURN ;Final de la subrutina retardo 2
;*************************
; Interrupciones
;*************************
INTERRU CALL Delay
BTFSC PORTB,4 ;testea el bit si es 0 no ejecuta
GOTO INCRE
BTFSC PORTB,5 ;testea el bit si es 0 no ejecuta
GOTO DECRE
GOTO TERMINA
INCRE INCF i,F ;increments i en 1
MOVLW .11 ;movemos el acumulador w el valor de 11
SUBWF i,W ;se resta 7-11 (f-W) y lo guarda en w
BTFSS STATUS,Z ;si z=1 salta la siguiente intruccion
GOTO TERMINA
MOVLW .10 ;movemos el acumulador w el valor de 10
MOVWF i
GOTO TERMINA
DECRE DECF i,F ;decrementa el pulso en 1
MOVLW .0 ;movemos el acumulador w el valor de 0
SUBWF i,W ;resta w a f(f-w)
BTFSS STATUS,Z ;si z=1 salta la siguiente intruccion
GOTO TERMINA
MOVLW .1 ;movemos el acumulador w el valor de 1
MOVWF i ;llevamos el valor del acumulador a i
GOTO TERMINA
TERMINA BCF INTCON,RBIF ;ponemos en 0 señalizador de cambio RB4-RB7
RETFIE
;************************
; Anti rebote
;************************
Delay
movlw 0x9E
movwf d1
movlw 0x10
movwf d2
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto Delay_0
goto $+1
nop
return
END

Conclusiones y Recomendaciones:

o Conocer la configuración del PIC16F877A a programar ya que no todas los PIC son iguales, además del poderse
moverse en los bancos para la configuración de los puertos y registros que son necesarios en el programa.
o Usar el software Proteus ayuda para verificar el funcionamiento del programa debido a que facilita el poder hacer
la comprobación instantáneamente o mediante el mismo software de programación de Mplab que tiene la opción
de simulación mediante los estímulos, también para verificar el tiempo de retardo con el StopWatch.
o Cuando se requiera hacer la grabación del programa al PIC revisar que el archivo tipo. Hex este bien configurado y
se pase con todas las propiedades para evitar errores de funcionamiento.
o Cuando se desee pasar el programa al Micro Procesador conocer el funcionamiento del grabador del PIC ya que
estos programas también permiten la configuración del PIC antes del grabado como el caso de que tipo de oscilador
se va utilizar o si se desea borrar el PIC antes de grabar el nuevo programa.

Bibliografía:
[1] Software MPLAB: https://pwmlabs.wordpress.com/2016/09/06/programacion-en-assembler-con-mplab-x/
[2] Software Proteus: http://www.hubor-proteus.com/proteus-pcb/proteus-pcb/230 como_trabajar_con_proteus.html
[3] Características del PIC 16F877A: http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

Vous aimerez peut-être aussi