Sie sind auf Seite 1von 7

DIGITALES III PRCTICA No.

3 MANEJO DE PUERTOS DE UN PIC

YAMID ESPINEL LPEZ 2420081023 PEDRO ANTONIO MORA 2420081025

DOCENTE: ING. MIGUEL NGEL MONTILLA

UNIVERSIDAD DE IBAGU 2010

INICIO DIAGRAMA DE FLUJO:


STATUS,RP0 1 TRISC 0 TRISD,0 0 TRISB 0FF OPTION_REG,7 0 STATUS,RP0 0

COMIENZO
STATUS,C 0 CLRF SAL W 0F W W AND PORTB CONT AUX CLRW W

CUADRADO
W CONT AUX +W CONT-1

NO
CONT = 0

MULTIPLICACIN

T W W 6

CONT W W T

AUX + W

NO
CARRY = 0 SAL 1

CONT CONT - 1

NO
CONT = 0

S
W W + 180 PORTC W

NO S
CARRY = 0 SAL 1

W SAL PORTD W

Objetivos de la prctica: Diferenciar entre puertos de entrada y salida en cuanto a su forma de asignacin y manejo. Afianzar conocimientos de programacin en el entorno de software MPLAB y del lenguaje ASSEMBLER. Aprender a programar y utilizar el sistema de desarrollo PIC de Microchip.

Para calcular el resultado de dicha ecuacin, se va a implementar un cdigo que realice los siguientes procesos: Primeramente, se asignarn el puerto C y un bit del puerto D como salida (ya que el resultado mximo es 495, el cual corresponde a un total de 9 bits). Seguidamente se asignar el puerto B como entrada y se tomarn los 4 primeros bits a travs de una mscara (entrada de dipswitch de 4 bits). Luego, el nmero ingresado por puerto B ser el contador que dir cuntas veces se debe sumar el nmero y a la vez la cifra que se va a sumar dicha cantidad de veces (esto se har decrementando el contador cada vez que se sume el nmero consigo mismo, devolvindose a sumar nuevamente hasta que sea cero). Cuando se sume tantas veces como diga el nmero por s mismo, se acumular en una variable auxiliar y el contador utilizado tomar el valor de 6 para poder sumar ese nmero de veces la cantidad ingresada por puerto B. Cada vez que sume el nmero se preguntar si existe un acarreo, ya que a partir de este punto es posible que la operacin vaya por encima de 256, a la cual le corresponden 9 bits a la salida. Si dicho acarreo existe se activar el Bit 9 (o bit cero del puerto D, en este caso). Luego se ir decrementando el contador, devolvindose a sumar hasta llegar a cero y se adicionar lo acumulado con el nmero 180 para cumplir con lo indicado en la ecuacin. Los primeros 8 bits del resultado se llevan a puerto C (salida) y se pregunta si hay acarreo en este punto para activar el Bit 9 si el nmero es de 9 bits. Finalmente, se vuelve a comenzar para permanecer al tanto si se realiza un cambio en el dipswitch de entrada (puerto B).

Diagrama de circuito implementado y simulaciones:

Elementos utilizados y clculos: o 2 capacitores de 15pF conectados en paralelo con 1 oscilador a cristal de 4MHz, para el oscilador externo del PIC. o 4 resistencias de 1K para enviar a tierra los pines de entrada cuando el dipswitch est abierto. o 9 resistencias de 220 para alimentar con 2,2V a los leds de salida y una corriente de 10mA. Las resistencias fueron calculadas de la siguiente manera: R = V / I = (2,2V) / (20mA) = 220 o 1 dipswitch de 6 pines, del cual se usan 4 para que funcionen como entrada en puerto B.

Observaciones de simulacin: o El sistema responde rpida y efectivamente a los cambios en la entrada. o Para una entrada 0000 en puerto B (como se observa en la imagen), se obtiene la salida 180 (02 + 6(0) + 180), la cual corresponde al nm binario 10110100, lo cual verifica el buen funcionamiento del sistema.

En cuanto al noveno bit, vemos que se cumple a cabalidad el criterio establecido en el programa de mantenerlo desactivado si el resultado es de 8 bits nicamente.

Observaciones de simulacin: o El sistema responde rpida y efectivamente a los cambios en la entrada. o Para una entrada 1111 en puerto B (como se observa en la imagen), se obtiene la salida 495 (152 + 6(15) + 180), la cual corresponde al nm binario 111101111, lo cual verifica el buen funcionamiento del sistema. o En cuanto al noveno bit, vemos que se cumple a cabalidad el criterio establecido en el programa de activarlo si el resultado es de 9 bits (a travs del acarreo generado en la suma).

Cdigo utilizado:
;****************************************************************************************** ;* ;* DESCRIPCIN DEL PROGRAMA * ;* * ;* * ;* ;* AUTORES: YAMID ESPINEL LPEZ, PEDRO ANTONIO MORA * ;* * ;* MICRO: PIC 16F877A ;* OSCILADOR: 4 MHz * ;* ;****************************************************************************************** ; ; *

* *

LIST p=16F877A #INCLUDE "p16F877A.inc" ; __CONFIG 3F71 ; ; ERRORLEVEL -302 ; ; ************* DECLARACIN DE VARIABLES ; CBLOCK 20 CONT,T,AUX,SAL ENDC ; ;EQU ; ; ******************** DEFINICIONES GENERALES ****************************** ; ; ;#DEFINE ;#DEFINE ;#DEFINE ; ; ________________________________________________________________________________________ ;| ;| DECLARACIN DE MACROS | ;|________________________________________________________________________________________| ;

*******************************

;----------------------------------------------------------------------------------------; ORG 00 ; VECTOR DE RESET GOTO INICIO ; ; ; ________________________________________________________________________________________ ;| ;| TABLAS Y PROCEDIMIENTOS | ;|________________________________________________________________________________________| ; ;

; ; ;****************************************************************************************** ;* * ;* PROGRAMA PRINCIPAL * ;* * ;****************************************************************************************** ; ; ; INICIO BSF STATUS,RP0 ;SELECCIN DEL BANCO UNO PARA ASIGNACIN DE ENTRADAS Y SALIDAS CLRF TRISC ;PUERTO C SALIDA BCF TRISD,0 ;SALIDA BIT 9 MOVLW 0FF ;MOVER OCHO UNOS MOVWF TRISB ; A TRISB PARA ASIGNARLO COMO ENTRADA BCF OPTION_REG,7 ;ACTIVAR RESISTENCIAS PULL-UP BCF STATUS,RP0 ;SELECCIN DEL BANCO CERO PARA MANEJO DE PUERTOS COMIENZO BCF STATUS,C ;BORRAR CARRY

CLRF MOVLW ANDWF MOVWF MOVWF CLRW CUADRADO

SAL ;BORRAR VARIABLE DE BIT 9 0F ;LLEVAR CUATRO UNOS PORTB,W ;A COMPARARLOS CON PUERTO B PARA OBTENER LOS 4 BITS MENOS SIGNIFICATIVOS (MSCARA) CONT ;ESTOS BITS SON EL DIPSWITCH CONTROLADO POR EL USUARIO, INFO. QUE ES LLEVADA A UN CONTADOR AUX ;LA INFO. DE PUERTO B. ES LLEVADA A UNA VARIABLE AUXILIAR ;BORRAR W PARA EMPEZAR LA SUMA

ADDWF AUX,W ;SUMA DE LA VARIABLE AUXILIAR CON W DECFSZ CONT,F ;DECREMENTO DEL CONTADOR DESDE EL NMERO INGRESADO HASTA CERO. SI NO ES CERO REPITE EL CICLO SEGN LAS VECES QUE DIGA PUERTO B (X*X) GOTO CUADRADO ;REPETIR EL CICLO SI CONTADOR NO ES CERO (SI NO HA SUMADO LAS VECES QUE DICE PUERTO B) MOVWF T ;LLEVAR EL ACUMULADO A UNA VARIABLE T MOVLW 6 ;LLEVAR EL NMERO SEIS MOVWF CONT ;A LA VARIABLE CONTADOR PARA HACER LA MULTIPLICACIN 6*X MOVFW T ;LLEVAR EL ACUMULADO DE NUEVO A W MULTIPLICACION ADDWF BTFSC BSF DECFSZ GOTO ADDLW MOVWF BTFSC BSF MOVFW MOVWF GOTO ; END

AUX,W ;SUMA DEL ACUMULADO CON LA INFO. DE PUERTO B STATUS,C ;VERIFICAR SI YA HAY UN CARRY EN LA OPERACIN REALIZADA SAL,0 ;SI EXISTE UN CARRY SE ACTIVA EL BIT 9 CONT ;DECREMENTO DEL CONTADOR DESDE SEIS HASTA CERO MULTIPLICACION ;SI EL CONTADOR NO ES CERO, REPETIR EL CICLO .180 ;SUMAR EL ACUMULADO CON 180 PORTC ;LLEVAR EL RESULTADO DE LOS PRIMEROS 8 BITS A PUERTO C STATUS,C ;VERIFICAR DE NUEVO SI EXISTE UN CARRY DESPUS DE HABER LLEVADO A CABO TODAS LAS OPERACIONES SAL,0 ;SI EXISTE ESE CARRY, ACTIVAR EL BIT 9 SAL ;LLEVAR EL BIT 9 PORTD ;A PUERTO D COMIENZO ;EMPEZAR DE NUEVO EL PROGRAMA PARA ESPERAR UNA NUEVA ENTRADA DE NMEROS

CONCLUSIONES 1. Para programar correctamente en PIC se debe tener en cuenta en qu posicin de memoria se encuentran cada uno de los registros especiales del sistema (como el acarreo, el bit Zero, los latch TRIS, entre otros) y definir claramente qu puertos sern salidas y cules sern entradas, teniendo como preferencia el asignar el puerto B como entrada gracias a sus resistencias internas de Pull-up. 2. Siempre es recomendable implementar el cdigo de forma que consuma menos memoria RAM, ms que todo para programas complejos donde la cantidad de memoria disponible es crucial para su funcionamiento. Esto quiere decir que existen varias formas de hacer una terea, unas ms eficientes que otras, lo cual indica a su vez que todo cdigo debe ser optimizado lo mejor posible para aprovechar al mximo las capacidades de memoria del sistema. 3. Para procesos comunes en la vida real se deben utilizar mtodos equivalentes que cumplan con las condiciones de este sistema (segn la ALU contenida en l), como es el caso de las comparaciones, la bsqueda de un bit por fuera de los normales (el bit 9 en este caso), algunas operaciones aritmticas, entre otros.

Das könnte Ihnen auch gefallen