+ All Categories
Home > Documents > lab 1.docx

lab 1.docx

Date post: 07-Jul-2016
Category:
Upload: gapedrazas
View: 234 times
Download: 0 times
Share this document with a friend
18
UNIVERSIDAD PRIVADA DEL VALLE FACULTAD DE TECNOLOGÍA INGENIERIA MECATRÓNICA CAMPUS TIQUIPAYA MICROPROCESADORES II Informe de Practica de Laboratorio Nº 1 PUERTOS DE ENTRADA Y SALIDA Grupo “A” Estudiante: Gabriela Pedrazas Soto Docente: Ing. Gerson Pérez Evaluació n
Transcript
Page 1: lab 1.docx

UNIVERSIDAD PRIVADA DEL VALLEFACULTAD DE TECNOLOGÍAINGENIERIA MECATRÓNICA CAMPUS TIQUIPAYA

MICROPROCESADORES II

Informe de Practica de Laboratorio Nº 1

PUERTOS DE ENTRADA Y SALIDA

Grupo “A”

Estudiante: Gabriela Pedrazas Soto

Docente: Ing. Gerson Pérez

Cochabamba, 8 de abril del 2015.Gestión I – 2015

PUERTOS DE ENTRADA Y SALIDA

Evaluación

Page 2: lab 1.docx

1. OBJETIVOS

Manejar y configurar los puertos de entrada y salida de los microcontroladores PIC.

Operar los lenguajes de entorno de programación de los microcontroladores.

Familiarizarse con el repertorio de instrucciones de los PIC asociados a la

configuración de los puertos.

Manejar y entenderá el funcionamiento de los pulsadores de acción momentánea y

su utilización con los microcontroladores.

Manejar el concepto de tablas en la programación de microcontroladores en

lenguaje ensamblador.

2. MARCO TEÓRICO

Los PIC16F87X forman una subfamilia de microcontroladores PIC (Peripheral Interface Controller) de gama media de 8 bits, fabricados por Microchip Technology Inc..

Cuentan con memoria de programa de tipo EEPROM Flash mejorada, lo que permite programarlos fácilmente usando un dispositivo programador de PIC. Esta característica facilita sustancialmente el diseño de proyectos, minimizando el tiempo empleado en programar los microcontroladores (µC).

Esta subfamilia consta de los siguientes modelos que varían de acuerdo a prestaciones, cantidad de terminales y encapsulados:

PIC16F870 PIC16F871 PIC16F872 PIC16F873A PIC16F874A PIC16F876A PIC16F877A

La "A" final de los modelos PIC16F873A, PIC16F874A, PIC16F876A y PIC16F877A indica que estos modelos cuentan con módulos de comparación analógicos.

El hecho de que se clasifiquen como microcontroladores (MCU) de 8 bits hace referencia a la longitud de los datos que manejan las instrucciones, y que se corresponde con el tamaño del bus de datos y el de los registros de la CPU.

Page 3: lab 1.docx

Se trata de versiones mejoradas del caballo de batalla PIC16F84, muy empleado en proyectos sencillos, de educación y de entrenamiento.

Características principales

Las características principales de estos dispositivos son:

CPU de arquitectura RISC (Reduced Instruction Set Computer). Set de 35 instrucciones. Frecuencia de reloj de hasta 20MHz (ciclo de instrucción de 200ns). Todas las instrucciones se ejecutan en un único ciclo de instrucción, excepto las de

salto. Hasta 8K x 14 palabras de Memoria de Programa FLASH (ver tabla a continuación). Hasta 368 x 8 bytes de Memoria de Datos tipo RAM (ver tabla a continuación). Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM (ver tabla a continuación). Hasta 15 fuentes de Interrupción posibles. 8 niveles de profundidad en la Pila hardware. Modo de bajo consumo (Sleep). Tipo de oscilador seleccionable (RC, HS, XT, LP y externo). Rango de voltaje de operación desde 2,0V a 5,5V. Conversor Analógico/Digital de 10 bits multicanal. 3 Temporizadores. Watchdog Timer o Perro Guardián. 2 módulos de captura/comparación/PWM. Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver

Transmitter). Puerto Paralelo Esclavo de 8 bits (PSP). Puerto Serie Síncrono (SSP) con SPI e I²C.

Tipos de encapsulado y número de terminales

Microchip Technology Inc. fabrica estos microcontroladores en encapsulados PDIP y SPDIP, SOIC, SSOP, PLCC, QFP y QFN.

Los dispositivos PIC16F870, PIC16F872, PIC16F873A y PIC16F876A se fabrican en encapsulados de 28 patitas en formatos PDIP, SOIC, SSOP y QFN, mientras que los dispositivos PIC16F871, PIC16F874A y PIC16F877A se fabrican en encapsulados de 40 patitas para formato PDIP, y en encapsulados de 44 patitas para formatos PLCC, QFP y QFN.

Page 4: lab 1.docx

En los encapsulados de 28 patitas no está implementado el Puerto Paralelo Esclavo (PSP).

Muchas de las patitas o terminales de estos dispositivos, como suele ocurrir en la mayoría de microcontroladores, tienen más de una función (multiplexación), dependiendo de cómo se configuren internamente por software.

Los terminales VDD (tensión) y VSS (masa) sirven únicamente para alimentar al dispositivo.

Estructura interna

Estos microcontroladores tienen la memoria de programa y la memoria de datos separadas, lo que se conoce como arquitectura Harvard. Esta configuración interna permite entre otras cosas acceder a las instrucciones de programa y a los datos simultáneamente a través de buses diferentes, lo que mejora notablemente la velocidad de proceso de estos dispositivos.

Circuitería externa auxiliar

Para que el microcontrolador sea capaz de funcionar en cualquier proyecto, se necesita al menos la siguiente circuitería externa:

La alimentación. El reloj (oscilador).

También, y de manera opcional:

El circuito de reinicio.

Memoria interna

Existen tres bloques bien diferenciados de memoria. Estos son:

Memoria de programa EEPROM Flash: es el lugar físico donde se guarda el programa de usuario. Es de tipo no volátil.

Memoria de datos SRAM: es el lugar físico donde se guardan datos. Es de tipo volátil. Memoria de datos EEPROM: es el lugar físico donde se guardan datos. Es de tipo no

volátil.Memoria de datos SRAM

Esta memoria es de tipo volátil, lo que significa que no conserva su contenido después de un apagado de alimentación.

En esta memoria se encuentran los registros de funciones especiales (SFR) y los registros de propósito general (GPR), y está particionada en cuatro bancos (0, 1, 2 y 3),

Page 5: lab 1.docx

seleccionables independientemente. El banco 0 es el banco seleccionado por defecto cuando se alimenta al microcontrolador.

Registros de funciones especiales (SFR)

Todos los microcontroladores cuentan con registros internos que permiten controlar y supervisar las funciones y recursos disponibles del dispositivo.

Los registros de los microcontroladores PIC se encuentran en un espacio especial de la memoria de datos, el SFR (Special Function Registers). En los dispositivos PIC16F87X estos registros son de 8 bits, la mayoría de lectura y escritura. Se puede acceder a dichos bits de manera individual, o bien a todo el registro a la vez.

Determinados pares de registros tienen funciones especiales para las cuales se pueden considerar unidos en un único registro de 16 bits, aunque físicamente siguen estando separados.

El registro STATUS

El registro de estado (STATUS) es uno de los más importantes y empleados en el microcontrolador.

Proporciona información acerca del resultado de operaciones aritméticas, operaciones lógicas y causa de reinicios, además de permitir la selección del banco de memoria de datos.

El registro W

El registro de trabajo W (Working Register) es un registro relevante especial de 8 bits que participa en la mayoría de instrucciones. A diferencia de los SFR, se encuentra dentro de la misma CPU, y puede ser accedido tanto para lectura como para escritura.

Set de instrucciones y sintaxis

Los PIC16F87X son microcontroladores RISC. Esto se refleja en que tienen un repertorio reducido de 35 instrucciones ortogonales (prácticamente todas las instrucciones pueden utilizar cualquier operando), éstas son rápidas y todas tienen una longitud fija de 14 bits.

Las instrucciones se pueden clasificar en:

Instrucciones de carga. Instrucciones de bits. Instrucciones aritméticas. Instrucciones lógicas. Instrucciones de salto.

Page 6: lab 1.docx

Instrucciones de manejo de subrutinas. Instrucciones especiales.

En todas las instrucciones donde aparece una d como operando:

Si d = 0, el resultado de la operación se guarda en W. Si d = 1, el resultado de la operación se guarda en el registro f. Es el valor por defecto.

Registro de configuración

Estos microcontroladores cuentan con un registro especial llamado palabra de configuración (Configuration Word) de 14 bits, que se encuentra en la dirección 2007h de la memoria de programa.

Este registro debe escribirse durante el proceso de grabación del microcontrolador ya que no puede ser modificado durante el tiempo de ejecución de un programa.

Su función es especificar ciertas características de funcionamiento del microcontrolador, como son:

Protección de memoria de programa. Uso del modo de depuración en circuito. Permiso de escritura en memoria Flash. Protección de memoria EEPROM de datos. Uso de programación en modo de bajo voltaje. Uso de reinicio por caída de tensión. Uso del temporizador de conexión de alimentación. Uso del Watchdog. Tipo de oscilador empleado.

Existen dos formas de configurar estos bits: una de ellas es desde MPLAB, mediante la opción Configuration bits del menú configure. La otra es mediante la directiva _ _CONFIG dentro del programa ensamblador.

3. MATERIALES Y EQUIPO

1 Multímetro Digital.

1 Microcontrolador PIC de gama media o alta

1 Bread board.

1 Fuente DC.

1 Pulsador.

7 Diodos emisores de luz LED.

Page 7: lab 1.docx

1 Display de 7 segmentos.

4. PROCEDIMIENTO

Parte 1.1

Configurar dos puertos como entrada y un puerto como salida y realizar un programa que

sume los datos ingresado en los puertos de entrada y muestre el resultado en el puerto

configurado como salida.

Parte 1.2

Realizar un programa que compare los nibbles alto y bajo de un puerto configurado como

entrada y muestre el resultado en tres LEDs conectados a otro puerto configurado como

salida. Considere el puerto de entrada:

Y el puerto de salida:

Parte 1.3

Realizar un programa que rote a la izquierda el encendido de uno de ocho LEDs conectados

a un puerto configurado como salida. La rotación se efectuará cada vez que se presione un

pulsador conectado a otro puerto configurado como salida.

Parte 1.4

Desarrollar un programa, utilizando el concepto de tablas, que cuente las veces que se

presiona un pulsador. El conteo debe mostrarse en un displays de 7 segmentos conectado a

un puerto configurado como salida. El conteo debe ser en base hexadecimal que empiece en

0 y termine en F.

5. CÓDIGO Y SIMULACIÓN

Parte 1.1

list p=16f877Ainclude "p16f877a.inc"

Page 8: lab 1.docx

ORG 0NOP ;no opera BSF STATUS,RP0BCF STATUS,RP1 ;Cambio al Banco 1CLRF TRISC ;Limpia puertos A,B y DBSF TRISB, 0 ;Configura Puerto C como entradaBSF TRISD, 0 ;Configura Puerto D como entradaBCF STATUS,RP0 BCF STATUS,RP1 ;Regresa al Banco 0

INICIO:MOVFW PORTB ;mover valor del puerto B al trabajoADDWF PORTD,W ;sumar valor del puerto B y C y guardar en

el trabajoMOVWF PORTC ;mover trabajo al puerto CBTFSC STATUS,C ;saltar si puerto C ceroBTFSS STATUS,C ;saltar si puerto C unoBTFSC STATUS,C ;saltar si puerto C ceroBSF PORTC,7 ;activar bit 7 del puerto CBCF PORTC,7 ;desactivar bit 7 del puerto CGOTO INICIO ;volver a inicio

END ;fin programa

Page 9: lab 1.docx

En la simulación podemos apreciar que se han configurado los puertos B Y D como

entradas y se usan compuertas de LogicState para poder introducir valores al

microprocesador, de acuerdo al funcionamiento del programa,, el microprocesador hace la

suma de ambos valores y muestra el resultado en los Logic states que se encuentran

conectados al puerto C configurado previamente como salida.

Parte 1.2

list p=16f877Ainclude "p16f877a.inc"

AUX1 EQU 0X22AUX2 EQU 0X23

ORG 0NOPBSF STATUS,RP0BCF STATUS,RP1 ;Cambio al Banco 1CLRF TRISC ;Configura puerto C como salidaMOVLW b'11111111'MOVWF TRISD ;Configura puerto D como entradasBCF STATUS,RP0BCF STATUS,RP1 ;Regresa al Banco 0

INICIO:MOVFW PORTD ;mover valor del puerto D al trabajoMOVWF AUX1 ;mover trabajo a variable AUX1MOVWF AUX2 ;mover trabajo a variable AUX2SWAPF AUX2,F ;intercambiar niblesMOVLW 0X0F ;mover literal al trabajoANDWF AUX1,F ;sumar variable y registroANDWF AUX2,F ;sumar variable y registroMOVWF AUX1 ;mover trabajo a variable AUX1SUBWF AUX2,W ;restar trabajo de registroBTFSC STATUS,Z ;saltar si Z es ceroGOTO IGUAL ;ir a IGUALBTFSC STATUS,C ;saltar si C es ceroGOTO MAYOR ;ir a MAYORGOTO MENOR ;ir a MENOR

MAYOR:MOVLW b'00000100' ;mover literal a trabajoMOVWF PORTC ;mostrar trabajo en puerto CGOTO INICIO ;volver a INICIO

IGUAL:MOVLW b'00000010' ;mover literal a trabajoMOVWF PORTC ;mostrar trabajo en puerto CGOTO INICIO ;volver a INICIO

Page 10: lab 1.docx

MENOR:MOVLW b'00000001' ;mover literal a trabajoMOVWF PORTC ;mostrar trabajo en puerto CGOTO INICIO ;volver a INICIO

END

De acuerdo con esta simulación, podemos ver que se ha configurado el puerto D como

entrada, diferenciándose, 4 bits como el nible alto y otros 4 como el nible bajo,

internamente ocurre una comparación de ambos, es decir nible alto y nible bajo y de

acuerdo a la orden de laboratorio, en caso que en el nible alto se haya introducido un

valor superior al otro, se encenderá la primera Led conectada al puerto C configurado

como salida, en caso de ser iguales los valores introducidos, se encenderá el Led del

medio y finalmente en caso de ser mayor el valor introducido en el nible bajo, se

encenderá la ultima Led.

Parte 1.3

list p=16f877Ainclude "p16f877a.inc"

ORG 0NOP ;no opera BSF STATUS,RP0BCF STATUS,RP1 ;Cambio al Banco 1

Page 11: lab 1.docx

CLRF TRISC ;Limpia puertos A,B y DBSF TRISB,0 ;Configura Puerto C como entradaBCF STATUS,RP0 BCF STATUS,RP1 ;Regresa al Banco 0

INICIO:BCF STATUS,C ;limpar estado en puerto CMOVLW b'00000001' ;Escribir literal a trabajoMOVWF PORTC ;mover trabajo a puerto C de salida

BUCLE:BTFSS PORTB,0 ;saltar si Puerto B es uno, pulsadorGOTO BUCLE ;ir a bucleRLF PORTC,F ;rotar a la izquierda el valor de F en el

puerto CGOTO BUCLE ;ir a buclce

END

En este cao podemos ver que se tiene una sola entrada en el puerto B, bit 0, que es la patita

33 del integrado y en ella se conecta un pulsador, el cual al presionarse ocasiona una

rotación del encendido de los Leds que están conectados a la salida del puerto C, es un ciclo

infinito.

Parte 1.4

LIST P=16F877AINCLUDE "P16F877A.INC"ORG 0

Page 12: lab 1.docx

AUX EQU 0X22 ;variable de lazo

NOPBSF STATUS,RP0 ;ir a banco 1BCF STATUS,RP1BSF TRISB,0 ;configurar puerto B como entrada bit 0CLRF TRISD ;configurar puerto D como salidaBCF STATUS,RP0BCF STATUS,RP1 ;volver a banco 0CLRF AUX ;limpiar variable AUX

INICIO:CLRW ;limpiar registro de trabajoCALL TABLAS ;llamar a Subrutina tablasMOVWF PORTD ;mover trabajo a salida D

BUCLE:BTFSS PORTB,0 ;saltar si bit o de Pueto B es unoGOTO BUCLE ;volver a bucleINCF AUX,F ;incrementar en uno la variable AUXMOVFW AUX ;movr variable a trabajoCALL TABLAS ;Llamar subrutina TABLASMOVWF PORTD ;Mover trabajo al puerto D

LAZO:BTFSC PORTB,0 ;Saltar si bit 0 PORTB es ceroGOTO LAZO ;ir a LAZOGOTO BUCLE ;ir a BUCLE

TABLAS:ADDWF PCL,F ;sumar contenido de trabajo al registroRETLW b'00111111' ;0RETLW b'00000110' ;1RETLW b'01011011' ;2RETLW b'01001111' ;3RETLW b'01100110' ;4RETLW b'01101101' ;5RETLW b'01111101' ;6RETLW b'00000111' ;7RETLW b'01111111' ;8RETLW b'01101111' ;9

END

En la simulación podeos apreciar que se tiene una sola entrada conectada al puerto B en el

bit 0, conectada a un pulsador, el cual da la señal, para que el programa internamente realice

una incremento del valor que se observa a la salida del puerto D conectado a un display de 7

segmentos , en el cual se introduce el valor de forma binaria para su posterior

Page 13: lab 1.docx

interpretación, lo que ocurre es que se realiza un conteo de los pulsos en la entrada que van

de 0 a 9 en Hexadecimal.

6. CUESTIONARIO

Explicar los algoritmos utilizados en los distintos programas de la práctica.

Cada línea del programa se encuentra explicada en comentarios. Revisar parte 5 de

códigos y simulaciones.

Explicar los diagramas de los circuitos utilizados en la práctica.

Cada simulación posee una explicación junto a ella. Revisar parte 5 de códigos y

simulaciones.

7. CONCLUSIONES

De acuerdo con el funcionamiento y desarrollo correcto de los códigos de programación en

MPLAB y su correcto funcionamiento en las simulaciones de PROTEUS, se procedió a

quemar cada uno de los programas en un PIC 16F877A y se realizó e armado del circuito,

el cual en ocasiones no funciona correctamente, presumiblemente por mal estado del PIC o

del PROTOBOARD.

A pesar de algunos inconvenientes los objetivos fueron cumplidos satisfactoriamente, y se

lograron los propósitos planteados.

Page 14: lab 1.docx

8. RECOMENDACIONES

Se recomienda tener especial cuidado al hacer las conexiones en el circuito, para evitar un

mal uso del material y resultados incorrectos. También se recomienda realizar las

simulaciones definiendo si se usaran estados analógicos o digitales correctamente para que

en el armado, el programa funcione de igual manera.

9. BIBLIOGRAFÍA

https://es.wikipedia.org/wiki/Microcontrolador_PIC

http://www.monografias.com/trabajos12/microco/microco.shtml

http://learn.mikroe.com/ebooks/microcontroladorespicc/chapter/

caracteristicas-basicas-del-pic16f887/


Recommended