Beruflich Dokumente
Kultur Dokumente
Laboratorio de Microprocesadores y
Registro estatus…………………………………………………………………………………………………………………...6
2
Práctica 2. Comparación de Registros
Descripción
En esta práctica se presentará al alumno una de las aplicaciones más
significativas de los saltos condicionales mediante la comparación del
contenido de dos registros para saber si su contenido es igual, mayor o
menor que un valor dado. Durante el desarrollo del proyecto se aplicarán
conocimientos y habilidades adquiridas en el desarrollo de la práctica 1.
Objetivos
En esta práctica se presentará al alumno una de las aplicaciones más
significativas de los saltos condicionales mediante la comparación del
contenido de dos registros para saber si su contenido es igual, mayor o
menor que un valor dado
3
Objetivos Específicos
Presentar al alumno las instrucciones del lenguaje ensamblador para
realizar saltos condicionales en la ejecución del programa a fin de
poder realizar comparación entre el contenido de dos registros.
Introducción
Como sabes el PIC16F887 tiene tres tipos de memoria: ROM, RAM y EEPROM. Para esta
práctica nos enfocaremos en la memoria RAM.
La memoria RAM es la tercera y la más compleja parte de la memoria del microcontrolador y
consiste en dos partes: los registros de propósito general y los registros de funciones
especiales (SFR), cabe mencionar que para el PIC16F887 estos registros se dividen en cuatro
bancos de memoria.
4
BANCOS DE LA MEMORIA RAM
Como comentamos al principio, la memoria RAM está dividida en cuatro bancos. Antes de
acceder a un registro al escribir un programa (para leer o cambiar su contenido), es necesario
seleccionar el banco que contiene ese registro. Para simplificar el funcionamiento, los SFR
(Registros de Funciones Especiales o de propósito específico) utilizados con más frecuencia
tienen la misma dirección en todos los bancos, lo que permite accederlos con facilidad.
5
Registro STATUS
Entre los principales registros de función especial tenemos el registro STATUS, los bits del
registro controlan los diferentes circuitos dentro del chip, así que no es posible clasificarlos en
grupos especiales. Por esta razón, se describen junto con los procesos que controlan.
0 0 Banco 0
0 1 Banco 1
1 0 Banco 2
1 1 Banco 3
6
C - Carry/Borrow bit (bit de acarreo/préstamo) cambia al sumar o al restar si ocurre un
"desbordamiento" o un "préstamo" en el resultado, o sea si el resultado es mayor de 255 o
menor de 0.
o 1 - Ocurrió acarreo en el bit más significativo (MSB) del resultado.
o 0 - No ocurrió acarreo en el bit más significativo (MSB) del resultado.
Para el manejo del PIC16F887 en esta y las siguientes prácticas es necesario que investigues
como utilizar los registros SFR (Registros de Funciones Especiales o de propósito específico) y
cómo seleccionar el banco que contiene el registro que queremos usar, así como el significado
de los bits de cada registro, para esto te recomendamos revisar el Data Sheet (hoja de datos)
del PIC16F887.
Trabajo en casa
El cuestionario se encuentra en línea en la página www.proyectolati.org –aula virtual-
7
Trabajo en el laboratorio
Problema de diseño
Se pretende diseñar el control de nivel de un conjunto de 4 tanques de
almacenamiento. Los tanques se encuentran interconectados entre sí,
por lo que forman un solo tanque de gran volumen. El sistema de
detección de nivel envía un valor a través de un bus de 8 bits, por lo
que el nivel mayor tiene un valor de 255, el inferior 0 y por tanto, el
valor central está dado por 127.
Análisis y diseño
1. Definición del funcionamiento y de las características.
Comenta con tus compañeros qué periféricos del PIC deberás
configurar.
Puertos digitales de entrada
Puertos digitales de salida
Otros periféricos
2. Diseño del esquemático. Plantea un circuito esquemático en
Isis de Proteus donde indiques las terminales que usarás,
conexiones a VSS y VDD, y los elementos que formarán tu
circuito.
8
3. Planteamiento del programa. Comenta con tus compañeros el
procedimiento para realizar comparación entre el contenido
de dos registros en lenguaje ensamblador. Toma en cuenta:
¿En qué registro se encuentran las banderas C y Z?
¿Cuál es el estado de la bandera C después de ejecutar
una instrucción SUBWF?
¿Cuál es el estado de la bandera Z después de ejecutar
una instrucción SUBWF?
¿Cómo funcionan las instrucciones BTFSS y BTFSC?
9
Desarrollo. Validación mediante simulación
1. Activa el simulador MPLAB SIM en el menú <Debugger → Select
tool → MPLAB SIM>.
2. Abre la ventana watch desde el menú <View → watch> y agrega los
registros en la lista de símbolos:
a. STATUS
b. PORTB
c. TRISB
d. PORTD
e. TRISD
f. WREG
g. ANSELH
3. Crea una nueva ventana del generador de estímulos asíncronos
desde el menú <Debugger → Stimuls → New Work Book> y agrega
los pines desde RB0 hasta RB1 con la acción <Set High> y
nuevamente los mismos pines con la acción <Set Low>.
4. Realiza la simulación paso a paso del programa presionando F8
mientras visualiza el código fuente y la ventana watch. Analiza el
contenido de cada símbolo de la ventana watch y comenta cual es
el estado o configuración del microcontrolador.
5. Realiza la simulación de entradas digitales a través del puerto B
presionando en el botón correspondiente en el generador de
estímulos asíncronos mientras sigue simulando paso a paso con F8.
6. Valida que el programa de la práctica 1 lea 8 bits del puerto B y
refleje la lectura en el puerto D.
10
Implementación
1. Modifixa el programa de la práctica 2 para que calcule el
complemento a dos del dato leído en el puerto B y el resultado lo
entregue en el puerto D.
2. Realiza la simulación del nuevo programa.
3. Programa tu microcontrolador con la nueva versión del programa.
Resultados
1. Captura dos pantallas de la simulación donde se muestre el
funcionamiento del programa y guárdalas en una memoria USB. Las
capturas deberán mostrar la ventana watch con los valores
calculados del complemento a dos.
2. Toma una fotografía de la operación del circuito.
3. Realiza un documento escrito que contenga los siguientes
elementos:
a. Carátula: Deberá incluir
i. Institución
ii. Número de práctica
iii. Nombre de la práctica
iv. Nombre del alumno
v. Horario
vi. Fecha de entrega
b. Objetivos: Particular y específicos
c. Descripción de la práctica: Trabajo realizado en clase
d. Resultados obtenidos:
i. Parciales o totales obtenidos de la realización de la
práctica
ii. Problemas circunstanciales del desarrollo de la
práctica
e. Conclusiones
Referencias
Bibliografía
ANGULO J. (2000). Microcontroladores PIC. España. Paraninfo.
GONZALEZ J. (1992).Introducción a los Microcontroladores. España.
Graw-Hill.
MYKE P. (2001). Programming and Customizing the PIC
Microcontroller. McGraw-Hill. México.
PALACIOS E. (2006). Microcontrolador PIC16F84, Desarrollo de
proyectos México: Alfaomega Ra-Ma.
TAFANERA A. (2000). Teoría y diseño con Microcontroladores PIC.
México. Autores Editores.
11
TORRES P. (1994). Microprocesadores y Microcontroladores Aplicados
a la Industria. Madrid. Paraninfo.
Mesografía
Microchip (2011) http://microchip.com
12
Anexo 1
Código fuente
; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * *
; * Universidad Nacional Autonoma de Mexico *
; * Facultad de Estudios Superiores Aragon *
; * *
; * Laboratorio de *
; * Microprocesadores y Microcontroladores *
; * *
; * Práctica 2 Ver 2.0 (c) 2007 *
; * Revisión 1 (c) 2011 *
; * Manejo de tablas *
; * *
; * M en I Arcelia Bernal Díaz *
; * Ing Ignacio Mendoza Nucameni *
; * *
; * TEMAS: *
; * Comparación entre registros *
; * saltos en función de un bit *
; * Saltos en función de un registro *
; * *
; * Microcontrolador: PIC16F887 *
; * Oscilador: 8 MHz interno *
; * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
; * Este programa compara el dato del puerto de entrada PORTB con un
"Numero"*
; * Si PORTB = NUMERO se encienden los led de la forma 0XAA *
; * Si PORTB > NUMERO se encienden los led de la forma 0XF0 *
; * Si PORTB < NUMERO se encienden los led de la forma 0X0F *
; * * * * * * * * * * * * * * * * * * * * * * * * * * * ****
__CONFIG _CONFIG1, _INTOSCIO & _MCLRE_OFF & _WDT_OFF & _LVP_OFF &
_CPD_OFF & _CP_OFF & _BOR_OFF & _PWRTE_ON & _FCMEN_OFF & _IESO_OFF
LIST P=16F887
#INCLUDE <P16F887.INC>
13
MOVWF TRISB
MOVLW b'00000000' ; Configurar puerto D como salida
MOVWF TRISD
BSF STATUS, RP1 ; Cambio al banco 3
BSF STATUS, RP0
CLRF ANSELH ; Puerto B configurado como digital
BCF STATUS, RP1 ; Cambio al Banco 0
BCF STATUS, RP0
Principal
MOVLW NUMERO
SUBWF PORTB,W
BTFSC STATUS, Z ; SI PORTB = NUMERO ENTONCES
GOTO EsIgual ; salta a EsIguales
BTFSC STATUS, C ; SINO SI PORTB > NUMERO ENTONCES
GOTO EsMayor ; salta a EsMayor
GOTO EsMenor ; SINO salta a EsMenor
EsIgual
MOVLW 0xAA
MOVWF PORTD ; Actulizar salida en PUERTOD
GOTO Principal
EsMayor
MOVLW 0xF0
MOVWF PORTD ; Actulizar salida en PUERTOD
GOTO Principal
EsMenor
MOVLW 0x0F
MOVWF PORTD ; Actulizar salida en PUERTOD
GOTO Principal
END
14
Anexo 2
Circuito práctica 2
15
Anexo 3
Fuente de 5V
Material
16