Professional Documents
Culture Documents
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:
-
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.
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
;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.
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
Po = 0
No
S
Inicio
Fin
Llama a:
Ganaste
LED G ON
; 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
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
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.