Sie sind auf Seite 1von 32

Paso 3

Presentado por:

Edgar Leonardo Galvis.

Código: 1010015427.

Deivy Faviany Vanegas Vásquez.

Código: 80829122.

David Ricardo Ruiz.

Roosber Fabian Medina.

Código: 80057822.

Curso:

309696_6.

Presentado a:

Ing. Néstor Javier Rodríguez.

Universidad Nacional Abierta y a Distancia “UNAD”.

Escuela de Ciencias Básicas, Tecnología e Ingeniería.

CEAD José Acevedo y Gómez.

Ingeniería Electrónica.

Microprocesadores y Microcontroladores.

02/11/2019.

i
Tabla de contenido.

Introducción. .................................................................................................................................. iii


Resumen......................................................................................................................................... iv
Objetivos. ........................................................................................................................................ v
1. Marco Metodológico. .............................................................................................................. 6
Conclusiones. ................................................................................................................................ 29
Recomendaciones. ........................................................................................................................ 30
Bibliografía. .................................................................................................................................. 31

ii
Introducción.

Con el desarrollo del paso 3 se realizará el reconocimiento de las partes y funcionamiento de un

Microprocesador permitiendo identificar su arquitectura, funcionalidad, periféricos y tipos de

familias mediante aplicación física o simulación y otros propios de su arquitectura, mediante la

programación y uso de lenguaje de bajo nivel Assembler para la solución de problemas aplicados

a proyectos.

Esta actividad es realizada con el fin de comprender la arquitectura, registros y periféricos que

componen un Microprocesador por medio del lenguaje de programación de bajo nivel con el

propósito que el estudiante analice su funcionalidad y aplicación en entornos de simulación.

Para el desarrollo de esta actividad se realizó un estudio previo del del software MPLAB que es

un entorno de programación de bajo y alto nivel para Microcontroladores PIC de la familia de

Microchip, verificando el funcionamiento de los Microcontroladores PIC16F84 y PIC16F87,

adicional se hizo la revisión del software de simulación y diseño de circuitos electrónicos Proteus

con este se realizara la solución al paso 3 planteado anexando todos los elementos electrónicos

necesarios para el funcionamiento. Por último, se hizo revisión de las características principales

de los elementos que componen el diseño de los circuitos como: fotorresistencia, motores,

displays, etc

iii
Resumen.

En el desarrollo de la actividad Paso 3 se presenta el microprocesador como dispositivo que ha

definido la revolución tecnológica de los últimos años, conociendo su estructura, arquitectura,

unidades funcionales, sistemas numéricos, para llegar a tomar como puntos de referencia algunos

dispositivos particulares categorizados en su arquitectura desde los 8 bits hasta los 64 bits.

Las temáticas a desarrollar en este paso son introducción a los microcontroladores, arquitectura de

un microcontrolador, funcionamiento de un microcontrolador, periféricos de un microcontrolador,

microcontroladores de 8 Bits de la empresa Microchip, simulación mediante software, finalmente,

se desarrolla 1 ejercicio de aplicación con un microcontrolador de la familia microchip PIC16F84

o PIC16F877.

Se realizará aportes según las lecturas recomendadas, apropiándonos de los conceptos de

microcontroladores y sus funciones, diseñando tiempos de retardo utilizando subrutinas en

lenguaje de programación de bajo nivel para dar solución al problema del paso 3 planteado y

diseñando el circuito con estos elementos para realizar la simulación en el software de Proteus.

iv
Objetivos.

• Reconocer las partes y funcionamiento interno de un Microprocesador.

• Reconocer las familias de los microprocesadores.

• Interpretar el lenguaje Ensamblador.

• Conocer la arquitectura de un Microprocesador y sus modos de funcionamiento.

v
1. Marco Metodológico.

Proyecto:
Se plantea como proyecto desarrollar el diseño de un sistema de control de un laboratorio

biológico: en el cual se desea controlar la apertura y cierre de las puertas de laboratorio utilizando

motores DC, como también el control de la luminiscencia de las bacterias que se encuentran en el

laboratorio, por lo que el grupo de trabajo colaborativo diseña el sistema de control utilizando

Microcontroladores, donde utilizan el lenguaje de programación de bajo nivel, uso de software de

desarrollo de software y entornos de simulación.

Desarrollo del paso 3:

Ejercicio Seleccionado No. 1:

1. Para el laboratorio se debe diseñar un reloj utilizando 3 displays de 7 segmentos (El grupo

escoge si es de ánodo o cátodo común), para presentar la hora desde 0:00 hasta 9:59 cada número

del reloj es un display de 7 segmentos, cada LED será la salida del Microcontrolador PIC16F84A.

Desarrollo de ejercicios:

Link Videos:

Ejercicio 1: https://youtu.be/n33IL3Wg1XM

6
PIC16F84A:

El PIC16F84A está fabricado en tecnología CMOS, posee memoria FLASH, y consumo bajo de

potencia. Está compuesto básicamente de una memoria ROM (1024 palabras de memoria de

programa), una memoria RAM (de acceso aleatorio, 68 bytes), líneas de entrada y salida (2

Puertos) y una lógica de control que coordina la interacción de los demás bloques.

Estos micros pertenecen a la gama media y dispones de un set de 35 instrucciones, tipo RISC

(Computador con Set de Instrucciones Reducido) pocas, pero muy poderosas.

Algunas funciones especiales que dispone este PIC:

• Temporizador programable (Timer). Si se quiere medir periodos de tiempo entre eventos,

generar temporizaciones o salidas con frecuencia específica, etc.

• Perro Guardián o Watchdog. Consiste en un temporizador que, cuando se desborda ya pasa

por 0, provoca un reset automático, utilizado para sistemas que no tienen control de un

supervisor, y al bloquearse el micro se resetea. Si se utiliza el código debe resetearlo antes

de que se desborde.

• Memoria EEPROM de 64 bytes, para guardar datos que no se alteran a pesar de quitar la

alimentación.

• Interrupciones, cuando una señal externa, o una condición interna activa una línea de

interrupción, dejando de lado la tarea que está ejecutando, atiende dicha interrupción y

luego continúa con lo que estaba haciendo.

• Protección ante fallo de alimentación. Se trata de un circuito que resetea al micro cuando

el voltaje Vdd es inferior al mínimo.

7
• Estado de bajo consumo. Sleep. Si el micro debe esperar mucho tiempo sin hacer nada,

posee una instrucción especial, Sleep, que lo pasa al estado de reposo. Al activarse una

interrupción se “despierta” y reanuda su trabajo. (Reset externo, desbordamiento de

Watchdog, interrupción por RB0, interrupción por cambio de nivel en RB4 a RB7,

interrupción por escritura completada en EEPROM)

Este microcontrolador cuenta con dos puertos configurables como estradas y salidas, y consta de

18 pines los cuales se encuentran asignados de la siguiente manera: El PIC 16F84A contiene 13

líneas I/O (entrada o salida), 5 pertenecen al puerto A y 8 pertenecen al puerto B.

Ilustración 1. Pines PIC 16F84A.

El puerto A tiene solo cinco pines, el pin 3, ósea, RA4/TOCKI puede ser configurado a su vez

como entrada/salida o como temporizador/contador. Cuando es salida se comporta como colector

abierto, por lo tanto debemos poner una resistencia Pull-up a Vdd de 1 Kohm. Cuando se configura

como entrada, funciona como disparador Schmitt Trigger por lo que puede reconocer señales con

un poco de distorsión.

8
El puerto B tiene 8 pines que pueden ser configurados como entrada/salida. RB0 puede

programarse además como entrada de interrupción externa. Los pines RB4 a RB7 pueden

programarse para responder a interrupciones por cambio de estado y los pines RB6 y RB7 se

corresponden con líneas de entrada de reloj y entrada de datos cuando está en modo programación.

MCLR/Vpp, es la entrada de reset si está a nivel bajo, también es habilitador de tensión de

programación. Cuando su tensión es Vdd el PIC funciona normalmente.

Vss y Vdd, son los pines de masa y alimentación. La tensión de alimentación está comprendida

entre los 2 y 5.5 Volt.

OSC1/CLKIN y OSC2/CLKOUT, pines de entrada externa de reloj y salida de oscilador a cristal

respectivamente.

Capacidad de corriente de los puertos:

La máxima capacidad de corriente de cada uno de los pines de los puertos en modo sumidero es

de 25 mA y modo fuente de 20 mA. La máxima capacidad de corriente total de los puestos es,

Puerto A: Modo sumidero 80 mA; Modo fuente 50 mA.

Puerto B: Modo sumidero 150 mA; Modo fuente 100 mA.

El Oscilador externo: Es un circuito externo que le indica al microcontrolador la velocidad a la

que debe trabajar. Puede utilizar cuatro tipos distintos:

RC, Oscilador con resistencia y condensador (Poco preciso)

XT, Cristal de cuarzo.

HS, Cristal de alta velocidad

9
LP, Cristal de baja frecuencia y bajo consumo de potencia.

Al momento de programar un micro se debe especificar qué tipo de oscilador se usa.

Internamente la frecuencia del oscilador es dividida por 4, así que, si temeos un oscilador de 4

MHz, la frecuencia de trabajo es de 1 MHz, por lo que cada instrucción se ejecuta cada 1 us.

Aquí utilizaremos un cristal XT de 4 MHz que debe ir acompañado de dos condensadores:

Ilustración 2. Oscilador Externo PIC 16F84A.

Reset: El PIC 16F84A posee un temporizador interno conectado al pin de reset, que funciona

cuando se da alimentación al microcontrolador. Esto hace que al encender el sistema el

microcontrolador quede en reset por un tiempo mientras se estabilizan todas las señales del

circuito. Para tener control sobre el reset se utiliza el siguiente circuito:

10
Ilustración 3. Reset PIC 16F84A.

Estructura interna del Microcontrolador.

Arquitectura del PIC, existen dos arquitecturas, la clásica de Von Neumann y la arquitectura

Harvard, esta última es la que usan los PIC’s. Dispone de dos memorias independientes, una que

contiene solo instrucciones y la otra solo contiene datos. Ambas disponen de sus respectivos buses

de acceso y es posible realizar operaciones de acceso simultáneamente en ambas.

Memoria del programa.

Aquí almacenamos nuestro programa o código que debe ejecutar, en el PIC16F84A es FLASH, es

rápida, de bajo consumo y alta capacidad de almacenamiento. Se divide en 2048 posiciones, pero

este PIC solo tiene implementadas 1024 posiciones, de 0x00 hasta 0x3FF.

Cuando ocurre un reset, el contador de programa (PC) apunta a la dirección 0x00, y el micro inicia

nuevamente. Aquí se debe escribir todo lo relacionado con la iniciación del mismo, por ejemplo,

configuración de puertos, etc.

Si ocurre una interrupción PC apunta a la dirección 0x04, y aquí debemos escribir el código

necesario para atender a dicha interrupción.

11
Memoria RAM estática.

Donde se encuentran los 24 registros específicos (SFR) y 68 registros de propósito general (GPR).

Se halla dividida en 2 Bancos de 128 bytes cada uno.

Algo que se debe tener en cuenta es la pila o Stack, que consta de 8 posiciones, cada posición

contiene la dirección y datos de la instrucción que se está ejecutando, así cuando se ejecuta una

llamada call o una interrupción, el PC sabe dónde regresar. (Limitar las llamadas anidadas).

Set de instrucciones:

Ilustración 4. Instrucciones PIC16F84A.

12
Ilustración 5.Instrucciones PIC16F84A.

Ilustración 6.Instrucciones PIC16F84A.

13
La multiplexación de un Display:

La multiplexación de un Display, simplemente consiste en encender un único display, mostrar el

número y luego apagarlo, para encender el display que le sigue. El truco de encender y apagar el

display a una alta velocidad, permite engañar al ojo humano, y tener la sensación de que todos los

displays se encuentran energizados al mismo tiempo.

Cátodo Común:

Ilustración 7. La multiplexación de un Display 7 segmentos.

Aquí vemos la conexión de displays de 7 segmentos de cátodo común con transistores NPN donde

poniendo LOW en los pines de control (la base del transistor) los transistores están al corte, y

ningún digito puede iluminarse. Si ponemos tensión en el pin de más a la derecha su transistor se

satura y permite la salida a Ground del primer digito que encenderá los segmentos que le indiquen

los pines del a al g.

Simulación en Proteus:

14
15
Ilustración 8. Simulación Proteus Reloj PIC16F84. Fuente Propia.

16
Código.asm
; **** Universidad Nacional Abierta y a Distancia "UNAD" ****
; **** Escuela de Ciencias Básicas, Tecnología e Ingeniería****
; **** CEAD José Acevedo y Gómez ****
; **** Ingeniería Electrónica ****
; **** Microprocesadores y Microcontroladores ****
; **** Deivy Faviany Vanegas Vásquez****
; **** Edgar Leonardo Galvis****
; **** David Ricardo Ruiz****
; **** Roosber Fabian Medina****
list p=16F84A ; Especificamos con que microcontrolador estamos trabajando.
#include P16F84A.inc ; Librería, se encuentran las definiciones de las direcciones de los registros específicos, los bits utilizados en
cada registro y los fusibles del micro.
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
; Configuración de pines:
;_CP_OFF: Activando este fuse tendremos la garantía de que el código que escribamos en el PIC no pueda ser leído por otra persona,
para que no nos lo copien, modifiquen, etc.
;_WDT_OFF: "perro guardián" del PIC se configura aquí. Esta es una capacidad del microcontrolador de autorresetearse.
;_PWRTE_ON: Si activamos este fuse, lo que conseguimos es que se genere un retardo en la inicialización del microcontrolador.
;_XT_OSC: Este fuse controla el modo de oscilación que usará el PIC para funcionar.

17
;**** Definición de variables ****
Unidad equ 0x0C ; Guardamos conteo unidad,aquí le asignamos nombres a los registros indicando la posición en la
que se encuentran.
Decena equ 0x0D ; Guardamos conteo decena,aquí le asignamos nombres a los registros indicando la posición en la
que se encuentran.
Centena equ 0x0E ; Guardamos conteo centena,aquí le asignamos nombres a los registros indicando la posición en
la que se encuentran.
Contador1 equ 0x0F ; Registro utilizado en demora,aquí le asignamos nombres a los registros indicando la posición
en la que se encuentran.
Contador2 equ 0x10 ; Registro utilizado en demora,aquí le asignamos nombres a los registros indicando la posición
en la que se encuentran.
Contador equ 0x11 ; Control de Refresco de Display,aquí le asignamos nombres a los registros indicando la posición
en la que se encuentran.
MuestroU equ 2 ; Para control del 1º Display,aquí le asignamos nombres a los registros indicando la posición en
la que se encuentran.
MuestroD equ 1 ; Para control del 2º Display,aquí le asignamos nombres a los registros indicando la posición en
la que se encuentran.
MuestroC equ 0 ; Para control del 3º Display,aquí le asignamos nombres a los registros indicando la posición en
la que se encuentran.

;**** Inicio del Micro ****


reset org 0x00 ; Aquí comienza el micro,la directiva org indica el sitio de la memoria en donde se escribe una parte del
programa.
goto Inicio ; Salto a inicio de mi programa.

18
;**** Tabla de conversión BCD a 7 Segmentos ****
; Se coloca al inicio para asegurar ubicación en página.
org 0x05 ; Origen del código de tabla.
BCD7SEG; retlw b'gfedcba' para display cátodo común.
addwf PCL,1 ; Se incrementa el contador del programa.
DT 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F
;**** Programa principal ****
;**** Configuración de puertos ****
Inicio
bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1, poner 1 en el registro status pin RPO.
clrf TRISA ; PORTA como salida, borra los registros del puerto A.
clrf TRISB ; PORTB como salida, borra los registros del puerto B.
bcf STATUS,RP0; Paso del Banco 1 al Banco 0, para escribir el programa.
clrf PORTA ; Desactivo todos los Displays.
clrf Unidad ; Comienza en cero --> 0 0 0, contenido del registo en ceros.
clrf Decena ; Comienza en cero --> 0 0 0, contenido del registo en ceros.
clrf Centena ; Comienza en cero --> 0 0 0, contenido del registo en ceros.
goto Actualizo_Display; Esta rutina multiplexa los displays.

19
;**** Testeo de Pulsador ****
Bucle
incf Unidad,1; Incremento Unidad.
movlw d'10' ; Si es 10 reseteo e incremento Decena,carga un numero en el acumulador.
subwf Unidad,0 ; Resta a f el registro de w.
btfss STATUS,Z ; Salta la siguiente instruccion si bit es 1.
goto Actualizo_Display ; no es 10.
clrf Unidad ; Si, reseteo.
incf Decena,1 ; Incremento Decena.
movlw d'6' ; Si Decena = 6, reseteo e incremento Centena
subwf Decena,0 ;
btfss STATUS,Z ;
goto Actualizo_Display ; No es 10.
clrf Decena ; Si, reseteo.
incf Centena,1 ; Incremento Centena.
movlw d'10' ; Si es 10 Reseteo.
subwf Centena,0
btfss STATUS,Z
goto Actualizo_Display ; No es 10.
clrf Centena ; Si, reseteo.

20
;**** Se multiplexan los Display ****
Actualizo_Display
movlw d'10' ; Cargo Contador = 10
movwf Contador ; Para repeticiones de visualización del mismo valor,mueve una copia del acumulador W al registro f.
; durante 150 ms.
Refresco
movfw Unidad ; Obtengo código de 7 Segmentos para Unidad.
call BCD7SEG ;
bcf PORTA, MuestroC ; Apago Display de Centena, Se entiende al mirar rutina.
movwf PORTB ; Cargo unidad en PORTB.
Bsf PORTA, MuestroU ; Enciendo Display de Unidad.
call Demora_5ms
movfw Decena ; Obtengo código 7 Segmentos para Decena.
call BCD7SEG
bcf PORTA, MuestroU ; Apago Display de Unidad.
movwf PORTB ; Cargo PORTB con Decena.
bsf PORTA, MuestroD ; Enciendo Display de Decena.
call Demora_5ms
movfw Centena ; Obtengo código de 7 Segmentos para Centena.

21
call BCD7SEG
bcf PORTA, MuestroD ; Apago Display de Decena.
movwf PORTB ; Cargo PORTB con Centena.
bsf PORTA, MuestroC ; Enciendo Display Centena.
call Demora_5ms
decfsz Contador,1 ; Pregunto si ya se ha repetido 10 veces el ciclo?, Decrementa el registro f, Salta la siguiente
instrucción si el resultado es 0
goto Refresco ; No, repito.
goto Bucle ; Si, actualizo cuenta.
;**** Demora ****
Demora_5ms
movlw 0xFF ; Cargamos el valor de 5ms que controla la duración.
movwf Contador1 ; Iniciamos contador1.
Repeticion1
movlw 0x05 ;
movwf Contador2 ; Iniciamos contador2
Repeticion2
decfsz Contador2,1 ; Decrementa Contador2 y si es 0 sale,decrementa el registro f, Salta la siguiente
instrucción si el resultado es 0.
goto Repeticion2 ; Si no es 0 repetimos ciclo.

22
decfsz Contador1,1 ; Decrementa Contador1 y si es 0 sale,decrementa el registro f, Salta la siguiente
instrucción si el resultado es 0.
goto Repeticion1 ; Si no es cero repetimos ciclo.
return ; Regresa de la subrutina.

end

23
24
25
26
27
28
Conclusiones.

Con el desarrollo del paso 3 se realizó el reconocimiento de las partes y funcionamiento de un

Microprocesador permitiendo identificar su arquitectura, funcionalidad, periféricos y tipos de

familias mediante aplicación física o simulación.

Esta actividad fue realizada con el fin de comprender la arquitectura, registros y periféricos que

componen un Microprocesador por medio del lenguaje de programación de bajo nivel con el

propósito de analizar su funcionalidad y aplicación en entornos de simulación.

Se realizó la implementación del software MPLAB que es un entorno de programación de bajo y

alto nivel para Microcontroladores PIC de la familia de Microchip, verificando el funcionamiento

de los Microcontroladores PIC16F84 y PIC16F87, adicional se hizo la revisión del software de

simulación y diseño de circuitos electrónicos Proteus con este se realizó la solución al paso 3

planteado anexando todos los elementos electrónicos necesarios para el funcionamiento. Por

último, se hizo revisión de las características principales de los elementos que componen el diseño

de los circuitos como: fotorresistencia, motores, displays, etc

29
Recomendaciones.

Para el desarrollo del diseño del código es importante reforzar el lenguaje de programación

assembler ya que es un lenguaje de programación de bajo nivel que representan instrucciones

básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados

programables. utilizado para describir circuitos digitales y para la automatización de diseño

electrónico.

30
Bibliografía.

Hernández, E. (2009). Microprocesadores. Ed. El Cid Editor. (Pp. 5 -23) Recuperado de:

http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?ppg=3&docID=3183363&tm=

1527288594447

Rocabado, S. (2009). Arquitectura y organización de la computadora: microprocesadores y

programación Assembler. Editorial de la Universidad Nacional de La Plata. (Pp. 24-66).

Recuperado de:

http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?ppg=1&docID=4499097&tm=

1527288958603

Williams, Arthur. (2009). Microprocesadores, dispositivos periféricos, optoelectrónicos y de

interfaz. Ed. McGraw-Hill. (Pp. 5-42). Recuperado de:

http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?ppg=31&docID=3191906&tm

=1527289146227

Miranda, V. (2005). Arquitectura de equipos y sistemas informáticos. 4th ed., Paraninfo.

Recuperado de:

http://bibliotecavirtual.unad.edu.co:2619/apps/pub/3BDI/GVRL?u=unad&sid=GVRL

Angulo, U. (2001). Microcontroladores PIC: diseño práctico de aplicaciones. Primera parte:

PIC12F508 y PIC16F84A. Lenguajes Ensamblador, C y PBASIC (4ª. Ed.). McGrau-Hill. (Pp. 1-

48, 81106) Recuperado de:

http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/detail.action? docID=3194849

31
Eduardo, G. B. (2008). Compilador CCS y Simular Proteus para Microcontroladores Pic Cap. 1.

México d.f., Alfa Omega - Marcombo. (Pp. 23-55). Recuperado de:

https://tecnologialsb.files.wordpress.com/2017/05/compilador-cccs-y-simulador-proteus-para-

microcontroladores-pic.pdf

Dogan, I. (2007). Programación de Microcontroladores PIC. Ed. Marcondo. (Pp. 13-48)

Recuperado de:

http://bibliotecavirtual.unad.edu.co:2460/lib/unadsp/reader.action?ppg=4&docID=3175505&tm=

1527544841827

Noel Jair, Z. (2017). OVI Unidad 2 Microcontroladores. [Archivo de video]. Recuperado de:

http://hdl.handle.net/10596/11674

Rodríguez, N. (2018). OVA: Programación de un Microcontrolador utilizando Assembler.

Universidad Nacional Abierta y/a Distancia. Recuperado de: http://hdl.handle.net/10596/18941

González, H. U. (2009). 309696- Modulo de Microprocesadores y Microcontroladores.

Recuperado de: http://hdl.handle.net/10596/6933

32

Das könnte Ihnen auch gefallen