Sunteți pe pagina 1din 21

CURSO DE MICROCONTROLADORES PICS

I N D I C E
CURSO DE MICROCONTROLADORES PICS DE MICROCHIP

Prologo ............................................................................................................................... Introduccin ..................................................................................................................... EL MICROCONTROLADOR PIC16F84


Arquitectura Oscilador Externo Reset Memoria de programa Memoria de datos Registros de funciones especficas Puertos Recursos auxiliares Circuito de vigilancia (WACHDOG) Temporizador de encendido (POWER UP TIMER) Modo de bajo consumo (SLEEP) interrupciones memoria de datos eeprom fusibles de configuracin EL CONJUNTO DE INSTRUCCIONES

EL MICROCONTROLADOR PIC16F627 Unidad EJERCICIOS BASICOS DE ENTRADA Y SALIDA 1.1 Contador binario de 8 bits. .............................................................................. 1.2 Manejo de entradas y salidas. ......................................................................... 1.3 Corrimiento de bits. ............................................................................................ 1.4 Secuenciador. ...................................................................................................... 1.5 Implementacin de funciones tipo PLC. ...................................................... Unidad . EJERCICIOS PARA MANEJO DE TECLADO Y DISPLAY 2.1 Conteo de un digito en display de 7 segmentos. ........................................ 2.2 Mensajes en displays de 7 segmentos. .......................................................... 2.3 Contador de 4 dgitos con displays de 7 segmentos. .................................
Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

2.4 Manejo del teclado matricial. .......................................................................... 2.5 Mensajes en display alfanumrico de cristal liquido (LCD). ................. UNIDAD . EJERCICIOS DE CONTROL DE POTENCIA 3.1 Control de motores de paso a paso. ............................................................... 3.2 Control On / Off de motores de C.A. ............................................................ 3.3 Control por PWM de motores de C.D. ......................................................... 3.4 Control por ngulo de conduccin para C.A. ............................................. UNIDAD . EJERCICIOS DE COMUNICACIONES 4.1 Comunicacin serial asncrona por RS-232 con PIC16F84. ................... 4.2 Comunicacin serial asncrona por RS-232 con PIC16F627. ................ 4.3 Control de motores con comunicacin serial. ............................................. 4.4 Comunicacin serial asncrona por RS-485. ...............................................

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

PROLOGO
El desarrollo tecnolgico que han alcanzado los microcontroladores ha hecho cada vez mas simples las tcnicas de diseo, lo cual ha ocasionado un empleo masivo de estos dispositivos y a la vez ha hecho indispensable su conocimiento y aprendizaje para todos aquellos que estn involucrados de alguna forma en el desarrollo electrnico. Hoy en da es difcil encontrar una aplicacin que no pueda utilizar un microcontrolador para hacerlo ms ptimo. Encontramos microcontroladores en un gran nmero de reas y productos de consumo masivo. Solo por mencionar algunos: instrumentos de medicin, electrodomsticos, sistemas de seguridad, comunicaciones, en la industria, en el rea medica, investigacin. La tendencia de desarrollo y aplicacin de los microcontroladores parece infrenable. Solaris Digital ha desarrollado el curso de microcontroladores PIC, en el cual se presentan experimentos implementados con la tarjeta entrenadora S-120 la cual esta provista con todos los elementos necesarios para la realizacin de innumerables experimentos, recuerde que las aplicaciones con microcontroladores son solamente limitadas por la creatividad. Este curso esta orientado a todos aquellas personas con conocimientos previos de electrnica digital y bsicos sobre programacin de microcontroladores, y a quienes la creciente modernizacin tecnolgica obliga a introducirse y actualizarse en este campo. De esta forma el curso ofrece una preparacin para adquirir las habilidades que permitan enfrentar problemas reales o poder generar nuevos proyectos, mediante la experimentacin con circuitos.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

INTRODUCCIN
El microcontrolador PIC de la empresa Microchip , ha logrado mantenerse en el mercado como uno de los microcontroladores de mayor consumo, esto debido a caractersticas relevantes tales como: o Informacin Tcnica abundante o Herramientas de desarrollo disponibles o Bajo costo o Bajo consumo de potencia o Alta velocidad. o Empleo de tecnologa RISK (set de instrucciones reducido), lo cual lo hace muy fcil de manejar. La familia de microcontroladores PIC se divide en tres rangos de acuerdo a la capacidad del microcontrolador, estos son: Rango bajo: Esta compuesto por la familia 16C5X, tienen un timer (temporizador) y pines de entrada / salida. Rango medio: Compuesto por las familias 16C6X/7X/8X, adems de las de las caractersticas anteriores, incorporan conversores AD, comparadores, interrupciones. Rango superior: Compuesto por la familia 17CXXX, los cuales presentan muchos ms servicios y prestaciones. Algo que debemos tomar en cuenta al momento de proyectar un circuito a base de microcontrolador, son los alcances de dicho circuito con el fin de escoger el microcontrolador ms adecuado. Los microcontroladores empleados en los ejercicios son el PIC16F84 y el PIC 16F627, por lo cual es conveniente destacar sus caractersticas ms sobresalientes. De esto tratan los captulos 1 y dos, los captulos restantes se enfocan a prcticas con dichos microcontroladores iniciando con ejercicios bsicos y subiendo el nivel de complejidad poco a poco.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

EL PIC16F84
El PIC16F84 es uno de los ms ocupados en el aprendizaje con PICS ya que posee una memoria de tipo FLASH, lo cual permite reprogramarlo sin ser borrado con procesos tediosos como lo es el borrado por luz ultravioleta en las EPROM. Esta fabricado con tecnologa CMOS, en encapsulados de tipo DIP (Dual In-line Pin) y SURFACE MOUNT (montaje superficial), ambos de 18 pines.

FIG. 1. a)Pines del PIC16F84

b)Tipos de encapsulado

ARQUITECTURA
Los bloques funcionales internos y la forma de interconectarlos definen el tipo de arquitectura que se emplea en el microcontrolador. Los microcontroladores PIC estn basados en la arquitectura Harvard que posee buses y espacios de memoria independientes, un bloque para datos y otro para las instrucciones. Debido a esta independencia se puede acceder de forma simultnea la memoria de datos y a la memoria de instrucciones, lo que se refleja en una mayor velocidad, adems permite que cada uno tenga el tamao ms adecuado. As, en el PIC16F84 los datos tienen una longitud de 8 bits, mientras que las instrucciones son de 14 bits.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS


Fig. 2 Arquitectura interna del PIC 16F84

Como se observa en la Figura 2 el PIC16F84 consta de un procesador con una ALU y Decodificador de Instrucciones, una memoria de programa tipo FLASH de 1K palabras de bits, una memoria de datos SRAM con 68 posiciones de 8 bits. Tambin existe una zona de bytes de EEPROM para datos no voltiles. Finalmente dispone de interrupciones, temporizador, perro guardin y dos puertas A y B de entrada y salida de informacin digital.

un 14 64 un

EL OSCILADOR EXTERNO
El oscilador externo es un circuito que fija la velocidad a la que el microcontrolador debe trabajar. OSC1/CLKIN OSC2/CLKOUT son los terminales para la conexin del oscilador. El PIC16F84 puede trabajar con cuatro modos diferentes de oscilador los cuales son: o o o o RC (Low Power crystal). Oscilador a base de resistencia y capacitor. XT (Crystal / resonator). Cristal HS (High Speed Crystal / resonator). Cristal de alta velocidad LP (Resistor / capacitor). Cristal para baja frecuencia y bajo consumo de potencia.

El oscilador a base de resistencia y capacitor, se emplea cuando no se requiere de gran precisin para el oscilador, adems de economizar el circuito. En el modo de cristal, el oscilador tpico es el de 4MHz, debido a que garantiza mayor precisin, para ejecutarse una instruccin (ciclo de instruccin) se emplean cuatro ciclos de reloj, por lo tanto el ciclo de instruccin esta dado por: Ciclo de instruccin = (1/f oscilacin) x 4 Para la frecuencia de trabajo de 4MHz cada instruccin se ejecuta en 1 microsegundo. El lmite para la frecuencia del oscilador es de 10MHz.

Fig. 3 a)Reloj a cristal

b) reloj a resistencias

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

RESET
El pin de reset reinicia el funcionamiento del sistema cuando es necesario. El PIC16F84 admite diferentes tipos de reset: o Por conexin de alimentacin (Power On Reset) o Por pulso en el pin /MCLR durante operacin normal o en el modo de bajo consumo (sleep). o Por desbordamiento del conteo del circuito de vigilancia ( wachdog) durante operacin normal o durante el modo de bajo consumo (sleep). El reset de encendido es debido a dos temporizadores, el OST (Oscillator Start-Up Timer) o temporizador de encendido del oscilador y el PWRT ( Power-Up Timer) o Temporizador de encendido. El OST se encarga de mantener en reset hasta que el oscilador de cristal se estabiliza. El PWRT se encarga de dar un retardo fijo de 72ms (nominal) en el encendido nicamente, de esta manera mantiene en reset al dispositivo mientras la fuente se estabiliza. Estos dos temporizadores evitan las tradicionales configuraciones RC externas, y basta con conectar el pin /MCLR a la fuente de alimentacin para trabajar con los temporizadores. El reset por /MCLR se consigue aplicando cero volts momentneamente a este pin, sirve para tener control total sobre el reset, el circuito de reset manual recomendado por el fabricante es el mostrado en la figura 5. El watchdog produce el un reset cuando su temporizador de 8 bits rebasa la cuenta, es decir pasa de 0FFh a 00h.

Fig. 4 Conexin del reset.

Memoria de programa (FLASH):El PIC16F84 posee 1Kbyte de longitud con palabras de 14 bits, es decir, permite hasta 1024 (210) instrucciones de 14 bits cada una (de la 0000h a la 03FFh). Es de tipo Flash (una memoria no voltil, de bajo consumo que se puede escribir y borrar elctricamente tipo EEPROM pero de mayor densidad y ms rpida.) de acuerdo al fabricante permite 10 000 ciclos de lectura / escritura. Cabe sealar que el contador de programa es de 13 bits, lo que permite direccionar 8Kbyte x 14, si se direccionan posiciones de memoria superiores a 1K se provocar un solapamiento con el espacio del primer 1K.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS Vector de reset. Se encuentra en la posicin 0000h. Cuando se produce un reset el contador de programa tiene el valor de dicha posicin (0000h). Vector de interrupcin. Se encuentra en la posicin 04H, al efectuarse una interrupcin el contador de programa apunta hacia esta localidad de la memoria de programa.

Fig 5. Mapa de memoria de programa.

Memoria de datos (RAM) El PIC16F84 tiene dos bancos o paginas de 128 registros de 8 bits cada uno. Pero solo los primeros 80 del banco 0 (00h 4Fh) y los 12 primeros del banco 1 (80h 8Bh) son utilizados. Los primeros 12 registros de cada banco son de propsito especial (SFR) y los restantes (68 de la pgina 0) son de propsito general (GPR). Para seleccionar el banco de registros de trabajo en un momento determinado se utiliza el bit RP0 del registro STATUS.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS


Fig 6. Registros del PIC16F84

REGISTROS DE FUNCIONES ESPECFICAS 00H INDO (registro para direccionamiento indirecto de datos) No es un registro disponible fsicamente, utiliza el contenido del FSR y el bit RP0 del registro STATUS para seleccionar indirectamente la memoria de datos o RAM del usuario, la instruccin determinar que se debe realizar con el registro sealado. 01H TMR0 (Temporizador / contador de 8 bits) La forma de actuar la determinan los bits 0 - 5 del registro OPTION. En general es un contador de 8 bits ascendente que recibe seal externa por el pin RA4 / TOCKI o una seal interna proveniente del reloj de instrucciones del microcontrolador. Puede ser ledo y escrito en cualquier momento. Se puede seleccionar filo de subida de bajada para el reloj externo Tiene un divisor de frecuencia programable. Adems habilita una interrupcin en el desbordamiento de FFH a 00 H. 02H PCL (Contador de programa) Y 0AH PCLATCH Se emplea para direccionar las instrucciones del programa que se encuentran en la memoria FLASH. El contador de programa es de 13 bits y se forma con dos registros. Los 8 bits menos significativos del PC residen en el registro PCL, que ocupa, repetido, la posicin de los dos bancos de memoria de datos. Los bits ms significativos, residen en los primeros 5 bits del registro PCLATH que tambin esta repetido, a este registro no se puede acceder directamente. Durante la ejecucin del programa el contador se incrementa en uno por cada instruccin, salvo en el caso de que se trate de una instruccin de salto. Cuando se ejecutan una instruccin CALL o GOTO se emplean los 11 bits ms bajos, con esto se puede direccionar toda la memoria de programa (1K).

Fig 7. Carga del registro PCL a)Salto b)Aritmtico

En una instruccin CALL o GOTO, los bits 10-0 se cargan desde el cdigo de operacin de la instruccin, mientras que los bits 11-12 lo hacen desde el PCLATH 4-3. Como solamente el primer 1K de memoria esta implementado, el cdigo de operacin de la instruccin puede contener la direccin destino, eso quiere decir que se pueden hacer saltos y llamados a subrutinas sin necesidad de tener en cuenta la paginacin de memoria de programa.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS En otras instrucciones donde PCL es el destino, los bits 12-8 se cargan directamente desde el PCLATH 4 - 0. Por ejemplo con la instruccin ADDWF PC,1, en este caso se debe tener en cuenta que la tabla debe estar comprendida dentro de un solo bloque de 256 bytes (0 255, 256 511, etc ). 03H STATUS (registro de estados) Contiene el estado aritmtico de la ALU, el estado del reset y los bits para seleccin del banco (memoria de datos).
7 IRP 0 RP1 RP0 T0 PD Z DC C

Bit Nombre 0 C: Carry /Borrow Acarreo 1 DC: Digit Carry/ /Borrow Bit de acarreo de dgito. 2 Z Zero 3 /PD:Power Down Bit de bajo consumo /T0: Timer Out Bit de finalizacin del temporizador RP0:Register Bank Select RP1 IRP

Funcin En instrucciones aritmticas: C = 0; No hay acarreo en el BMS C = 1; Hay acarreo en el BMS En instrucciones aritmticas: DC = 0; No hay acarreo entre el bit 3 y 4. DC = 1; Hay acarreo entre el bit 3 y 4. En instrucciones aritmticas y lgicas: Z = 0; El resultado no es cero. Z = 1; El resultado es cero. PD = 0; Al ejecutarse la instruccin SLEEP. PD = 1;Despus de alimentar el micro o de ejecutar la instruccin CLRWDT /T0 = 0; Cuando el circuito de vigilancia Watcdog finaliza la temporizacin. /T0 = 1;Despus de alimentar el micro o de ejecutarse una instruccin CLRWDT o SLEEP Selector de pagina para direccionamiento directo de la memoria de datos. 00 = Banco 0 (80H 0FFH) 01 = Banco 1 (00H 07FH) No implementado. Se mantiene en cero. No implementado. Se mantiene en cero. *BMS = Bit ms significativo Fig 8. Registro de estados.

6 7

04H FSR (Registro selector de registros) Puntero para direccionar indirectamente a la memoria de datos en conjunto con el registro INDO. Si en el programa no se utilizan llamadas indirectas, se puede utilizar como registro de propsito general. Se lista un ejemplo del empleo del registro FSR con INDO:
MOVLW MOVWF CLRF INCF BTFSS GOTO 15 FSR INDO FSR,R FSR,5 NEXT ;inicializa el puntero en la localidad de memoria RAM ;que se va a borrar. ;borra el registro indexado. ;incrementa el puntero. ;pregunta si ya acab el banco de memoria ;sigue borrando los registros que faltan.

NEXT

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS


Sigue....

08H EEDATA: Registro de datos de la EEPROM. Contiene el dato que se va escribir en la memoria EEPROM de datos o el que se ley de esta. 09H EEADR: Registro de direccin de la EEPROM Registro que usa slo los 6 bits menos significativos para direccionar las 64 localidades de la EEPROM de datos. 0BH INTCON: Registro para el control de interrupciones. Se encarga del manejo de las interrupciones.
7
GIE EEIE TOIE INTE RBIE TOIF INTF

0
RBIF

Bit Nombre 0 RBIF RB Port Change Interrupt Flag 1 INTF External Iterrupt Flag 2 TOIF TMR0 Overflow interrupt Flag 3 RBIE RB Port Change Interrup Enable 4 INTE External Interrup Enable 5 TOIE TMR0 Overflow Interrupt Enable 6 EEIE EE Complete Write Interrupt Enable 7 GIE Global Interupt Enable

Funcin Bandera de interrupcin por cambio estado en el puerto B. RBIF = 0;Se debe de cambiar a cero por programa. RBIF = 1; Una de las entradas RB [7, 4] cambia de estado. Bandera de Interrupcin Externa INTF = 0; Por programa INTF = 1;.Cuando acurre la interrupcin en RB0. Bandera de la interrupcin por sobreflujo del TMR0 TOIF = 0; Por programa. TOIF = 1; cuando TMR0 pasa de 0FFH a 00H Habilita la interrupcin por cambio en el puerto B, RB [7, 4]. RBIE = 0; Deshabilita. RBIE = 1; Habilita Habilita la interrupcin externa INT/RB0 INTE = 0; Deshabilita. INTE = 1; Habilita Habilita la interrupcin por desbordamiento del TMR0. TOIE 0 = 0; Deshabilita. TOIE 1 = 1; Habilita. Interrupcin de escritura en EEPROM completa. EEIE = 0; deshabilita EEIE = 1; Habilita Habilita la interrupcin global. GIE = 0; Deshabilita todas las interrupciones. GIE = 1; Habilita las interrupciones no enmascaradas.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

Fig 9. Registro de INTCON

81H OPTION: Registro de configuracin mltiple. Contiene los bits de control para configurar el divisor de frecuencia o prescaler del TMR0/WDT, la interrupcin externa INT, el timer y los pull-ups del Puerto B.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS


7 RBPU 0
INTEDG TOCS TOSE PSA PS2 PS1 PS0

Bit Nombre Funcin 0 PS0 Seleccionan el rango del prescaler. Prescaler Rate Valor Rango TMR0 select 000 1:2 001 1:4 1 PS1 010 1:8 011 1 : 16 100 1 : 32 2 PS2 101 1 : 64 110 1 : 128 111 1 : 256 3 4 5 6 7 PSA Prescaler Asignment Bit TOSE TMR0 Source Edge Select TOCS TMR0 Clock Source Select INTEDG Interrupt Edge Select /RBPU PORT B pull up enable.

Rango WDT 1:1 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128

Asignacin del prescaler. PSA = 0; El prescaler es asignado al mdulo Timer 0 PSA = 1; El prescaler es asignado al WDT Seleccin de flanco en RA4. TOSE = 0; Incrementa TMR0 en el flanco de subida. TOSE = 1; Incrementa TMR0 en el flanco de bajada. Selector de fuente de reloj. TOCS = 0; Reloj interno de ciclo de instruccin. TOCS = 1; Transicin en el pin RA4/TOCKI Selector de flanco de interrupcin externa. RB0 / INT INTEDG = 0; Interrupcin en flanco de bajada del pin RB0. INTEDG = 1; Interrupcin en flanco de subida del pin RB0. Habilita la pull ups del Puerto B. RBPU = 0; Deshabilita. RBPU = 1; Habilita.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

Fig 10. Registro OPTION

88H EECON1: Registro para el control de la memoria EEPROM de datos. Emplea solo cinco bits para controlar la memoria de datos.
7 U Bit 0 0 U U
EEIF WRERR WREN WR RD

Funcin Control de lectura RD = 0; Se coloca a 0 por hardware, al finalizar la lectura. RD = 1; Inicia una lectura de la EEPROM. 1 WR Control de escritura Write Control WR = 0; Se coloca a 0 por hardware, al finalizar la escritura. WR = 1;.Inicia un ciclo de escritura EEPROM. 2 WREN Habilitacin de escritura en la EEPROM. Write Enable WREN = 0; No permite las operaciones de escritura. WREN = 1; Habilita la escritura. 3 WRERR Bandera de error de escritura. Write Error Flag WRERR = 0; Escritura completada. WRERR = 1; Cuando la escritura termina prematuramente. 4 EEIF Bandera de finalizacin de la escritura. EEPROM Write EEIF = 0; La escritura no ha empezado, o no se complet. Completion EEIF = 1; Finaliza con xito la escritura. Se debe limpiar Interrupt Flag por software. Se habilita con el bit 6 (EEIE) del registro INTCON. 5, 6,7 U No implementada

Nombre RD Read Control

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

Fig 11. Registro EECON1

89H EECON2: Registro auxiliar par el control de la memoria EEPROM de datos. No esta implementado fsicamente, pero es necesario en las operaciones de escritura en la EEPROM de datos, si se lee se obtienen ceros. 0CH a 4FH Registros de propsito general. Son las 68 posiciones implementadas en la memoria RAM esttica, es el rea de trabajo del usuario. Se puede acceder por cualquiera de las dos pginas (0CH 4FH) y (8CH 0CFH), lo cual evita un constante cambio de pagina en el manejo de la RAM del usuario. Registro de trabajo W. Es el registro de trabajo principal, se comporta en forma similar al acumulador de los microprocesadores. Esta presente en la mayora de las instrucciones. Pila (Stack). Es una zona reservada independiente de los bancos de memoria por lo cual no se permite el acceso directo. Tiene una estructura LIFO de 8 niveles de profundidad cada uno con 13 bits. La instruccin CALL y las interrupciones originan la carga del contenido del PCL en el nivel superior de la pila y con las instrucciones RETURN, RETLW y RETFIE se lee el valor contenido del nivel superior de la misma y regresa al PCL.

PUERTOS DEL MICROCONTROLADOR


El microcontrolador 16F84 tiene dos puertos, estos son el puerto A con 5 lneas (RA0 RA4) y el puerto B con 8 lneas (RB0 RB7), cada una de las lneas se puede configurar como entrada o como salida independiente mediante software, programando el registro respectivo a cada puerto (TRISA/B). Un 0 configura el pin del puerto correspondiente como salida y un 1 lo configura como entrada.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS


FIG. 12 a) Puertos del PIC16F84

05H Puerto A. PA0 PA3 son terminales de entrada/salida de propsito general. El pin RA4/TOCKI puede ser configurado por software como un pin de entrada/salida o como entrada del temporizador/contador, con el bit 5(TOCS) del registro OPTION. Si se programa como entrada digital, funciona como un disparador schmitt, puede reconocer seales un poco distorsionadas y llevarlas a niveles lgicos. Cuando se usa como salida se comporta como colector abierto, por lo que se debe de poner una resistencia de pull-up (resistencia externa a cinco volts). Esto ocasiona que se comporte con lgica inversa, es decir, un cero escrito al pin del puerto entrega en el pin un uno lgico. Como la salida es a colector abierto solo puede manejar cargas en modo sumidero (absorber corriente) . 06H Puerto B. Tiene internamente resistencia de pull-up conectadas a sus pines, para fijar el pin a un nivel de 5V, pero pueden ser habilitadas o deshabilitadas mediante software. En este caso todas las resistencias se conectan o desconectan al mismo tiempo, usando el bit/RBPU del registro OPTION. Cabe sealar que la resistencia de pull-up es desconectada automticamente en un pin si este se configura como salida. El pin RB0/INT se puede configurar por software para que funcione como interrupcin externa, para configurarlo se utilizan los bits 4 (INTE) y 7 (GIE)del registro INTCON y los bits 6(INTEDG) y 7(/RBPU) del registro OPTION. 85H TRISA: Registro de configuracin del puerto A. Un cero en el bit correspondiente al pin lo configura como salida, mientras que un 1 hace como entrada. 86H TRISB: Registro de configuracin del puerto B. Configura los pines del puerto B como la hace TRISA. En ambos puertos cada pin puede suministrar una corriente de 20mA y absorber 25 mA , pero para el caso del puerto A la suma de las cinco lneas no puede suministrar ms de 50mA y absorber ms de 80mA. En el caso del puerto B la suma de las ocho lneas no puede suministrar ms de 100mA y absorber ms de 150mA.

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS


FIG. 13 Capacidad de corriente de los puertos. Modo source (izquierda), modo sink (derecha)

El consumo de corriente del microcontrolador para su funcionamiento depende del voltaje de operacin , la frecuencia y de las cargas que tengan sus pines. Para un reloj tpico de 4MHz el consumo es de aproximadamente 2mA. Es importante recordar que el dispositivo es de tecnologa CMOS, por lo cual los pines sin ocupar se deben de conectar a la fuente de alimentacin mediante una resistencia tpicamente de 10K

Recursos auxiliares
Circuito de vigilancia (WATCHDOG) Es un contador interno de 8 bits que origina un Reset cuando se desborda. La frecuencia de reloj es independiente del oscilador principal, ya que esta determinada por una red RC interna. Aun cuando el microcontrolador est en modo SLEEP un Reset provocado por el WDT causa que este vuelva a las condiciones normales de operacin. El control de tiempo se hace mediante los bits 0,1,2,3 del registro OPTION, puede ser desde 18 ms hasta 2 segundos. Las instrucciones CLRWDT y SEP limpian el WDT y el prescaler (si es que fue asignado al WDT) previniendo un Reset por desbordamiento. El bit TO en el registro STATUS ser puesto a 0 cuando un desbordamiento en el WDT ha ocurrido. La aplicacin es la de restablecer el microcontrolador debido fallas en la programacin o razones externas, que pudieran hacer que el programa saliera de flujo normal. Temporizador de encendido (POWER UP TIMER) Se encarga de retrasar 72ms la puesta en marcha o Reset que se produce al conectar la alimentacin, garantizando la estabilidad de la tensin aplicada. Modo de bajo consumo (SLEEP) Mediante la ejecucin de la instruccin SLEEP se puede hacer que el microcontrolador entre en un estado pasivo desactivando el oscilador principal, en este estado el microcontrolador consume muy poca potencia. Para salir de este estado basta con que se produzca un reset en cualquiera de sus formas (Reset externo, Watchdog, Interrupciones). Interrupciones El PIC16F84 posee cuatro fuente de interrupcin, estas pueden ser deshabilitadas en forma global o en forma individual por medio del registro INTCON. Cuando una interrupcin es atendida, el bit GIE se coloca en cero automticamente para evitar interferencias con otras interrupciones que se pudieran presentar, la direccin de retorno se coloca en la pila y el PC se carga con la direccin 04H. En la rutina de servicio se puede determinar la fuente de la interrupcin examinando las banderas de interrupcin. La bandera respectiva se debe de colocar por software en cero antes de regresar de la interrupcin para evitar que se detecte la misma interrupcin o o o o Interrupcin externa en el pin RB0/INT. Finalizacin del temporizador/contador TMR0 Finalizacin de escritura en la EEPROM de datos. Cambio de nivel en los pines RB4 a RB7.888
Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS 1. Interrupcin externa por el pin RB0/INT Ocurre cuando un impulso vlido aparece en el pin RB0/INT. Se puede configurar para responder a flanco de subida o de bajada. La bandera INTF debe ser borrada por la rutina de servicio de interrupcin (ISR) para impedir un ciclo infinito. 2. Interrupcin por desbordamiento de TMR0 Ocurre cuando hay un cambio en TMR0 de FF H a 00 H, la bandera T0IF se pone a 1. La bandera T0IF debe ser borrada por la ISR para impedir un ciclo infinito. 3. Interrupcin al cambio en los bits 7 a 4 de puerto B Ocurre cuando hay un cambio de estado en los pines del 7 al 4 del puertoB. Esto va a ser vlido nicamente para los pines que estn configurados como entradas. La bandera RBIF debe ser borrada por la ISR para impedir un ciclo infinito. 4. Interrupcin al completar la escritura en la EEPROM de datos. Ocurre cuando se completa el ciclo de escritura en la EEPROM de datos. La bandera EEIF debe ser borrada por la ISR para impedir un ciclo infinito. MEMORIA DE DATOS EEPROM Es una memoria EEPROM de 64 localidades (0H a 3FH) de 8 bits cada, con un numero de ciclos de borrado/escritura de 1000 000. No se encuentra mapeado en ningn banco, y para acceder a las localidades se emplean los registros EEADR, que debe contener la direccin de la posicin de la EEPROM a ser accesada, y el registro EEDATA, que debe contener el dato de 8 bits que se va a escribir o que fue leido, EECON1 el cual maneja las operaciones de lectura/escritura y el EECON2 que no es un registro fsico, pero es necesario para realizar las operaciones de escritura. El tiempo de lectura es de un ciclo de reloj de instrucciones, pero el de escritura tiene un tiempo nominal de 10 ms sujeto a variaciones de temperatura y voltaje. En el proceso de escritura automticamente se hace el borrado.

Palabra de configuracin Es una posicin reservada de la memoria de programa situada en la direccin 2007H, pertenece a el espacio de memoria especial de prueba/configuracin (2000H 3FFFH). La palabra de configuracin es accesible nicamente durante el proceso de grabacin. Al escribirse el programa de la aplicacin es necesario grabar el contenido de acuerdo con las caractersticas del sistema. Cuando se graba Cuando se programa la proteccin de cdigo el programa no se puede leer, tampoco se puede sobrescribir, evita que pueda ser accedida la EEPROM de datos y, finalmente, si se modifica el CP de 0 a 1, se borra completamente la memoria de programa.
13 CP CP CP CP CP CP CP CP CP PWRTE WDTE FOSC1 0 FOSC2

Bit 1-0: FOSC1-FOSC0 Seleccin del oscilador utilizado


Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS 00: Oscilador LP Low Power Crystal 01: Oscilador XT Crystal / Resonator 10: Oscilador HS High Speed Crystal / Resonator 11: Oscilador RC Resistor / Capacitor Bit 2: WDTE Activacin del temporizador Perro Guardin 1= Activado 0= Desactivado Bit 3: PWRTE Activacin del temporizador POWER-UP 1= Desactivado 0= Activado Bit 13 - 4: CP Proteccin del cdigo 1= No protegida la memoria de cdigo 0= Protegida. EL CONJUNTO DE INSTRUCCIONES El pic 16F84 tiene un set de 35 instrucciones de 14 bits , las cuales se enlistan a continuacin:
Mnemnico ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ f,d f,d f f,d f,d f,d OPERACIONES POR REGISTRO Operacin Cdigo de operacin Msb lsb 00 0111 dfff ffff d=0: (W) + (f) (W) d=1: (W) + (f) (f) 00 0101 dfff ffff d=0: (W) .AND. (f) (w) d=1: (W) .AND. (f) (f) 00 0001 1fff ffff 00h (f) 1Z 00 0001 0xxx xxxx 00h (W) 1 Z 00 1001 dfff ffff d=0: (/f) (w) d=1: (/f) (f) 00 0011 dfff ffff d=0: (f) - 1 (w) d=1: (f) - 1 (f) 00 1011 dfff ffff d=0: (f) - 1 (w) d=1: (f) - 1 (f) Si el resultado es 00H salta una lnea 00 1010 dfff ffff d=0: (f) + 1 (w) d=1: (f) + 1 (f) 00 1111 dfff ffff d=0: (f) + 1 (w) d=1: (f) + 1 (f) Si el resultado es 00H salta una lnea 00 0100 dfff ffff d=0: (W) .OR. (f) (w) d=1: (W) .OR. (f) (f) 00 1000 dfff ffff d=0: (f) (w) d=1: (f) (f) 00 0000 1fff ffff (W) (f) No operacin 00 0000 0xx0 0000 Rota a la izquierda a travs de carry 00 1101 dfff ffff d=0: (f) (w) d=1: (f) (f) Rota a la derecha a travs de carry 00 1100 dfff ffff d=0: (f) (w) d=1: (f) (f) 00 0010 dfff ffff d=0: (f) - (w) (w) d=1: (f) - (w) (f) 001110 dfff ffff (f[3:0]) (REG[7:4]) d=0 REG=w (f[7:4]) (REG[3:0]) d=1 REG=f 000110 dfff ffff d=0: (W) .XOR. (f) (w) d=1: (W) .XOR. (f) (f) ciclos 1 1 1 1 1 1 1 (2) 1 1 (2) 1 1 1 1 1 Estados afectados C,DC,Z Z Z Z Z Z

INCF f,d INCFSZ f,d IORWF f,d

Z Z

MOVF f,d MOVWF f NOP RLF f,d

RRF

f,d

SUBWF SWAPF

f,d f,d

1 1 1

C,DC,Z

XORWF f,d

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS


OPERACIONES POR BIT BCF BSF BTFSC BTFSS ADDLW ANDLW CALL f,b f,b f,b f,b k k k 0 (f[b]) 1 (f[b]) Probar bit b de f salta una lnea si (f[b])=0 Probar bit b de f salta una lnea si (f[b])=1 01 00bb bfff ffff 01 01bb bfff ffff 01 10bb bfff ffff 01 11bb bfff ffff 1 1 1 (2) 1 (2) 1 1 2 C,DC,Z Z

OPERACIONES CON LITERALES Y DE CONTROL 11 111x kkkk kkkk (W) + k (W) 11 1001 kkkk kkkk (W) .AND. (k) (W) 10 0kkk kkkk kkkk (PC)+ 1 TOS(STACK), k PC[10:0], 0 k 2047 (PCLATH[4:3]) PC[12:11] CLRWDT 00 0000 0110 0100 00h WDT; 1 / TO; 1 / PD GOTO k k PC[10:0]; 10 1kkk kkkk kkkk PCLATH[4:3] PC[12:11] IORLW k (w) .OR. k (w) 11 1000 kkkk kkkk MOVLW k k (w) 11 00xx kkkk kkkk RETFIE 00 0000 0000 1001 Retornar de interrupcin: TOS PC, 1 GIE RETLW k k (w); TOS PC 11 01xx kkkk kkkk RETURN 00 0000 0000 1000 Retornar de subrutina: TOS PC SLEEP 00 0000 0110 0011 Modo de bajo consumo: 00h WDT, 0 WDT prescaler, 1 /TO, 0 /PD SUBLW k k - (W) (W) 11 110x kkkk kkkk XORLW k (W) .XOR. k (W) 11 1010 kkkk kkkk Valores de operandos: 0 k 255, 0 f 127, 0 b 7, d [0,1], en saltos 0 k 2047
Para el cdigo de operacin b: direccin del bit (3 bits) para un registro de 8 bits

1 2 1 1 2 2 2 1 1 1

/TO,/PD Z

/TO,/PD C,DC,Z Z

d: destino d = 0: el resultado se almacena en w, d = 1: el resultado se almacena en f, por default d = 1. f : direccin del registro 0x00 a 0x7F x: no importa el valor. Pero los compiladores dan el valor de cero para mantener compatibilidad con los softwares. k: literal, dato constante o etiqueta

Los formatos de cdigos de operacin de acuerdo a la clasificacin de instrucciones es:


OPERACIONES POR REGISTRO OPERACIONES POR BIT

OPERACIONES CON LITERALES Y DE CONTROL

Solo para las instrucciones CALL y GOTO

Solaris Digital, derechos reservados. Mxico D.F. 2004

CURSO DE MICROCONTROLADORES PICS

EL PIC16F627

Solaris Digital, derechos reservados. Mxico D.F. 2004

S-ar putea să vă placă și