Your SlideShare is downloading. ×
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercante
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introducción pic 16 f 84 universidad de la marina mercante

2,295

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,295
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
97
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Universidad de la Marina MercanteIngeniería ElectrónicaTécnicas Digitales IIIntroducción a losMicrocontroladores PICÍndice:1. Objetivos.2. Material de Referencia.3. Los Microcontroladores PIC.Introducción a los Microcontroladores PIC1. ObjetivosFamiliarizarse con el uso de los microcontroladores PIC, su set de instrucciones,características, etc.Utilizar la herramienta de desarrollo MPLAB para realizar la edición, ensamblado,simulación y depuración del código.2. Material de referencia2 Microcontroladores PIC – La clave del Diseño. José Ma Angulo Usategui.AHojas de Datos del PIC16F84A (disponible en el Blog de la asignatura).3. Los Microcontroladores PIC.La familia de los PIC es muy amplia ya que dispone de la gama baja, media y alta ydentro de cada una de ellas tenemos muchos miembros. Utilizaremos unmicrocontrolador PIC muy popular por sus características y facilidad de programación, el PIC16F84 un miembro de la gama media.3.1 El PIC16F84El PIC 16F84 es el miembro más simple de la familia de los PICs y es el que utilizaremos paracomenzar nuestro estudio. Este microcontrolador posee memoria de programa tipo FLASH de1K de capacidad, Timer, interrupciones, líneas de E/S, etc.Veamos entonces las características más relevantes de este microcontrolador:VSolo 35 instrucciones para aprender.V1024 palabras de Memoria de Programa FLASH.VMemoria de Datos RAM de 68 bytes.VMemoria de Datos EEPROM de 64 bytes.VPila de 8 niveles para permitir llamadas a subrutinas anidadas.V4 fuentes distintas de interrupción.VVelocidad de operación desde DC hasta 20 MHz.VTemporizador/contador de 8 bits (TMR0) con prescaler.VPerro guardián (WDT).VPosee 13 líneas de E/S digitales, dos puertas (puerta A 5 líneas y puerta B 8 líneas).VCorriente máxima por pin: 25 mA modo sink, 20 mA modo source.VVoltaje de alimentación (VDD) debe estar entre 2 y 5.5 V DC.
  • 2. 10.000 ciclos de borrado/escritura en memoria FLASH. 10.000.000 ciclos de borrado/escritura en memoria EEPROM. Programación In Circuit a través de dos terminales (ICSP™). Protección de Código. Modo SLEEP para bajo consume.3.1.1 Encapsulado y distribución de terminales.Este dispositivo esta fabricado en tecnología CMOS. Se halla disponible en encapsuladoplástico con 18 pines, posee 13 pines de E/S, 2 pines para la alimentación (Vss y VDD), 1 pinpara el RESET y 2 pines para el oscilador.Figura 1. Distribución de terminales.Aspecto externo del PIC 16F84A.El pin VDD es el correspondiente q la tensión realimentación positiva y VSS es la tierra oreferencia. /MCLR es la entrada de reset del microcontrolador. Esta a entrada es activa en bajoy además se usa en la programación del dispositivo (Vpp). Los pines RA0...RA4 son las líneasde E/S de la puerta A, RB0...RB7 son las líneas de E/S del puerto B. Los pines OSC1/CLKIN yOSC2/CLKOUT son las entradas del circuito oscilador.3.1.2 Reset del MicrocontroladorEl PIC 16F84A posee internamente un temporizador conectado al pin de reset que actúa almomento de conectar la alimentación al microcontrolador. Por ello utilizaremos una resistenciaconectada desde el pin MCLR a la fuente de alimentación. Con esto al encender el sistema, elmicrocontrolador permanece en estado de reset por un cierto tiempo hasta que se estabilizanlas señales del circuito. Cuando se produce el reset ocurren dos cosas:1. El contador de programa es cargado con 000H. De este modo cada vez que ocurre unRESET reejecuta la instrucción localizada en la posición de memoria 000H.2. Todos los registros de control y estado adoptan un estado predeterminado.3.1.3 El Reloj.A través de este parámetro estableceremos la velocidad de ejecución de las instrucciones yademás el consumo. En esta familia un ciclo de instrucción esta constituido por 4 ciclos de
  • 3. reloj. Las instrucciones se ejecutan en un ciclo de instrucción a excepción de las instruccionesde salto que necesitan dos ciclos. Por ejemplo si utilizamos un cristal de 4 MHz, un ciclo dereloj es de 250 ns, y un ciclo de instrucción es entonces 1uS.Los microcontroladores PIC poseen 4 alternativas para el circuito de reloj:RC Usa resistencia y capacitor. La frecuencia de oscilación es dada por los valores de estos.HS Utiliza un cristal de cuarzo. El rango de operación es de 4 a 10 MHz.XT Oscilador de cristal o resonador. Opera entre 100KHz y 4 MHz.LP Oscilador de bajo consumo. Utiliza cristal o resonador con frecuencias entre 35 y 200 KHz.Cuando vamos a programar o "quemar" el microcontrolador debemos especificar el tipodeoscilador que utilizaremos. Esto lo hacemos a través de unos fusibles llamados"fusibles deconfiguración" o fuses.Nosotros utilizaremos un cristal de 4 MHz. Esta frecuencia es dividida por cuatro, lo que haceque la frecuencia de trabajo del microcontrolador sea de 1 MHz, por lo que cada instrucción seejecuta en 1uS.3.1.4 Memoria de Programa.El PIC16F84 tiene un contador de programa de 13 bits, tiene una capacidad dedireccionamiento de 8K x 14, pero solo tienen implementado el primer 1K x 14 (0000h hasta03FFh). La memoria de programa es de tipo FLASH.El contador de programa (PC) está implementado en la RAM. Los 8 bits de menor peso sonalmacenados en el registro PCL. Los bits restantes en el registro PCLATH. El PC cambia demanera automática, no podemos modificarlo desde el programa. La forma en que cambia el PCes incrementándose con la ejecución de cada instrucción o a través de las instrucciones desalto y retorno: GOTO, CALL, RETURN, RETLW y RETFIE.En cuanto a la pila se halla en una zona independiente de la memoria de programa y de datos.Su estructura es de tipo LIFO (Last In First Out) con 8 niveles de profundidad, cada uno de 13bits. No posee instrucciones para manipulación de la pila. La instrucción CALL y lasinterrupciones, cargan el contenido del PC en el nivel superior de la pila. Las instruccionesRETURN, RETLW y RETFIE, sacan el primer valor de la pila y lo cargan en el PC.3.1.5 Memoria de DatosEn el PC 16F84 la memoria de datos RAM posee dos zonas diferentes: el área de RAMestática y el Área EEPROM.Área RAM estática o SRAM: en ésta se hallan el banco de Registros Específicos (SRF) y elbanco de Registros de Propósito General (GPR). El SRF posee 24 posiciones de 1 byte,aunque dos de ellas no son operativas y el GPR 68 bytes.Área EEPROM: posee 64 bytes donde podemos almacenar datos importantes y que no seperderán al desconectar la alimentación.La memoria RAM esta dividida en dos bancos (banco 0 y banco 1), cada uno consta de 128bytes.En el PIC16F84 sólo se hallan implementadas las 48 primeras posiciones de cada banco, delas cuales las 12 primeras (00h...0Bh) están reservadas a los Registros de Propósito Específico(SFR). Estos registros son los encargados de controlar el procesador y sus recursos. Algunosde estos registros están duplicados en la misma dirección de los dos bancos para facilitar suacceso, como INDF, ESTADO, FSR, PCLATH, INTCON, como se puede ver en la figura 2.
  • 4. Figura 2. Memoria de Datos.Las direcciones 7 y 87 no están implementadas. Los 36 registros restantes de cada banco sedestinan a Registros de Propósito General (GPR) y en realidad sólo son operativos los 36 delbanco 0, pues los del banco 1 se mapean sobre el banco 0. Es decir cuando se hace referenciaa un registro general del banco 1, realmente se accede al mismo registro del banco 0.Para elegir el banco al que queremos acceder lo hacemos a través del bit 5 (RP0) del registrode estado. Cuando RP0 = 1 se accede al banco 1 y cuando RP0 = 0 se accede al banco 0.Al producirse un reset automáticamente se accede al banco 0. Esto sólo es importante para losRegistros de Propósito Específico. Los registros SFR se clasifican en dos grupos.En el primero se incluyen aquellos que controlan el núcleo del microcontrolador(ESTADO, OPTION, INTCON, etc.). Y en el otro grupo se incluyen los que caracterizan laoperatividad de los recursos auxiliares y periféricos.
  • 5. 3.1.6 Modos de DireccionamientoEn el microcontrolador PIC16F84A, las instrucciones pueden especificar los datos uoperandos de tres formas distintas: inmediato, directo o indirecto.En el modo inmediato (o literal) el valor del operando está incluido en el propio código de lainstrucción.En el direccionamiento directo el operando es especificado mediante su dirección, incluida en elcódigo de la operación. El banco que se debe acceder lo determina en el bit RP0 del registro deESTADO.En el direccionamiento indirecto se usa cuando una instrucción usa como operando el registroINDF, que ocupa la dirección 0 de ambos bancos. Se accede a la posición que apunta elcontenido del registro FSR ubicado en la posición 04 H del área de datos.3.1.7 El Registro de Estado.El registro de estado es un registro donde se almacena el estado del microcontrolador.Este registro es de 8 bits, se ubica en la dirección 03h de los bancos 0 y 1. Los bits de esteregistro se pueden usar para:- Obtener el estado de la ALU después de una operación (C, DC y Z).- Indican el estado de Reset (/TO y /PD, activos a nivel bajo)- Seleccionar el banco en el cual vamos a trabajar.bit 7 bit 0 IRP RP1 RP0 T0 PD Z DC CFigura 3. Registro de Estado.C: bit de acarreo. Si esta en ‘1’ indica que se produjo acarreo en el bit de mayor peso del resultado de unaoperación de suma (addwf y addlw). Actúa como señalizador de borrowene una resta (subwf y sublw).Vale ‘1’ si no hay borrow.DC: Acarreo del 4º bit. Igual que el anterior pero para el 4º bit del resultado.Z: bit de cero. Vale 1 si el resultado de la instrucción anterior ha sido 0.PD: Power Down. Se pone automáticamente a ‘1’ después de la conexión de la alimentación o al ejecutarla instrucción clrwdt. Se pone automáticamente a 0 con la instrucción sleep.TO: Time Out. Se pone automáticamente a 1 después de la conexión de la alimentación o alejecutar la instrucción clrwdt o sleep. Se pone a cero cuando se produce el desbordamiento del perroguardián.RP1 – RP0: Selección del bando. En el PIC16F84 sólo se usa RP0 por tener sólo dos bancos dememoria. Cuando vale ‘0’ se accede al bando 0 y cuando vale ‘1’ al banco 1.IRP: Selección del banco de direccionamiento indirecto. Determinan el banco de memoria de datosseleccionado. En el PIC16F84 debe valer siempre 0.Nota: No todos los bits de este registro pueden escribirse. Si ejecutamos la instrucción delimpieza de este registro (CLRF ESTADO), la misma deja el registro con el valor: 000XX1XX(‘X’ significa que no cambia).3.1.8 Puertas de Entrada – SalidaLa mayoría de las aplicaciones con microcontroladores están destinados a recibir datosdelmundo exterior (entradas) y proveer datos a distintos periféricos (salidas). Para realizar esto, elPIC16F84 posee 13 líneas de E/S digitales.En el PIC16F84 las 13 líneas de E/S están agrupadas en puertas, aunque tambiénpodemos actuar sobre una línea individual. El PIC16F84 posee dos puertas; la puerta A queposee 5 líneas RA0 ... RA4, y la puerta B que tiene 8 líneas RB0 ... RB7.Para poder configurar los pines de las puertas como entrada o salida, utilizamos losregistros:STATUS dirección 0x3
  • 6. PORTAdirección 0x5PORTBdirección 0x6TRISA dirección 0x5TRISB dirección 0x6Al producirse un reset, el PIC16F84A tendrá todos los pines de las puertas, colocados comoentrada de datos. Por lo tanto si necesitamos cambiarlos tendremos que configurarlos.Para configurar las puertas debemos tener en cuenta que asignando un CERO (0) a un pin,éste quedará como salida y asignando un UNO (1), quedará como entrada. Esta asignación lahacemos en los registros TRISA y TRISB.TRISA para configurar los pines del PUERTO A (5 bits)TRISB para configurar los pines del PUERTO B (8 bits)Por Ejemplo:Queremos configurar que todos los pines de la puerta A sean salidas excepto RA0 que seráentrada y además la puerta B la queremos como entrada.TRISA = 00001TRISB = 11111111Cuando el PIC arranca se halla en el BANCO 0, pero TRISA y TRISB están ubicados en elBANCO 1 por lo que debemos cambiar de banco para configurar las puertas. Esto lo hacemosa través del registro STATUS.El bit 5 de STATUS (RP0) define la posición del banco en donde nos encontramos. Sicolocamos RP0 en ‘0’ estaremos en el BANCO 0, si lo colocamos en ‘1’ en el BANCO 1.Ahora si queremos acceder a las puertas existen otros dos registros denominadosPUERTAA y PUERTAB, que se hallan en las posiciones 5 y 6 del banco 0 de la memoria dedatos.Por Ejemplo:Realizaremos la configuración de la puerta A como entrada y la puerta B como entrada los 4bits más altos y como salida los 4 más bajos.BSF STATUS,RP0 ; Entramos al BANCO 1MOVLW B11111 ; Movemos 11111 al registro de trabajo.MOVWF TRISA ; Configuramos el puerto A como Entrada.MOVLW B11110000 ; Movemos 00000000 al registro de trabajo.MOVWF TRISB ; Configuramos el puerto B como salida.BCF STATUS,RP0 ; Salimos del BANCO 1.Podemos leer los datos de entrada de una puerta, siempre y cuando esté configurada comoentrada. Esto lo hacemos accediendo a los registros de las puertas, por ejemplo:movfw PUERTAA.De igual forma podemos escribir un dato en una puerta (siempre que halla sidoconfigurada como salida) escribiendo en el registro correspondiente.Por ejemplo:movwf PUERTAA.Podemos además modificar un bit de una puerta, para ello contamos con instruccionesdestinadas a esto:bsf PUERTA, bit ; pone a 1 el bit indicado de la puerta A.
  • 7. bcf PUERTA, bit ; pone a 0 el bit indicado de la puerta A.Importante: Al momento de leer una puerta, lo que se lee es el nivel lógico presente en suslíneas en ese momento. Cuando escribimos un dato en una puerta, la información quedapresente en la salida hasta que realice otra escritura (pues poseen latchs).Puerta A.La puerta A posee 5 líneas de E/S digitales denominadas RA0, RA1, RA2, RA3 y RA4. Estaslíneas pueden configurarse individualmente como entradas o salidas a través del registroTRISA. El acceso a la puerta A se efectúa con el registro PUERTAA, ubicado en la posición 5del banco 0 de la memoria de datos.Las líneas RA0 .. RA3 son E/S digitales que admiten niveles TTL a la entrada y CMOS desalida. La línea RA4/TOCKI, multiplexa la función de E/S con la entrada de pulsos externospara el contador TMR0.En cuanto a manejo de corriente, cada línea de la puerta A puede suministrar unacorriente máxima de 20 mA (Source) y puede absorber una corriente máxima de 25 mA (sink).La capacidad máxima de corriente de la puerta A es de 80 mA(sink) y de 50 mA (source).Puerta BLa puerta B posee 8 líneas de E/S digitales RB0 ... RB7, que pueden ser configuradasindividualmente como entradas o salidas, a través del registro TRISB. El acceso a la puerta Ase efectúa con el registro PUERTAB, ubicado en la posición 6 del banco 0 de la memoria dedatos.La línea RB0/INT además de funcionar como E/S digital, sirve como entrada de solicitud deinterrupción externa, cuando esta habilitada en el registro INTCON.Las líneas RB4 ... RB7, cuando funcionan como entradas, pueden ser programadas paragenerar una interrupción si alguna de ellas cambia su estado lógico. Al leer el valor de estasentradas, es comparado con el valor anterior almacenado y si éste ha cambiado se origina unainterrupción, activándose el señalizador RBIF.La línea RB6 se usa además para la grabación serie de la memoria de programa (soporta laseñal de reloj) mientras que RB7 es la entrada de datos en serie.En cuanto a manejo de corriente, cada línea de la puerta B puede suministrar unacorriente máxima de 20 mA (Source) y puede absorber una corriente máxima de 25 mA (sink).La capacidad máxima de corriente de la puerta A es de 150 mA (sink) y de 100 mA (source).3.1.9 Temporizador/Contador TMR0El microcontrolador PIC16F84 incorpora un temporizador/contador de 8 bits denominadoTMR0, el cual puede operar como contador o como temporizador.Contador: cuenta los impulsos recibidos por el pin RA4/TOCKI. En este modo cuenta elnúmero de ciertos sucesos externos al micro. Cuando la cuenta llega al valor FFh se produceel desbordamiento al pasar a 00h, indicando esto a través de un señalizador y además puedeproducir una interrupción si la misma esta habilitada.Temporizador: en este caso cuenta los impulsos provenientes del reloj interno. Se usa paradeterminar un tiempo preciso, debido a que los impulsos poseen una duración conocida. Laduración de los impulsos equivale a un ciclo de instrucción, es decir, la cuarta parte del ciclo dereloj. Igual que en el funcionamiento como contador, se produce el desbordamiento al pasar deFFh a 00h poniendo a 1 un bit señalizador y produciendo interrupción si esta se encuentrahabilitada.El TMR0 se comporta como un registro de propósito especial ubicado en la dirección 01h delbando 0 de la memoria de datos.Cuando opera como temporizador, conviene cargarle con el valor de los impulsos que sequieren contar pero expresados en complemento a 2.De este modo al transcurrir el número de impulsos deseados el contador valdrá 00hactivando el señalizador TOIF y produciendo una interrupción si esta se halla habilitada.
  • 8. Podemos leer el contenido del TMR0 en cualquier momento sin detener o cambiar su cuentautilizando la instrucción movf TMR0, W.Cuando escribimos un nuevo valor sobre TMR0 para iniciar una nueva cuenta, se retrasa enincremento del mismo en 2 ciclos posteriores.A veces es necesario controlar tiempos largos, para lograr esto el PIC16F84 dispone de uncircuito programable llamado divisor de frecuencia (prescaler) el cual permite dividir lafrecuencia usada por varios valores.Este divisor de frecuencia puede ser utilizado por el TMR0 o por el perro guardián (WDT).Para realizar la programación del funcionamiento de TMR0, el WDT y del divisor defrecuencia se usan ciertos bits del registro OPTION y de la palabra de configuración.Figura 4. Diagrama en bloques del TMR0.3.2.1 El Perro Guardián (Watch dog Timer).El perro guardián (WDT) también es un contador interno de 8 bits que tienen por objetivogenerar un reset del microcontrolador cuando se desborda. Su control de tiempo esindependiente del TMR0. Podemos evitar el funcionamiento del WDT programando un bitWDTE de la palabra de configuración.Para evitar que se desborde debemos refrescarlo o recargar su cuenta antes de quellegue al desbordamiento. Este refresco, que consiste en ponerlo en cero, lo realizamos através de las instrucciones CLRWDT y SLEEP.Debemos analizar el programa y ubicar alguna de estas dos instrucciones en sitiosestratégicos por los que pase el flujo del programa, antes de que transcurra el tiempo asignadoal WDT. De este modo si el programa se cuelga no se refresca el perro guardián y se produceel reset del microcontrolador.La instrucción CLRWDT borra el valor del WDT, reiniciando su cuenta. Por otro lado, lainstrucción SLEEP además de borrar el WDT, detiene el sistema entrando a un modo de bajoconsumo. Si no se desactiva el perro guardián cuando se entra en el estado de reposo, alterminar desbordar, provocará un reset que sacará al microcontrolador de dicho estado. En elregistro de ESTADO existe un bit denominado TO que toma el valor ‘0’ después deldesbordamiento del WDT.3.2.2 El Registro OPTION.La función principal del registro OPTION es controlar el comportamiento del TMR0 y el divisorde frecuencia. El registro OPTION se halla en la posición 81h de la memoria de datos(dirección 1 del banco 1). En la figura 5 podemos ver la composición del registro y acontinuación se explica la función cada uno de sus bits.RBP0 INTEDG TOCS TOSE PSA PS2 PS1 PS0Figura 5. Registro OPTION.RBPU RBPU = 0 activa las resistencias Pull-up de la puerta B. RBPU = 1 desactiva.INTEDG Indica cual es el flanco activo de la interrupción externa (RB0/INT). Si vale 0 activa el flanco descendente y si vale 1 el ascendente.
  • 9. TOCS Tipo de reloj para el TMR0. Si vale 1 activa los pulsos introducidos a través de TOCKI (contador). Si vale 0 se activan los pulsos de reloj interno Fosc/4 (temporizador)TOSE Activa el tipo de flanco de la señal TOCKI. Si vale 0 se incrementa el TMR0 cada flanco ascendente. Si vale 1 se incrementa con el flanco descendente.PSA Asignación del divisor de frecuencias. Si vale 0 el divisor de frecuencia se asigna al TMR0 y si vale 1 se asigna al WDT.PS2 – PS0 Indican el valor con el que actúa el divisor de frecuencias, según la siguiente tabla de valores.3.2.3 InterrupcionesLas interrupciones son acontecimientos o sucesos que hacen que el microcontrolador deje dela do lo que esta haciendo para atender este suceso y luego regrese y continúe con lo queestaba haciendo.Dichos sucesos pueden ser de origen interno o externo al microcontrolador. Al momento deproducirse una interrupción se para la normal ejecución del programa, se guarda la direcciónactual en la pila y se carga el PC con la dirección del Vector de Interrupción que es unadirección reservada de la memoria de código.En el microcontrolador PIC16F84 el Vector de Interrupción está ubicado en la dirección 0004hde la memoria de programa, donde empieza la Rutina de Servicio de la Interrupción. Por logeneral en esta dirección colocamos una instrucción de salto incondicional GOTO que salta a ladirección del programa donde se halla la rutina de servicio de la interrupción (RSI). La RSIcomienza salvando en la memoria de datos los registros específicos que va a emplear. Antesde retornar al programa principal estos valores almacenados son recuperados y se restaura elestado del procesador.Siempre que se produce una interrupción se debe averiguar cual de las posibles causas hamotivado la interrupción. Para lograr esto se exploran los señalizadores de las fuentes deinterrupción del registro INTCON.PS2..PS0 Timer 0 Watch Dog000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8100 1:32 1:16101 1:64 1:32110 1:128 1:64111 1:256 1:128RBP0 INTEDG TOCS TOSE PSA PS2 PS1 PS0El microcontrolador PIC16F84 posee un bit GIE (Global Interrupt Enable) que cuando vale 0inhabilita todas las interrupciones.La RSI debe colocar este bit en ‘0’ para evitar que se aniden interrupciones. Al retornar de lainterrupción (Instrucción RETFIE), GIE pasa a valer ‘1’ automáticamente para habilitarnuevamente las interrupciones.Pero los señalizadores de interrupción no son borrados de forma automática y debemosdesactivarlos por software. Si no hacemos esto, al producirse la siguiente interrupción, nopodríamos averiguar su origen).La figura 6 muestra las fases más importantes de la atención a una interrupción.Figura 6. Fases en la atención de una Interrupción.3.2.4 Causas de la InterrupciónEl PIC16F84 tiene cuatro posibles causas de interrupción.1. Interrupción externa provocada al activar la patita RB0/INT.2. Desbordamiento del TMR0.3. Cambio de estado en las líneas de la Puerta B (RB4 ... RB7).4. Finalización de escritura en la EEPROM de datos.Proceso deInterrupción
  • 10. Todas éstas solicitudes de interrupción seránatendidas siempre que el bit GIE este en ‘1’.Cada interrupción dispone de un señalizadoro flag que es un bit que se poneautomáticamente a 1 cuando se produce lainterrupción. Y cada interrupción poseetambién un bit de habilitación, el cualpermite o prohíbe la solicitud de esainterrupción.4.2.5. Registro de control de interrupción INTCONComo el PIC 16F84A admite interrupciones, requiere un registro encargado de sugestión. El registro encargado de gestionar las interrupciones es el INTCON, en este seencuentran los señalizadores y los bits de habilitación de las interrupciones. Ocupa ladirección 0Bh del banco 0 de la memoria de datos RAM y está duplicado en el banco 1.En la figura 8 podeos ver la estructura de este registro y a continuación una descripciónde cada uno de sus bits.Figura 8. Registro INTCON.GIE Habilitación global de interrupciones. GIE = 1 permite la solicitud de interrupciones cuyos bits depermiso individuales también lo permitan. GIE = 0 prohíbe todas las interrupciones.EEIE Permiso de interrupción por fin de escritura en la EEPROM. EEIE = 0 prohíbe esta interrupción y siEEIE = 1 la permite.TOIE Permiso de interrupción por desbordamiento del TMR0. TOIE = 0 prohíbe esta interrupción.TOIE = 1 la permite.INTE Permiso de interrupción por activación de la patilla RB0/INT. INTE = 0 prohíbe esta interrupción.INTE = 1 la permite.RBIE Permiso de interrupción por cambio de estado en RB4 - RB7. RBIE = 0 prohíbe esta interrupción.RBIE = 1 la permite.TOIF Señalizador del desbordamiento del TMR0. Se pone automáticamente a 1 cuando el TMR0 pasa delvalor FFh a 00h.INTF Señalizador de activación de la patilla RB0/INT. Se pone a uno al activarse la patilla RB0/INT,indicando solicitud de interrupción externaRBIF Señalizador de cambio de estado en las patillas RB4/RB7. Se pone a 1 cuando cambia el estado dealguna de estas líneas.4.2.6 Interrupción externa INTEsta interrupción es útil para atender sucesos externos al microcontrolador. Cuandoocurre algún suceso externo que el microcontrolador debe gestionar se activa la pataRB0/INT y se efectúa una solicitud de interrupción. El bit INTF del registro INTCON sepone a ‘1’ en forma automática y si el bit de habilitación INTE = 1 y además bit depermiso global GIE = 1, se puede atender a la interrupción.4.2.7 Interrupción de desbordamiento del contador TMR0Esta interrupción se produce cuando el TMR0 se desborda y pasa del valor FFh a 00h.Bajo esta situación el señalizador TOIF se pone automáticamente a 1. Si el bit de TOIE yGIE, están puestos a 1 se atiende la interrupción. Si no se recarga el TMR0 sigue contadode 00h a FFh. En cualquier momento se puede leer o escribir este registro, pero cada vezque se recarga se pierden dos ciclos de reloj. Cuando se recarga con el valor N (endecimal) cuenta un número de ciclos igual a 256 - N.4.2.8 Interrupción por cambio de estado en las líneas RB7:RB4Esta interrupción está específicamente implementada para atender la pulsación de unatecla en un teclado matricial conectado a dichas líneas (RB7...RB4). Con estas 4 líneaspodemos controlar un teclado matricial de 16 teclas. Al cambiar el estado lógico dealguna de estas entradas, el señalizador RBIF se pone a 1 y si los dos bits de permisoRBIE = GIE = 1 se autoriza la interrupción.
  • 11. GIEEEIE TOIE INTE RBIE TOIF INTF RBIF4.2.9 Reinicialización o ResetExisten 5 causas que pueden originar el reset del PIC16F84. Recordemos que alproducirse un reset, el PC se carga con el valor 000h y los registros específicos toman unvalor conocido. Las causas que pueden originar un reset son:1. Conexión de la alimentación al PIC16F84.2. Activación de /MCLR estando del microcontrolador funcionando normalmente.3. Activación de /MCLR estando en estado de reposo.4. Desborde del WDT estando el microcontrolador funcionando normalmente.5. Desborde del WDT estando el microcontrolador en el estado de reposo.5. Desarrollo de la PrácticaRealizaremos algunos programas simples para comenzar la programación de los PIC.Utilizaremos el PIC16F84A ya que es un micro de la gama media con Timer,interrupciones, WDT, memoria EEPROM de datos y posee memoria de programa FLASH.Para comenzar a utilizar la herramienta de desarrollo MPLAB utilizaremos la guía

×