Micro

18
Universidad de Carabobo Facultad de Ingeniería Escuela de Ingeniería Eléctrica Departamento de Sistemas y Automática Laboratorio de Microprocesadores PRACTICA N°1 MANIPULACION DE ENTRADAS Y SALIDAS DIGITALES

description

PPT micrp

Transcript of Micro

Universidad de CaraboboFacultad de IngenieraEscuela de Ingeniera ElctricaDepartamento de Sistemas y AutomticaLaboratorio de Microprocesadores

PRACTICA N1 MANIPULACION DE ENTRADAS Y SALIDAS DIGITALES

Elaborador por:Asuaje, JahikerBolletti, 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 MCLRb. 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 0

PORTC 0

PORTC CONTLED ONPo = 0CONT CONT + 1

No (Resultado)

S

FIN

CONT = 13

(Sigue) No

S

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 12list p=16F887#include ORG 0X00GOTO INICIOORG 0X05

CNT EQU 0X20 ;Contador

INICIO; ConfiguracionesBSF STATUS,RP0 ; Banco 1MOVLW b'00110000'; configuracin del puerto AMOVWF TRISA ; Entradas en los pines 4 y 5MOVLW b'00000000'; Configuracin del puerto CMOVWF TRISC ; Salidas en el puerto CBSF STATUS,RP1 ; Banco 3CLRF ANSEL ; Port A para seales digitalesCLRF ANSELH ; Port B para seales digitalesBCF STATUS,RP0BCF STATUS,RP1 ; Banco de operacion

InicializacinCLRF PORTC ; Puerto C a ceroCLRF PORTA ; Puerto A a ceroMOVLW .1 ;MOVWF CNT ; Contador en 1

CICLOBTFSS PORTA,5 ;Pregunta si "S" est en 1GOTO CICLO ;ir a cicloGOTO CONTAR ; comenzar cuenta

CONTARMOVF CNT,0 ; cargar el contador en WINCF CNT,1 ; Incrementar y guardar en CNTMOVLW .13 ; Cargar 13 en WSUBWF CNT,0 ; Restar con el nmero de contadorBTFSS STATUS,Z ; Evaluar el bit Z de STATUSGOTO DETENER ; Ir a DETENERGOTO RESET_CNT ; Resetear el Contador

RESET_CNTMOVLW .1 ; Cargar 1 en WMOVWF CNT ; Contador a 1

DETENER ; Evaluar el PulsadorPULSADOBTFSS PORTA,4GOTO CICLO ; Ir a CicloGOTO SUELTO ; Ir a Suelto

SUELTOBTFSC PORTA,4GOTO SUELTO ; Ir a SueltoGOTO MOSTRAR ; Ir a Mostrar

MOSTRARMOVF CNT,0 ;carga el contador en WMOVWF PORTC ; muestra el contador en PortCBSF PORTC,5 ;Enciende el LEDGOTO Inicializacin ; Ir a inicializacionGOTO CICLOEND

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

PORTC 0

S = 1

No

SCNT 0

LED L ON

CNT CNT + 1

CNT = .16

S

NoPo = 0

S

NoLED L OFF

PORTB WW ENTENT RLF(ENT) = 2*ENTC (Acarreo) 0

PORTC WW W + AUXAUX WW RLF (CNT)C (Acarreo) 0

CNT > ENT

No S

Llama a: PerdisteLED G OFF

Llama a: GanasteLED G ON

NoPo = 0

S Inicio

Fin

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 ORG 0X00 GOTO ConfigurarORG 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 ; Verifica si el pulsador est activo 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 ; El jugador gana BCF STATUS,C ; Se limpia el Carry BSF 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 simulacin con PROTEUSVent\Vcnt0123456789ABCDEF

1XPGGGGGGGGGGGGXX

3XPPPPPPGGGGGGGXX

4XPPPPPPPPGGGGGXX

6XPPPPPPPPPPPPGXX

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.