You are on page 1of 14

Universidad de Carabobo

Facultad de Ingeniera
Escuela de Ingeniera Elctrica
Departamento de Sistemas y Automtica
Laboratorio de Microprocesadores

PRACTICA N1
MANIPULACION DE ENTRADAS Y SALIDAS DIGITALES

Elaborador por:
Asuaje, Jahiker
Bolletti, Eilyn

INTRODUCCION
En la presente prctica se desarrollara un conjunto de acciones utilizando el
dispositivo PIC16F887 para ejecutar acciones tales como controlar el encendido y
apagado de un Led, realizar combinaciones de estas acciones que ejecuta
microcontrolador (PIC16F887) y realizar la implementacin de un juego que
consiste en la comparacin de dos nmeros para ello es necesario ejecutar acciones
como una acumulacin e incremento de un nmero, realizar restas y comparaciones,
entre otras. Se implementar el uso de los programas como el MPLAB, el cual nos
permite realizar un lenguaje ensamblador con los objetivos que se deseen ejecutar
con el PIC16F887 para compilarlo, verificar errores y realizar las correcciones
necesarias. Tambin se implementar el PROTEUS, programa para simular circuitos
electrnicos complejos integrando inclusive desarrollos realizados con
microcontroladores de varios tipos, en este caso el PIC16F887.

Objetivo General
Disear programas en lenguaje ensamblador para manipular entradas y salidas
digitales del microcontrolador, que se relacionen con la resolucin de un algoritmo.
Objetivos Especficos:
-

Verificar los procedimientos para el desarrollo de aplicaciones con


microcontroladores
Manipular salidas digitales con el microcontrolador.
Procesar entradas digitales con el microcontrolador.
Conectar perifricos digitales (pulsadores, interruptores, leds) con el
microcontrolador.

PRELABORATORIO Semana 1
Se requiere elaborar una aplicacin para el PIC16F887 que controle un LED
de salida de acuerdo al comportamiento de una entrada digital. Para la realizacin de
sta y las siguientes prcticas del curso, se utilizar el circuito estndar montado en
los protoboards del laboratorio, similar al de la figura 1.

Figura 1. Diagrama simplificado de conexin, slo con entradas y salidas digitales.


Nota: el punto decimal del display siete segmentos corresponde a la salida RD0.
Elabore una aplicacin con el PIC16F887 que incremente un contador Cont
desde 1 hasta 12, de forma cclica (despus de tener el valor 12 debe tener el valor 1,
2, 3 y as sucesivamente), dicho ciclo de incremento de Cont se efectuar despus
que el usuario accione un switch S; cuando el usuario presione el pulsador P la
cuenta se detendr, se mostrar el valor de Cont y se encender un led L. El led
L estar ubicado en el pin RC5, el switch S en el pin RA5 y el pulsador P en
el pin RA4. Al comenzar la ejecucin del programa el led L debe estar apagado.
Se volver a efectuar el incremento de Cont cuando el switch S se vuelva a
accionar.
a. Obtenga el diagrama de conexiones de la aplicacin, mostrando: entradas,
salidas, conexin del oscilador y MCLR
b. Obtenga el diagrama de flujo o pseudocdigo del algoritmo que implemente
el comportamiento descrito anteriormente.
c. A partir del diagrama de flujo o pseudocdigo obtenido, codifique el
programa correspondiente en lenguaje ensamblador PIC16F887. El circuito
de la aplicacin corresponde al del laboratorio. Comente apropiadamente su
cdigo.

b) Obtenga el diagrama de flujo o pseudocdigo del algoritmo que implemente


el comportamiento descrito anteriormente.

Declarando Registros

Declarando Constantes

Configurar Registros

S=1

CONT

PORTC

PORTC
No
CONT
LED ON

Po = 0
(Resultado)
CONT

S
CONT +
FIN

CONT
(Sigue)
No = 13

b. A partir del diagrama de flujo o pseudocdigo obtenido, codifique el


programa correspondiente en lenguaje ensamblador PIC16F887. El circuito
de la aplicacin corresponde al del laboratorio. Comente apropiadamente su
cdigo.
;Contador de 1 a 12
list p=16F887
#include <p16f887.inc>
ORG 0X00
GOTO INICIO
ORG 0X05
CNT EQU 0X20

;Contador

INICIO
; Configuraciones
BSF STATUS,RP0 ; Banco 1
MOVLW b'00110000'; configuracin del puerto A
MOVWF TRISA ; Entradas en los pines 4 y 5
MOVLW b'00000000'; Configuracin del puerto C
MOVWF TRISC ; Salidas en el puerto C
BSF STATUS,RP1 ; Banco 3
CLRF ANSEL ; Port A para seales digitales
CLRF ANSELH ; Port B para seales digitales
BCF STATUS,RP0
BCF STATUS,RP1 ; Banco de operacion
Inicializacin
CLRF PORTC
CLRF PORTA
MOVLW .1
MOVWF CNT

; Puerto C a cero
; Puerto A a cero
;
; Contador en 1

CICLO
BTFSS PORTA,5 ;Pregunta si "S" est en 1
GOTO CICLO
;ir a ciclo
GOTO CONTAR ; comenzar cuenta
CONTAR
MOVF CNT,0
INCF CNT,1

; cargar el contador en W
; Incrementar y guardar en CNT

MOVLW .13
; Cargar 13 en W
SUBWF CNT,0
; Restar con el nmero de contador
BTFSS STATUS,Z ; Evaluar el bit Z de STATUS
GOTO DETENER ; Ir a DETENER
GOTO RESET_CNT ; Resetear el Contador
RESET_CNT
MOVLW .1
MOVWF CNT

; Cargar 1 en W
; Contador a 1

DETENER
; Evaluar el Pulsador
PULSADO
BTFSS PORTA,4
GOTO CICLO
; Ir a Ciclo
GOTO SUELTO ; Ir a Suelto
SUELTO
BTFSC PORTA,4
GOTO SUELTO ; Ir a Suelto
GOTO MOSTRAR ; Ir a Mostrar
MOSTRAR
MOVF CNT,0
;carga el contador en W
MOVWF PORTC
; muestra el contador en PortC
BSF PORTC,5 ;Enciende el LED
GOTO Inicializacin ; Ir a inicializacion
GOTO CICLO
END
PRELABORATORIO Semana 2
Se desea modificar la aplicacin de la semana anterior para implementar un
juego de azar basado en un generador de nmeros aleatorios y la entrada del usuario.
El circuito a emplear se muestra en la figura 2. El switch S, el pulsador P y el
led L permanecen conectados en los mismos pines que la semana anterior.
Cuando se inicia el programa, mediante el accionamiento del switch S, el
led L se enciende para sealizar que el usuario debe comenzar a jugar,
introduciendo un nmero binario de 3 bits en los pines RA2, RA1, RA0, el cual
llamaremos ENT.

Una vez encendido L y mientras P permanece sin presionar (y el usuario


est presumiblemente configurando los switches RA2 a RA0), el micro incrementa
constantemente un contador mediante un registro que denominaremos CNT.
Cuando el usuario finaliza de ajustar la entrada, procede a presionar P, y en
este momento:
(1) Se detiene la cuenta CNT
(2) Se apaga el led L
(3) Se calcula el doble del valor de ENT
Si el resultado referido en (3) es menor a CNT, el jugador gana. En este caso
se prende el led G (ubicado en el pin RC4). Si es mayor o igual que CNT,
entonces el jugador pierde (no se enciende G). En ambos casos, gane o pierda, el
valor de CNT se mostrar en los pines de salida RC3RC0. La salida se mantiene
as hasta que se presione el switch S nuevamente y se encienda el led L (y se
pondrn en cero nuevamente los restantes bits del puerto C).
a. Obtenga el diagrama de flujo o pseudocdigo del algoritmo de la aplicacin de
acuerdo al comportamiento descrito.
b. A partir del diagrama de flujo o pseudocdigo obtenido, codifique el programa
correspondiente en lenguaje ensamblador PIC16F887. El circuito de la aplicacin
corresponde al del laboratorio. Comente apropiadamente su cdigo.
c. De ser posible, SIMULE su aplicacin en el PROTEUS antes de traerla al
laboratorio, para verificar su funcionamiento.
a. Obtenga el diagrama de flujo o pseudocdigo del algoritmo de la aplicacin de
acuerdo al comportamiento descrito.

Declarando Registros

Declarando Constantes

Configurar Registros
Inicio

.7 ENT .0

PORTC

S=1

No

S
CNT

LED L ON

CNT

CNT + 1

CNTS= .16
No
Po = 0
No
LED L OFF

C (Acarreo)

ENT

RLF(ENT) =

ENT

PORTB

C (Acarreo)

RLF (CNT)

AUX

W + AUX

PORTC
No

Llama a:
Perdiste
LED G OFF

CNT > ENT

Po = 0

No

S
Inicio

Fin

Llama a:
Ganaste
LED G ON

b. A partir del diagrama de flujo o pseudocdigo obtenido, codifique el programa


correspondiente en lenguaje ensamblador PIC16F887. El circuito de la aplicacin
corresponde al del laboratorio. Comente apropiadamente su cdigo.
;******************************************************************
;******************* Juego de Azar de 1-12 ***************************
;******************************************************************
list p=16F887
#include <p16f887.inc>
ORG 0X00
GOTO Configurar
ORG 0X05
CNT EQU 0X20 ; Contador
ENT EQU 0X21
Configurar
BSF STATUS,RP0 ; Banco 1
MOVLW 0X37
; configuracin del puerto A
MOVWF TRISA
; Entrada del puerto A
MOVLW b'11000000' ; Configuracin del puerto C
MOVWF TRISC
; Salidas en los primeros 6 bits
BSF STATUS,RP1 ; Banco 3
CLRF ANSEL
; PortA para seales digitales
CLRF ANSELH
; PortB para seales digitales
BCF STATUS,RP0
BCF STATUS,RP1 ; Banco de operacion
INICIO
;Inicializacin de las variables
CLRF ENT
MOVLW .1
MOVWF CNT
CLRF PORTA
CLRF PORTC
CICLO
;Se pregunta por "S"
BTFSS PORTA,5
GOTO CICLO
GOTO JUGAR
JUGAR
BSF PORTC,5

; Se enciende el LED

CONTAR
MOVF CNT,0
INCF CNT,1
MOVLW .13
; Cargar 13 en W
SUBWF CNT,0
BTFSS STATUS,Z ; Verifica el bit CERO del registro STATUS
GOTO PULSADO
GOTO RESETCNT
RESETCNT
;Reiniciar el contador
BCF STATUS,Z ; Se borra Z
MOVLW .1
MOVWF CNT
PULSADO
BTFSS PORTA,4
GOTO CONTAR
GOTO SUELTO

; Verifica si el pulsador est activo

SUELTO
BTFSC PORTA,4 ; Verifica si se solt el pulsador
GOTO SUELTO
GOTO DETENER
DETENER
BCF PORTC,5 ; Se apaga el LED
MOVF PORTA,0 ; La entrada de PtoA en W
MOVWF ENT
; W en ENT
RLF ENT,1
; 2*ENT en ENT
MOVLW b'00001111'
ANDWF ENT,1
MOVF ENT,0
; CNT en ENT
COMPARAR
SUBWF CNT,0
; (CNT-ENT)
BTFSS STATUS,C ; Se evalua el Carry del registro STATUS
GOTO MOSTRAR
GOTO GANA
GANA
BCF
BSF

; El jugador gana
STATUS,C ; Se limpia el Carry
PORTC,4 ; Se enciende el LED "G"

MOSTRAR
MOVF PORTC,0
; CNT en W
ADDWF CNT,0
ANDLW b'00011111'
MOVWF PORTC
RESETEAR
BTFSC PORTA,5
GOTO RESETEAR
GOTO INICIO
END
Durante la practica en el laboratorio se realizo la corrida del cdigo del juego
de azar en el protoboard y se verificaron que los resultados arrojados por el mismo
para valores en especifico de entrada fuesen correctos, se anexaran las tablas donde
se recolecto dicha informacin, a su vez el restante de los nmeros de entrada
posibles fueron verificados en casa por medio del programa PROTEUS y a
continuacin se anexan las tablas de resultados.
Valores obtenidos en la
Vent\V
0
1
2
cnt
1
X
P
G
3
X
P
P
4
X
P
P
6
X
P
P

simulacin con PROTEUS


3
4
5
6
7
8
G
P
P
P

G
P
P
P

G
P
P
P

G
P
P
P

G
G
P
P

G
G
P
P

G
G
G
P

G
G
G
P

G
G
G
P

G
G
G
P

G
G
G
G

X
X
X
X

X
X
X
X

CONCLUSIONES
Un microcontrolador contiene internamente memoria para conectarle
dispositivos de entrada y de salida en sus pines. Al realizar la prctica observamos
cmo tratar con las entradas y salidas del microcontrolador, dependiendo del
problema.
Inicialmente analizando algoritmos y luego en el lenguaje ensamblador,
realizando ciertas instrucciones como almacenar variables y/o constantes en otras
variables, el uso de contadores para la suma sucesivas mediante una condicin, el
incremento de un numero de bits, etc., estos son los llamados subprogramas los
cuales se utilizan para el xito del programa
La importancia del lenguaje ensamblador radica principalmente que se trabaja
directamente con el microprocesador; por lo cual se debe de conocer el
funcionamiento interno de este, tiene la ventaja de que en l se puede realizar
cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar.
Otro punto sera que los programas en ensamblador ocupan menos espacio en
memoria.
Hay que hacer notar la visible diferencia entre el trabajo realizado en los
distintos simuladores y el trabajo realizado en fsico, ya que durante los simuladores
no tendremos informaciones residuales en los procesadores o en los dems
integrantes del circuito y por ende al trabajar en fsico debemos prestar especial
atencin a cada detalle del circuito que desarrollamos.

You might also like