Está en la página 1de 11

EL MICROCONTROLADOR 16F84

JAIME ANDRES MONTOYA ESPINOSA COD: 083201622012 DANIEL ANDRES AGUIAR COD: 083200822012 JEYSON ORLANDO PINEA COD: 083251562011

PRESENTADO A: ING.IVAN BLANCO

UNIVERSIDAD DEL TOLIMA FACULTAD INGENIERIA DE SISTEMAS IBAGUE 2013

EL MICROCONTROLADOR 16F84

JAIME ANDRES MONTOYA ESPINOSA DANIEL ANDRES AGUIAR JEYSON PINEDA

UNIVERSIDAD DEL TOLIMA FACULTAD INGENIERIA DE SISTEMAS IBAGUE 2013

TABLA DE CONTENIDO

1. Introduccion 2. Objetivos 3. Marco teorico 4. Concluciones 5. Bibliografia

1. INTRODUCCION

En este informe se realizo la investigacin sobre el microcontrolador 16f84, uno de los microcontroladores mas usados, se ve reflejado aqu la importancia de dicho microcontrolador, como tambin las instrucciones que ejecutan, las operaciones y los distintos usos que se tienen en el.

OBJETIVOS

1. OBJETIVO GENERAL

SUBRUTINAS

Subrutinas con temporizadores


Timer - Contador TMR0 El registro TMR0 puede contar ciclos de instruccin interna o pulsos de entrada por RA4 segn el valor del bit 5 del registro OPTION ( TOCS ). Si este bit est a "1" TMR0 cuenta pulsos por RA4 y se le llama Contador; si el bitest a "0" cuenta ciclos de instruccin interna y se le llama Timer. Cada ciclo de instruccin dura 4 veces el ciclo del reloj del pic (para un reloj de 4MHz ==> Ciclo reloj=0,25 Seg ==> Ciclo instruccin = 4 X 0,25 = 1Seg) Cuando lo usamos como contador (Por RA4) podemos determinar si el incremento se har por flanco ascendente o descendente con el bit 4 del registro OPTION ( TOSE ) Podemos leer o escribir el registro TMR0 en cualquier momento. Cuando escribamos en l deja de contar durante dos ciclos, cuando lo leamos no pasa nada. Podemos asignar el prescaler al TMR0 , si hacemos esto podemos elegir el factor en el que se ver dividido el conteo mediante los bits del 0 al 2 del registro OPTION segn la tabla del factor de divisin . Por ejemplo, si elegimos un factor de divisin de 1/2 tienen que entrar 2 pulsos para que TMR0 se incremente en uno, si est a 1/4 tienen que entrar 4... etc. Tambin podemos utilizar la interrupcin que se produce cuando se desborda el TMR0 , es decir, cuando pasa de FFh a 00h. (se configura desde el registro INTCON ) Temporizador de encendido (Power-up Timer) Este proporciona un RESET al microcontrolador en el momento de conectar la fuente de alimentacin, lo que garantiza un arranque correcto del sistema. En el momento de grabar el micro controlador se debe habilitar el fusible de configuracin "Power-up Timer", para ello se debe seleccionar "ON". Su tiempo de retardo es de 72 milisegundos.

Subrutinas inicializadoras de puertos


EL PUERTO A Y EL REGISTRO TRISA Las entradas y salidas del Puerto A son configuradas usando el registro TrisA, en el cual 1 equivale a entrada y 0 a salida. en la siguiente figura se observa como inicializar el Puerto A.

Cada instruccin juega su parte, las primeras dos "limpian" los bit RP0 y RP1 del Status para trabajar con el Banco 0, en ese banco esta el registro PortA, el cual limpiamos en su totalidad para que tenga solo 0's en su salida. Despus se selecciona el Banco 1 poniendo a 1 el RP0 pues es ah donde se encuentran el ADCON1 y el TrisA, a los cuales les mandamos bits de configuracin determinados por las palabras 06h y CFh respectivamente; en la primera se est indicando que todos los pines del puerto A sern entradas o salidas digitales, la segunda indica que todos los pines seran entradas (00011111). EL PUERTO B Y EL REGISTRO TRISB Al igual que todos los puertos el registro TrisB configura la entrada-salida del Puerto. El Puerto B es de 8 bit que adems tiene la opcin seleccionable de Pull-Up, las cuales son resistencias internas que permiten al micro poner en uno cada uno de los pines cuando estn desconectados en lugar de estar fluctuando entre cero y uno, esta caracterstica es muy importante como se ver luego. Interrupt-On-Change es una caracterstica de los pines RB7:RB4 que como su nombre lo indica, produce una interrupcin de programa cuando cambia su valor que puede an levantar al micro de un Sleep. EL PUERTO C Y EL REGISTRO TRISC El Puerto C tiene varias funciones en sus pines, tiene las funciones de comunicacin I2C, el reloj externo del timer 1, Usart, etc. Cuando se usan los mdulos relacionados con este puerto, se debe tener cuidado pues algunas veces cambia el estado i/o del pin sin importar lo que indique TrisC, para saber cundo si cambiaria debemos ver la descripcin de cada mdulo. EL PUERTO D Y EL REGISTRO TRISD

El puerto D es de 8 bit, con entradas Schimtt Trigger, este puerto puede ser configurado como linea de datos para PSP Parallel Slave Port. EL PUERTO E Y EL REGISTRO TRISE El puerto E consiste en tres pines que bien pueden ser de I/O, o configurados para controlar el PSP, conteniendo las lneas bsicas como WR, RD, CS. Cuando se usa el modo PSP, el TrisE hace que el puerto E sea de entradas digitales, de la misma manera los pines no podrn funcionar como entradas anlogas.

Subrutina de retardo de tiempo con la instruccin DECFSZ Para calcular la duracin de una instruccin, se tiene consultar las tablas de instrucciones para ver el nmero de ciclos de mquina (CM) que dura, luego se multiplica por el tiempo que dura un ciclo (tcm) y en nmero de veces que se repite la instruccin (N); finalmente se suman los tiempos para obtener la duracin total de la subrutina (ts).

Los retardos consisten en que el PIC se quede enciclado durante un tiempo. Es decir, es necesario usar uno o varios contadores que debern ser decrementados, cuando dichos contadores lleguen a 0 habr concluido el retardo .Ejemplo con flujo-grama:

Observe en el diagrama anterior como a una variable CONTA_1 se le asigna un numero n, posteriormente esta variable se decrementa y se pregunta si ha llegado a 0, si no ha llegado a0 entonces se vuelve a decrementar, y asi sucesivamente hasta que llegue a 0 en cuyo caso esel FIN del retardo. El programa se quedo perdiendo el tiempo encilado dando vueltas n veces.Veamos la traduccin a ensamblador, para esto consideremos que n=100 .Inicio_retardo ;etiqueta para dar nombre al retardomovlw d100 ; W 100movwf CONTA_1 ; CONTA_1 Wdecfsz CONTA_1,F ; CONTA_1 CONTA_1 -1 y salta si ya llego a 0goto $.1 ;NO ha llegado a 0, entonces vuelve a decrementar------ -------;SI llego a 0 entonces FIN del retardo,sigue el programaObserve que tenemos una instruccin nueva decfsz , esta instruccin es equivalente a decir:

Decrementa el registro f y salta si ha llegado a 0 Es una instruccin muy til y sumamente utilizada principalmente en procesos que se repiten n numero de veces, tales como lo son los retardos.Muy bien, en este punto entendemos el concepto de un retardo por software, sin embargosurge una duda obvia e importante: Cmo calculo el tiempo que durar un retardo?Muy bien, observemos esta parte del cdigo ensamblador:decfsz CONTA_1,F ; CONTA_1 CONTA_1 -1 y salta si ya llego a 0goto $.1 ;NO ha llegado a 0, entonces vuelve a decrementarNtese que esta parte es la que se ejecuta n veces hasta que CONTA_1 llega a 0, asi que solodebemos saber cunto tardan en ejecutarse estas dos instrucciones, luego lo multiplicamospor n y el resultado es el tiempo que dura el retardo. La instruccin decfsz dura 1us y lainstruccin goto dura 2us , asi que entre ambas duran 3uS , asi pues el retardo durar:Retardo = 3uS x n si n= 100 entonces Retardo = 300uS http://es.scribd.com/doc/22583863/Generar-retardos-para-PIC-en-MPLAB

CONCLUSIONES

BIBLIOGRAFIA

http://www.unicrom.com/Tut_organizacion_memoria_PIC_16F84.asp http://electronica.webcindario.com/tutoriales/pic6.htm http://perso.wanadoo.es/pictob/micropic16f84_2.htm#registro_w

También podría gustarte