Contreras Robles Jorge Enrique
Caballero Yara Lenin Santiago
                          Solano Osorio Alain
                  Laboratorio 1 Sistemas Digitales 2
               Profesor: Rodriguez Cediel Ana Carolina
                     Universidad Sergio Arboleda
                                 18 de agosto de 2018
                                      Resumen
    En esta práctica de laboratorio trabajaremos con el pic16f628a de la marca micro-
chip, con él buscaremos la implementación de un circuito que nos permita controlar
el encedido y apagado de distintos diodos led a partir de switches, ası́ mismo orien-
tar a nuestro gusto las secuencias, tiempos y retardos de encendido.Todo lo anterior
descrito será programado en un lenguaje assembler, utilizando herramientas del mismo
fabricante y aplicando los conceptos vistos en clase.
1.     Introducción
    Los microcontroladores son circuitos integrados programables, lo que abre una gran
lista de aplicaciones en diferentes campos laborales y cotidianos. Elegimos el pic16f628a
de Microchip, por su fácil acceso en el mercado y distintas herramientas.Tambien uti-
lizaremos el lenguaje assembler(ensamblador), el cual es un lenguaje de programación
de bajo nivel donde el número de instrucciones es mas limitado con respecto a otros
lenguajes, sin embargo permite en muchos casos una gran velocidad de procesamiento
de estas mismas. Las herramientas a utilizar serán las implementadas en el circuito,
sumadas al compilador y al simulador. Referencias.1 Referencias.2 Referencias.3
2.     Resultados
2.1.   Codigo fuente
    En primer lugar procedemos a configurar el pic, para eso utilizaremos el siguiente
codigo Figura 1, donde en la parte superior estarán los bits de configuración internos
del pic, también definimos la frecuencia del oscilador interno y posteriormente las in-
puts/outputs del sistema, en este caso utilizamos todo el puerto B como salida y los
primeros cuatro pines del puerto A como entradas.
                                           1
  Figura 1.    Configuración del pic
    En esta parte Figura 2 se colocan todos los valores iniciales, teniendo en cuenta la
lista de instrucciones incluida en la hoja de datos, sabemos que la instrucción BSF define
un bit con valor 1, contrario a la instrucción BCF. Resaltar tambien el registro STATUS
que nos permite movernos en diferentes bancos de memoria dentro del microcontrolador.
  Figura 2.    Valores iniciales
                                            2
     A continuación se muestra el código donde le diremos al microcontrolador que deci-
sión tomar Figura 3 ,en lenguajes de mayor nivel es común utilizar los switch case, este
ejemplo es algo similar. La instrucción BTFSS pregunta si un bit se encuentra en estado
alto (1), si es ası́ no tomará en cuenta la siguiente lı́nea, sino que dará un ”salto”, que en
este caso sera la instrucción CALL,la cual llama una funcion con la etiqueta asignada
dentro del código.
  Figura 3.     Switch
                                               3
    En todas las secuencias se utiliza el mismo diseño de código solo cambia el orden de
asignación a la salida. En esta parte del programa todo dependerá del switch que esté
activado Figura 4, cargamos un valor al registro W para después asignarlo a la salida
(Puerto B), preguntamos si el pulsador sigue en estado alto(1) si es ası́ realizamos un
retardo y continuamos la secuencia.
  Figura 4.    Secuencia
                                            4
   Adicionalmente se necesitó una libreria la cual descargamos de la pagina oficial del
compilador, en el codigo se debe referenciar la ubicación de la misma. Figura 5
 Figura 5.     retardo
2.2.   Simulación
    Para esta parte utilizamos el simulador proteus, el cual posee gran variedad de
herramientas y librerias donde podemos encontrar los distintos pics Figura 6 también
se incluye un video de prueba. Referencias.4
 Figura 6.     simulacion
                                           5
2.3.   Montaje
   Montaje realizado teniendo en cuenta especificaciones reales.
 Figura 7.    Montaje
                                          6
3.     Conclusiones
    Las conclusiones se obtuvieron mediante el desarrollo de la práctica, tanto de forma
teórica como experimental, principalmente de los errores y fallos presentados en software
y hardware.
   1) Es posible la programación de retardos por medio de software, en lenguaje as-
sembler es algo mas complejo y el método esta determinado en crear distintas variables
como contadores que van disminuyendo cumpliendo varios ciclos de reloj, sin embargo
contamos con librerias que nos facilitan estas herramientas.
   2) Es muy importante el definir valores inciales para cada una de nuestras variables
a utilizar, esto con el fin de evitar posibles errores
   3) Se introdujo el uso de las etiquetas, algo que no es muy común en los lenguajes
de programación de alto nivel,pero al final resultan ser muy utiles en la organización y
creación de funciones.
    4) Se evidenciaron algunos inconvenientes con el voltaje de alimentación para el
pic a la hora de cargar el programa con el pickit3, sin embargo este último tiene la
posibilidad de servir como fuente de alimentación para nuestro circuito.
   5) La realización de comentarios dentro del código resulta ser fundamental debido
a que las instrucciones no suelen ser tan claras o intuitivas en este tipo de lenguaje.
   6) A pesar de una correcta simulación, no es claro que sucede cuando dos pulsadores
quedán en alto, se debe estudiar uso de anti-rebotes.
   7) El simulador Proteus a pesar de ser una gran herramienta de simulación, no es una
determinante segura para un circuito, ya que este programa trabaja con componentes
ideales y desprecia otras variables que en un montaje real son importantes
4.     Referencias
1. Ronald, T. Sistemas Digitales., 8th; PRENTINCE HALL, 2003.
2. Salomon, D. Ecured 2013.
3. Thomas, F. Fundamentos de sistemas digitales., 9th; PRENTINCE HALL, 2006.
4. Contreras, J. 2018.
5. Microchip.
5.     Anexos
     Hoja de datos Referencias.5