Вы находитесь на странице: 1из 28

PIC 16F877A

CONOCIMIENTOS BASICOS
INTRODUCCION A LOS MICROCONTROLADORES Breve Esbozo Histrico. La siguiente es una lista cronolgica de los eventos tecnolgicos ms recientes que han tenido impacto sobre la aparicin y el desarrollo del campo de los microcontroladores en la electrnica digital. 1971 Intel fabrica el primer microprocesador (el 4004) de tecnologa PMOS. Este era un microprocesador de 4 bits y fue fabricado por Intel a peticin de Datapoint Corporation con el objeto de sustituir la CPU de terminales inteligentes fabricadas en esa fecha por Datapoint mediante circuitera discreta. El dispositivo fabricado por Intel result 10 veces ms lento de lo requerido y Datapoint no lo compr, de esta manera Intel comenz a comercializarlo. El 4004 poda direccionar slo 4096 (4k) localidades de memoria de 4 bits, reconoca 45 instrucciones y poda ejecutar una instruccin en 20 seg en promedio. Las aplicaciones del 4004 estaban muy limitadas por su reducida capacidad y rpidamente Intel desarroll una versin ms poderosa (el 8008), el cual poda manipular bytes completos, por lo cual fue un microprocesador de 8 bits. La memoria que este poda manejar se increment a 16 kbytes, sin embargo, la velocidad de operacin continu igual. Intel lanza al mercado el 8080 el primer microprocesador de tecnologa NMOS, lo cual permite superar la velocidad de su predecesor (el 8008) por un factor de diez, es decir, el 8080 puede realizar 500 000 operaciones por segundo, adems se increment la capacidad de direccionamiento de memoria a 64 kbytes. A partir del 8080 de Intel se produjo una revolucin en el diseo de microomputadoras y varias compaas fabricantes de circuitos integrados comenzaron a producir microprocesadores. Algunos ejemplos de los primeros microprocesadores son: el IMP-4 y el SC/MP de National Semiconductors, el PPS-4 y PPS-8 de Rockwell International, el MC6800 de Motorola, el F-8 de Fairchild. Zilog lanza al mercado el Z80, uno de los microprocesadores de 8 bits ms poderosos. En ese mismo ao, Motorola abate dramticamente los costos con sus microprocesadores 6501 y 6502 (este ltimo adoptado por APPLE para su primera microcomputadora personal). estos microprocesadores se comercializan en $20 y $25 (dls. USA) respectivamente. Esto provoca un auge en el mercado de microcomputadoras de uso domstico y un caos en la proliferacin de lenguajes, sistemas operativos y programas (ningn producto era compatible con el de otro fabricante).

1972

1973

1975

SISTEMAS DIGITALES II

PIC 16F877A
1976 Surgen las primeras microcomputadoras de un solo chip, que ms tarde se denominarn microcontroladores. Dos de los primeros microcontroladores, son el 8048 de Intel y el 6805R2 de Motorola. En la dcada de los 80's comienza la ruptura entre la evolucin tecnolgica de los microprocesadores y la de los microcontroladores, Ya que los primeros han ido incorporando cada vez ms y mejores capacidades para las aplicaciones en donde se requiere el manejo de grandes volmenes de informacin y por otro lado, los segundos han incorporado ms capacidades que les permiten la interaccin con el mundo fsico en tiempo real, adems de mejores desempeos en ambientes de tipo industrial. Esta ruptura se representa esquemticamente en la figura siguiente.

198X

Para clarificar un poco ms el campo de aplicaciones de un microprocesador y un microcontrolador, podemos recurrir a la siguiente figura, en donde se pretende representar el tipo de aplicaciones como un continuo desde el extremo de los sistemas que manejan grandes volmenes de informacin, hasta los que requieren una gran interaccin con el mundo fsico en tiempo real.

SISTEMAS DIGITALES II

PIC 16F877A
APLICACIONES DE LOS MICROCONTROLADORES. Las aplicaciones especficas de los microcontroladores son tan enormemente variadas que no se exagera cuando se dice que stas estn limitadas solamente por la imaginacin del diseador. En cualquier problema en el cual se requiera un instrumento digital compacto que sea capaz de realizar funciones como las siguientes, es posible pensar en sistema basado en un microcontrolador: Secuenciamiento, codificacin/decodificacin, monitoreo, adquisicin de datos, sealizacin, procesamiento de seales, control retroalimentado, temporizacin, clculos aritmticos sencillos, comunicaciones, automatizacin, despliegue digital, control on - off, etc. Instrumentos porttiles compactos: Radio paginador numrico (beeper) Planmetro electrnico Nivelmetro digital Identificador-probador de circuitos integrados Tacmetro digital Dispositivos perifricos: Modems Buffer para impresoras Plotters Posicionadores Dispositivos autnomos (stand alone): Fotocopiadoras Mquinas de escribir Selector, Codificador-decodificador de T.V. Localizador de peces Controlador de aspersores para riego de jardines Telfonos de tarjeta Subfunciones de instrumentos: Panel frontal de un osciloscopio Controlador de display de cristal lquido sensible al tacto Contador de microondas con interface HP-IB Multmetro multiplexado con interface serie a otro multmetro Analizador de espectros (mdulos de expansin para IR y RF comunicados va Interface serie) Aplicaciones automotrices: Control de encendido e inyeccin de combustible Sistemas de frenado Sistemas de navegacin Alarmas Otros: Telfonos celulares Cerraduras electrnicas Sistemas de seguridad

SISTEMAS DIGITALES II

PIC 16F877A
MICROCONTROLADOR PIC En s un microcontrolador es un circuito integrado programable, capaz de ejecutar las rdenes grabadas en su memoria. Est compuesto de varios bloques funcionales, los cuales cumplen una tarea especfica, sus partes o componentes principales son: Memoria ROM (Memoria de slo lectura) Memoria RAM (Memoria de acceso aleatorio) Lneas de entrada/salida (I/O) Tambin llamados puertos Lgica de control Coordina la interaccin entre los dems bloques

CIRCUITO DE RELOJ Indica al micro la velocidad a la que debe trabajar. Este circuito, que se conoce como oscilador o reloj, es muy simple pero de vital importancia para el buen funcionamiento del sistema, ya que sin l no podramos ejecutar las rdenes o las lneas de instruccin que se encuentran programadas en el mismo. Los diferentes tipos de cristal ms comunes para un microcontrolador PIC son: OSCILADOR CON RESISTENCIA Y CONDENSADOR (RC)

Cuando el oscilador externo se configura a funcionar en modo RC, el pin OSC1 debe estar conectado al circuito RC como se muestra en la figura. La seal de frecuencia del oscilador RC dividida por 4 est disponible en el pin OSC2. Esta seal se puede utilizar para la calibracin, sincronizacin o para otros propsitos. NOTA: Segn las recomendaciones de Microchip R puede tomar valores entre 5K 100K, y C superior a 20pf.

SISTEMAS DIGITALES II

PIC 16F877A
OSCILADOR EN MODO LP, XT O HS

Los modos LP, XT y HS utilizan un oscilador externo como una fuente de reloj cuya frecuencia est determinada por un cristal de cuarzo o por resonadores cermicos conectados a los pines OSC1 y OSC2. Dependiendo de las caractersticas de los componentes utilizados, seleccione uno de los siguientes modos: Modo LP - (Baja potencia) se utiliza slo para cristal de cuarzo de baja frecuencia. Este modo est destinado para trabajar con cristales de 32.768 KHz normalmente embebidos en los relojes de cristal. Es fcil de reconocerlos por sus dimensiones pequeas y una forma cilndrica. Al utilizar este modo el consumo de corriente ser menor que en los dems modos. Modo XT se utiliza para cristales de cuarzo de frecuencias intermedias hasta 8 MHz. El consumo de corriente es media en comparacin con los dems modos. Modo HS - (Alta velocidad) se utiliza para cristales de reloj de frecuencia ms alta de 8 MHz. Al utilizar este modo el consumo de corriente ser mayor que en los dems modos.

SISTEMAS DIGITALES II

PIC 16F877A
RESONADORES CERMICOS EN MODO XT O HS Los resonadores cermicos son similares a los cristales de cuarzo segn sus caractersticas, por lo que se conectan de la misma manera. A diferencia de los cristales de cuarzo, son ms baratos y los osciladores que hacen uso de ellos son de calidad ms baja. Se utilizan para las frecuencias de reloj entre 100 kHz y 20 MHz.

El microcontrolador como se ha visto anteriormente es un microcomputador, el cual necesita de perifricos de entrada y salida para su correcta utilizacin. Las entradas dependiendo de la aplicacin pueden ser: sensores, teclados, pulsadores, switch, etc. Las salidas igualmente dependiendo de la aplicacin pueden ser: leds, display, LCD, rels, computadoras, etc. MEMORIA DE PROGRAMA Esta vendra a ser la memoria de instrucciones, aqu es donde almacenaremos nuestro programa o cdigo que el micro debe ejecutar. No hay posibilidad de utilizar memorias externas de ampliacin. Memorias EEPROM. (Electrical Erasable Programmable Read Only Memory Memoria de slo lectura programable y borrable elctricamente).- sta rea se hace a travs de un circuito grabador y bajo el control de un PC. El nmero de veces que puede grabarse y borrarse una memoria EEPROM es aproximadamente 1000 veces. Memorias FLASH. Posee las mismas caractersticas que la EEPROM, pero sta tiene menor consumo de energa y mayor capacidad de almacenamiento, por ello est sustituyendo a la memoria EEPROM. NOTA: Cuando ocurre un Reset, el contador de programa (PC) apunta a la direccin 0000h, y el micro se inicia nuevamente. Por esta razn, en la primera direccin del programa se debe escribir todo lo relacionado con la direccin del mismo. Ahora, si ocurre una interrupcin el contador de programa (PC) apunta a la direccin 0004h, entonces ah escribiremos la programacin necesaria para atender dicha interrupcin.

SISTEMAS DIGITALES II

PIC 16F877A
MEMORIA DE DATOS Posee dos zonas distintas 1. RAM esttica o SRAM: Donde residen los Registros Especficos (SFR) y los Registros de Propsito General (GPR) 2. EEPROM: Donde opcionalmente, se pueden almacenar datos que no se pierden al desconectar la alimentacin.

CICLO MAQUINA

Un ciclo mquina es el tiempo mnimo que se tarda en ejecutar una instruccin. Cada ciclo de mquina la CPU lee la instruccin guardada en la memoria de programa apuntada por PC y al mismo tiempo ejecuta la instruccin anterior, esto es debido a una cola de instrucciones que le permite ejecutar una instruccin mientras lee la prxima: Cada ciclo mquina (Tcy = 4Tosc) se compone a su vez de cuatro ciclos del oscilador (Tosc=1/Fosc). Cada ciclo Q provee la sincronizacin para los siguientes eventos: - Q1: Decodificacin de la instruccin - Q2: Lectura del dato (si lo hay) - Q3: Procesa el dato - Q4: Escribe el dato

SISTEMAS DIGITALES II

PIC 16F877A
Debido a esto cada ciclo de instruccin consume 4 ciclos de reloj, de manera que si la frecuencia de oscilacin es Fosc, Tcy ser 4/Fosc.

Cmo se realiza el ciclo mquina? El oscilador o cristal genera pulsos, cada uno de los cuales se les llama cuadratura Q1, Q2, Q3 y Q4. Toda instruccin tiene asociada dos procesos uno de bsqueda y otro de ejecucin, cada uno de ellos ocupa un ciclo de instruccin. La primera tarea que se lleva a cabo es la bsqueda, internamente el contador de programa se incrementa en Q1. La bsqueda de la siguiente instruccin se lleva a cabo en Q4. La instruccin es ejecutada en el siguiente ciclo de instruccin como lo muestra el diagrama. Tambin debemos notar que los procedimientos de bsqueda y ejecucin de una misma instruccin son secuenciales ms son paralelos para diferentes instrucciones, es decir que mientras se ejecuta una instruccin la ALU ya est buscando la siguiente; por tanto se asume que el tiempo de ejecucin de una instruccin es un ciclo de instruccin salvo que sea una instruccin de salto o bifurcacin en cuyo caso el tiempo es de dos ciclos de instruccin dado que el procesador no sabe hacia dnde va a saltar lo normal es introducir un ciclo muerto a fin que evale la condicin necesaria y recin proceda a saltar.

SISTEMAS DIGITALES II

PIC 16F877A
MICROCONTROLADOR PIC 16F877A
Posee 8Kb de memoria ROM (una memoria de programa de 8192 Words), Memoria de datos EEPROM de 256 bytes, memoria RAM de 368 bytes y 33 pines de entrada y salida, los cuales se dividen en:
Puerto A trabaja a 6 bits Puerto B trabaja a 8 bits Puerto C trabaja a 8 bits Puerto D trabaja a 3 bits

Adems de ello posee Conversores Analgico-Digital A/D, una de las principales diferencias frente a otros PIC es la capacidad que posee, y por esta razn es el ms utilizado en proyectos avanzados que requieren mayor nmero de entradas y/o salidas, como automatizacin de procesos industriales, alarmas residenciales, etc. Una desventaja es que debe ser conectado con un cristal externo y necesita en el Master Clear una resistencia Pull-Up, ya que no hay forma de deshabilitar esta opcin.

SISTEMAS DIGITALES II

PIC 16F877A
DISTRIBUCIN DE PINES

SISTEMAS DIGITALES II

10

PIC 16F877A

TEMPORIZADORES
En muchas aplicaciones el microcontrolador debe trabajar con la variable tiempo. Por ejemplo, para generar seales de una determinada frecuencia, para medir la duracin de una seal, etc. El microcontrolador necesita algn recurso para contar el tiempo con precisin. En los microcontroladores PIC de clase media hay tres mdulos bsicos para temporizar, que se identifican con los nombres Timer0, Timer1 y Timer2. Todos los PIC disponen al menos el Timer0. Algunos PIC tienen uno o dos mdulos adicionales para temporizar, que amplan las posibilidades de los mdulos bsicos. Son los denominados mdulos de Comparacin, Captura y Modulacin por Anchura de Pulsos, o mdulos CCP (Capture/Compare/PWM), que comparten componentes y funciones con el Timer1 y el Timer2. En esta parte del informe se estudia la estructura, funcionamiento y programacin del TIMER1 y TIMER2.

Los temporizadores en los microcontroladores PIC


Cada uno de los temporizadores disponibles en un PIC de clase media tiene, como elemento esencial, un contador sincrnico ascendente de 8 o 16 bits. Estos contadores se pueden programar para contar pulsos internos o externos, segn se expondr ms adelante al estudiar cada temporizador por separado. Los temporizadores pueden disponer de un contador asincrnico auxiliar. Este contador auxiliar se inserta en el camino de los pulsos, antes del contador principal, en cuyo caso funciona como un pre-divisor (pre-escaler) o despus del contador principal, funcionando como post-divisor (post-escaler). El temporizador Timer1 tiene solo un pre-divisor; el Timer2 en cambio, dispone de un pre-divisor y un post-divisor.

Pre-escaler
Un pre-escaler es un circuito que reduce la frecuencia que ingresa a un temporizador/contador dividindola para un determinado valor. Por ejemplo: si la relacin es 1:4, el pre-escaler entrega una frecuencia igual a la cuarta parte de la frecuencia del oscilador.

Pre-escaler actuando como divisor de frecuencia


SISTEMAS DIGITALES II

11

PIC 16F877A
En la siguiente tabla se resumen las principales caractersticas de los mdulos estudiados: Mdulo Caractersticas TMR1 es un Contador/Temporizador de 16 bits Leble y escribible Reloj interno o externo Solicitud de interrupcin opcional en el desbordamiento (de FFFFh a 0000h) Reinicializacin opcional desde los mdulos CCP TMR2 es un Contador/Temporizador de 8 bits Dispone de un registro de periodo de 8 bits (PR2) Leble y escribible Pre y post-escalador programable Solicitud de interrupcin opcional al coincidir TMR2 y PR2 Posibilidad de generar impulsos al mdulo SSP (puerto serie sncrono)

TMR1

TMR2

El TMR1 es un Temporizador/Contador con un tamao de 16 bits, lo que requiere el uso de dos registros concatenados de 8 bits (TMR1H (0Fh) y TMR1L (0Eh)), estos dos registros son tanto lebles como escribibles. Al par de registros TMR1H:TMR1L los denominaremos por comodidad como si fueran un solo registro de 16 bits (TMR1). TMR1H: TMR1L, son los encargados de guardar el valor del contaje en cada momento. Dicho valor evoluciona desde 0000h hasta FFFFh. Momento en el cual se activa el sealizador TMR1IF y se regresa al valor inicial 0000h. El valor contenido en TMR1H: TMR1L puede ser ledo o escrito y los impulsos de reloj que originan el contaje ascendente pueden provenir del exterior o de la frecuencia de funcionamiento del microcontrolador (Fosc/4)

El Timer1 tiene tres formas de funcionamiento: Temporizador Contador Sncrono Contador Asncrono Como Temporizador el valor concatenado TMR1H: TMR1L se incrementa con cada ciclo de instruccin (Fosc/4). En el modo contador, el incremento se puede producir
SISTEMAS DIGITALES II

12

PIC 16F877A
con los flancos ascendentes de un reloj externo, cuya entrada se aplica a las lneas RC0 y RC1 de la puerta C, o por impulsos aplicados en la lnea RC0. Otras caractersticas El Timer1 tambin posee un bit para habilitacin / deshabilitacin, este es el bit TMR1ON (T1CON<0>) y habilita en alto. Adems, el Timer 1 posee una entrada interna de RESET, el cual puede ser activado por uno cualquiera de los mdulos CCP. A continuacin se describe el principal registro del Timer1

bit 7-6 Bits no implementados. Ledo como 0 bit 5-4 T1CKPS1:T1CKPS0: Bits de seleccin del valor del divisor de frecuencia del pre escalador: 11 = 1:8 Valor de Pre-escaler o divisor 1/8 10 = 1:4 Valor de Pre-escaler o divisor 1/4 01 = 1:2 Valor de Pre-escaler o divisor 1/2 00 = 1:1 Valor de Pre-escaler o divisor 1/1 bit 3 T1OSCEN: Control de habilitacin para el oscilador del Timer1 1 = El Oscilador es habilitado (RC0 y RC1 = entradas del oscilador externo) 0 = El oscilador trabaja en otro modo (RC0 = entrada del oscilador externo) bit 2 T1SYNC: Determina la posible sincronizacin o no de los impulsos del reloj externo con los del reloj interno. 1 = No sincronizacin con un reloj externo 0 = Sincronizacin con un reloj externo TMR1CS = 0 Este bit es ignorado cuando el Timer1 usa el reloj interno bit 1 TMR1CS: Selecciona la fuente de los impulsos de contaje 1 = Reloj externo. Modo contador (fuente de reloj desde la patita RC0/T1OSO/T1CKI) 0 = Reloj interno. Modo Temporizador (fuente de reloj Fosc/4)
SISTEMAS DIGITALES II

13

PIC 16F877A
bit 0 TMR1ON: Gobierna el permiso o la prohibicin de funcionamiento del Timer1. 1 = Habilitar el Timer1 0 = Detener el Timer1

a) Timer1 en modo Temporizador Para seleccionar este modo, es necesario poner a 0 el bit TMR1CS. Despus de eso, el registro de 16 bits ser incrementado con cada pulso generado por el oscilador interno. En este modo la entrada de reloj al timer es Fosc/4. El bit T1SYNC no afecta al temporizador porque cuenta los pulsos de reloj interno; es siempre sncrono.

b) Timer1 en modo Contador Sncrono El temporizador Timer1 se pone a funcionar como un contador al poner a 1 el bit TMR1CS. En este modo el timer incrementa cada flanco de subida de una entrada de reloj externo en el pin RC1, cuando el bit T1OSCEN es puesto a 1; o cuando una entrada de reloj ingresa por el pin RC0, cuando el bit T1OSCEN es puesto a 0. Si el bit de control T1SYNC del registro T1CON se pone a 0, las entradas del reloj externo se sincronizarn en su camino al temporizador Timer1. En otras palabras, el temporizador Timer1 se sincroniza con el reloj interno del microcontrolador y se le denomina contador sncrono. Al poner en modo de reposo el microcontrolador que funciona de esta manera, los registros del temporizador Timer1H y TMR1L no sern incrementados aunque los pulsos de reloj aparezcan en los pines de entrada. Como el reloj interno del microcontrolador no funciona en este modo, no hay entradas de reloj que se utilicen
SISTEMAS DIGITALES II

14

PIC 16F877A
para la sincronizacin. De todas formas, el pre-escalador sigue funcionando siempre que haya pulsos de reloj en los pines, porque es un simple divisor de frecuencias.

c) Timer1 en modo Contador Asncrono Si el bit T1SYNC (T1CON<2>) es puesto a1, el reloj externo no es sincronizado. El timer contina un incremento asncrono a la fase del reloj interno. El timer continuar funcionando durante el modo SLEEP y podr generar una interrupcin de desborde; el cual podra despertar al procesador del modo SLEEP. Lectura y escritura del Timer1 en modo contador Asncrono Leer los registros TMR1H TMR1L mientras el timer est corriendo desde un reloj asncrono externo garantizar una lectura vlida (tener cuidado con el hardware). Sin embargo el usuario tendr en mente que leer 16 bits del timer en 2 registros de 8 bits puede causar molestia si el timer desborda mientras se produce la lectura. Para escribir es recomendable que el usuario detenga el timer y escriba recin los valores deseados.

OSCILADOR DEL TEMPORIZADOR TIMER1 Los pines RC0/T1OSO y RC1/T1OSI se utilizan para registrar los pulsos que vienen de los dispositivos perifricos, pero tambin tienen una funcin adicional. Como se puede ver en la siguiente figura, se configuran simultneamente como entrada (pin RC1) y salida (pin RC0) del oscilador de cuarzo LP (Low Power - de bajo consumo) adicional. Este circuito est principalmente diseado para funcionar a bajas frecuencias (hasta 200 KHz), exactamente para el uso de cristal de cuarzo de 32.768 KHz. Este cristal se utiliza en los relojes de cristal puesto que es fcil de obtener un pulso de duracin de un segundo al dividir esta frecuencia. Como el oscilador no depende del reloj interno, puede funcionar incluso en el modo de reposo. Se habilita al poner a uno el bit de control T1OSCEN del registro T1CON. El usuario debe proporcionar tiempo muerto por medio de software (unos pocos milisegundos) para habilitar que el oscilador se inicie apropiadamente.

SISTEMAS DIGITALES II

15

PIC 16F877A

La siguiente tabla muestra los valores recomendados de los capacitores convenientes con el oscilador de cuarzo. No es necesario que estos valores sean exactos. De todas formas, la regla general es: cunto ms alta sea la capacidad, tanto ms alta ser la estabilidad, lo que a la vez prolonga el tiempo necesario para la estabilizacin del oscilador.

Ejemplo.- Manejo del Timer1 como temporizador. A continuacin se describe un programa en el cual se utiliza el Timer1 para realizar una pausa de mxima duracin, la cual se intercala en el encendido / apagado de un LED conectado a la patita RC0, es decir, el LED parpadear a la frecuencia F que se puede calcular como sigue: F = 1/(TH+TL) En donde TH es el tiempo de encendido y TL es el tiempo de apagado del LED. Como en el ejemplo son iguales, usaremos slo T = TH = TL, por lo tanto F = 1/(2T) Para calcular T con una frecuencia de reloj Fosc dada y un valor del pre-escalador 1/M, para un ciclo de N incrementos del registro TMR1 tendremos que la duracin (Tciclo) del ciclo ser T = Tciclo = N*M*(4/Fosc) As, para una duracin mxima M = 8, N = 65536 tendremos: TMAX = 2, 097,152/Fosc

SISTEMAS DIGITALES II

16

PIC 16F877A
Para un reloj de 14.7456 Mhz tendremos TMAX = 142.222... mseg Y por lo tanto la frecuencia de parpadeo del LED ser F = 3.515625 Hertz Este programa hace parpadear un LED conectado a la patita RC0. Usa el timer1 para generar una pausa de 142.222. mseg de duracin (supone un cristal de 14.7456 Mhz). La frecuencia de parpadeo del LED es de 3.515625 Hertz aprox. Include "p16f877.inc" org 0x0000 inic BSF STATUS,RP0 BCF TRISC, 0 BCF STATUS,RP0 rep BSF PORTC,0 CALL pausa BCF PORTC,0 CALL pausa GOTO rep Subrutina de pausa de 71.111 mseg N1 N0 EQU 0x00 EQU 0x00 ;nmero de incrementos del timer msb ;inicializa la cuenta de TMR1 ;nmero de incrementos del timer lsb ;inicializa la cuenta de TMR1 ;limpia bandera de sobreflujo ;dato de configuracin para el timer1 ;modo temporizador, preescalador 1/8, habilita timer1 ;Banco1 ;patita RC0 como salida ;Banco 0 ;enciende LED ;pausa de 71.11 mseg ;apaga LED ;pausa de 71.11 mseg

pausa MOVLW N1 MOVWF TMR1H MOVLW N0 MOVWF TMR1L BCF PIR1,TMR1IF MOVLW 0x31 MOVWF T1CON

SISTEMAS DIGITALES II

17

PIC 16F877A
ciclo BTFSS PIR1,TMR1IF GOTO ciclo BCF PIR1,TMR1IF RETURN end ;checa bandera de sobreflujo (cuenta=65536) ;si no se ha activado, espera ;si ya se activ, la desactiva ;retorna

El Timer2 es un temporizador (sin opcin de trabajar como contador) de 8 bits. Su registro principal denominado TMR2 (11h) es un registro de 8 bits que se incrementa continuamente a la frecuencia seleccionada de Fosc/4 dividida por un pre-escalador. En la siguiente figura se muestra un diagrama de bloques del mdulo del Timer2.

El pre-escalador
Los pulsos que vienen del oscilador de cuarzo primero pasan por el pre-escalador cuyo valor puede ser modificado al combinar los bits T2CKPS1 y T2CKPS0 (T2CON<1:0>) por un factor de 1/1, 1/4 o 1/16.

El Registro de comparacin o de Periodo


En operacin, el contenido del registro TMR2 se compara continuamente con un registro de periodo denominado PR2 (92h) cuyo valor podemos establecer por software. Cada vez que la cuenta de TMR2 es igual a PR2, se reinicia el conteo en TMR2 desde cero, y adems se genera una seal de salida, la cual es tratada por un post-escalador,
SISTEMAS DIGITALES II

18

PIC 16F877A
para poder generar una seal TMR2IF (PIR1<1>) que puede ser usada para solicitar una interrupcin.

El Post-escalador
El post-escalador divide la frecuencia con que ocurre una activacin de la bandera TMR2IF, es decir, si el valor del post-escalador es 1/1, esta bandera se activar cada vez que TMR2 se reinicie, en cambio, si es 1/16 (por ejemplo), TMR2IF se activar cada 16 reinicios de TMR2. En forma similar a los otros dos Timers, esta bandera debe ser limpiada previamente, si se quiere detectar su activacin, esto puede ser hecho en la rutina de atencin a la interrupcin. El valor de divisin del post-escalador puede establecerse por software mediante los bits T2OUPS3:T2OUPS0 (T2CON<6:3>).

A continuacin se describe el principal registro del Timer1

bits 6-3 T2OUPS3:T2OUPS0: Bits de seleccin del valor del divisor de frecuencia del post-escalador, de acuerdo a la siguiente tabla: 0 0 0 0 = divisor 1/1 0 0 0 1 = divisor 1/2 0 0 1 0 = divisor 1/3 1 1 1 1 = divisor 1/116 Observacin: La cuenta interna del post-escalador y el pre-escalador es limpiada cuando ocurre cualquiera de los siguientes eventos: Una escritura a alguno de los registros TMR2 o T2CON o bien, un Reset del sistema de cualquier tipo (POR, MCLR, WDT, o BOR).

bit 2 TMR2ON: Bit de encendido del Timer2 1 = Enciende (energiza) el Timer2 0 = Apaga (desconecta) el Timer2

SISTEMAS DIGITALES II

19

PIC 16F877A
bits 1-0 T2CKPS1:T2CKPS0: Bits de configuracin del valor del pre-escalador de acuerdo a la siguiente tabla: 0 0 = divisor 1/1 0 1 = divisor 1/4 1 x = divisor 1/16

Ejemplo.- Manejo del Timer2 como temporizador. Cul es la mxima duracin de una pausa realizada mediante el Timer2, usando el mismo esquema de los ejemplos 15 y 16 de dejar pasar el tiempo transcurrido en una sola activacin de TMR2IF?. Solucin Sea T la duracin de la pausa, con una frecuencia de reloj Fosc dada, un valor del preescalador 1/M, y un valor del post-escalador 1/P. Para un ciclo de N incrementos del registro TMR2, es decir, para un valor de N del registro de periodo PR2, tendremos que la duracin de la pausa dada por T = N*M*P*(4/Fosc) As, para una duracin mxima P = M = 16, N = 256 tendremos: TMAX = 262144/Fosc Para un reloj de 14.7456 Mhz tendremos TMAX = 17.777... mseg

SISTEMAS DIGITALES II

20

PIC 16F877A

CONVERSOR A/D
Descripcin General del Conversor Analgico Digital (ADC) Introduccin
Un convertidor anlogo digital tiene como entrada un nivel de voltaje (valor analgico) y produce en su salida un nmero binario de n bits proporcionales al nivel de la entrada (valor digital).

Descripcin General
El convertidor Anlogo Digital (A/D) del PIC 16F877A tiene 8 canales de entrada. La conversin de la seal analgica aplicada (a uno de los canales) se plasma en nmero binario de 10 dgitos. El mdulo A/D posee voltajes de referencia que pueden ser seleccionados para emplear las tensiones VDD, VSS del microcontrolador o puede emplear tensiones aplicadas a los pines RA2 o RA3 (incluso es posible establecer combinaciones de los anteriores valores).

El multiplexor.- El ADC es un convertidor de aproximaciones sucesivas de 10 bits, el cual puede realizar la conversin de una de las 8 entradas (o canales) analgicas AN0,..., AN7 multiplexadas por la lgica interna que utiliza como lneas de seleccin del canal los bits CHS2:CHS0, en donde se coloca el nmero en binario del canal a convertir.
SISTEMAS DIGITALES II

21

PIC 16F877A
Voltajes de Referencia.- Todo convertidor ADC requiere voltajes de referencia que determinan el valor de mnima escala (VREF-) y el de plena escala (VREF+), de manera que la conversin de un valor de voltaje analgico Vin en el rango de VREF- a VREF+ producir un valor equivalente binario D en el rango de 0 a 2n. Donde n es la resolucin del convertidor (n = 10). Como la relacin entre escalas es lineal, una regla de tres nos da la relacin entre el voltaje analgico de entrada (Vin) y el valor digital (D) obtenido por el ADC

Con la eleccin ms comn: VREF+ = VDD = 5v, VREF- = VSS= 0v, y como n=10, obtenemos:

De donde se ve que cuando Vin vara en todo su rango, desde 0 hasta 5v, el valor obtenido D vara tambin en todo su rango, de 0 a 1023. Si a la inversa, obtenemos un valor D y deseamos saber que voltaje representa, basta con despejar:

El proceso de Conversin Analgico/Digital


En el siguiente diagrama de tiempo se muestran los eventos que tienen lugar durante el proceso de una conversin analgico / digital.

De acuerdo a la figura, para echar a andar el convertidor se debern seguir los siguientes pasos:

SISTEMAS DIGITALES II

22

PIC 16F877A
1) Configurar el mdulo A/D:
Configurar los pines analgicos y los Voltajes de referencia VREF- y VREF+, mediante el registro ADCON1 (9Fh) (y los correspondientes bits TRIS como entradas) Seleccionar el canal de entrada a convertir mediante los bits CHS2:CHS0 del registro ADCON0 (1Fh) Seleccionar el reloj de conversin mediante los bits ADCS1:ADCS2 (ADCON0<7:6>) Poner a funcionar el mdulo A/D (en el registro ADCON0)

2) Esperar mientras transcurre el tiempo de adquisicin (unos 20 seg) 3) Iniciar la conversin poniendo el bit GO/DONE = 1 lgico (ADCON0<2>) 4) Esperar a que la conversin se complete. Para saber si la conversin termin podemos: Revisar el bit GO/DONE esperando que sea de nuevo 0 lgico (limpiado) O esperar al flag ADIF que sea 1 lgico (activo) 5) Leer el resultado del A/D en el par de registros (ADRESH:ADRESL) 6) Para la siguiente conversin, esperar al menos 2TAD (Donde TAD es el tiempo de conversin por bit).

Los Registros de Control


A continuacin se presenta un resumen de los registros relacionados con la operacin del convertidor: Registro ADCON0 (1Fh)

bits 7-6 ADCS1:ADCS0: Seleccin de reloj de acuerdo a la siguiente tabla:

* El oscilador RC interno del convertidor tiene un TAD tpico de 4 seg, sin embargo, puede variar entre 2 y 6 seg.. Este reloj es recomendable para operacin en modo SLEEP, ya que este modo desconecta la frecuencia del reloj externo.

SISTEMAS DIGITALES II

23

PIC 16F877A
* Precaucin: El convertidor A/D no trabajar correctamente con un TAD menor que TAD(mnimo)= 1.6seg. El usuario deber cuidar la eleccin del reloj adecuado para no violar esta limitante. bits 5-3 CHS2:CHS0: Seleccin de canal analgico a convertir. Se selecciona uno de los ocho canales AN0,...,AN7 colocando en estos tres bits el nmero binario correspondiente al canal deseado. (Los canales analgicos a usar debern tener sus bits TRIS correspondientes seleccionados como entradas). bit 2 GO/DONE: Bit de inicio y fin de conversin.- Con el convertidor encendido, poniendo este bit en 1 se inicia la conversin del canal seleccionado. Este bit permanece en 1 durante la conversin y es limpiado automticamente por el convertidor al terminar la conversin. bit 0 ADON: Encendido del convertidor. Al poner este bit en 1 el convertidor se enciende y al ponerlo en 0 se apaga y no consume corriente.

Registro ADCON1 (9Fh)

bit 7 ADFM: Seleccin de formato del resultado. Al ponerlo en 1 se selecciona resultado de 10 bits justificado a la derecha. Y con un 0 se selecciona justificacin a la izquierda. En la siguiente seccin se explica con mayor detalle. Bits 3-0 PCFG3:PCFG0: Bits de configuracin de las entradas del convertidor. Configuran las patitas de entrada del convertidor de acuerdo a la siguiente tabla, (en donde A = Entrada Analgica D = Entrada /Salida digital)

SISTEMAS DIGITALES II

24

PIC 16F877A
Nota: (2) Esta columna indica el nmero de canales analgicos de entrada disponibles y el nmero de canales analgicos usados como entradas de voltaje de referencia. Los Registros de Resultados El par de registros ADRESH:ADRESL (1Eh:9Eh) son cargados con el dato (D) resultante de una conversin analgico / digital al terminar sta. Cada uno de estos registros es de 8 bits, por lo tanto, juntos pueden guardar hasta 16 bits. Sin embargo, como el resultado D es de 10 bits, el mdulo de conversin A/D permite justificarlo (alinearlo) en la parte izquierda o derecha de los 16 bits disponibles, para elegir alguna de las dos opciones se usa el bit ADFM (ADCON1<7>) como se muestra en la figura siguiente

SISTEMAS DIGITALES II

25

PIC 16F877A

MEMORIA EEPROM
La EEPROM es un segmento de memoria separado, que no pertenece a la memoria de programa (ROM), tampoco a la memoria de datos (RAM). Los datos almacenados en la EEMPROM estn permanentemente guardados incluso al apagar la fuente de alimentacin, y pueden ser cambiados en cualquier momento. Para operar este bloque de memoria se dispone de los siguientes registros funciones especiales (SFR): EECON1 EECON2 EEDATA EEDATH EEADR EEADRH El registro EECON1 Registro que contiene los bits de control del proceso de lectura o escritura

En este se encuentra el bit EEPGD que indica si el trabajo a realizar se lleva sobre la memoria de datos o sobre la memoria de programa. Cuando es colocado a cero las operaciones sern sobre la EEPROM (memoria de datos) Los bits WR y RD del registro sirven para controlar y revisar el estado de las operaciones de escritura y lectura respectivamente. Para iniciar cualquier de esas operaciones se coloca a 1-lgico el bit de la operacin. Cuando se ha completado un ciclo de lectura o escritura los bits se colocan a 0-lgico nuevamente. Por software solo se puede colocar a 1-lgico. El bit WREN (write enable) se coloca a 1 para habilitar la operacin de escritura esto para evitar escrituras espurias en el EEPROM. Cuando el micro-controlador es energizado el bit WREN permanece a 0-lgico. El bit WRERR que es una bandera que se activa a 1-lgico cuando se ha producido un error en la escritura de la EEPROM que puede deberse a un RESET

SISTEMAS DIGITALES II

26

PIC 16F877A
LECTURA DE LA MEMORIA EEPROM Para leer los datos de la memoria EEMPROM, siga los siguientes pasos: Paso 1: Escribir la direccin (00h - FFh) en el registro EEADR. Paso 2: Seleccionar el bloque de memoria EEPROM al poner a cero el bit EEPGD del registro EECON1. Paso 3: Poner a uno el bit RD del mismo registro para leer el contenido de la localidad. Paso 4: El dato se almacena en el registro EEDAT y est listo para su uso.

SISTEMAS DIGITALES II

27

PIC 16F877A ANEXOS


BANCOS Y REGISTROS DEL PIC 16F877A

SISTEMAS DIGITALES II

28

Вам также может понравиться