Vous êtes sur la page 1sur 58

UTILIZACIN DE LOS MICROCONTROLADORES PIC serie 16F87X MICROCHIP TECHNOLOGY

Docente: Oscar Celis

****** CEE ******* UTN - Facultad Regional Crdoba

NDICE
Arquitectura Harvard vs. Arquitectura Von Neuman Diagrama de Bloques, del Microcontrolador Mapa de Memoria Interna (RAM) Memoria de Programa Camino de los datos y Registro W Contador de Programa Stack (Pila) Registro STATUS Registros Especiales Puertos de Entrada / Salida Diagrama Lgico (PIN-OUT) Temporizador 0 Interrupciones Los Puertos Paralelos Los Temporizadores Los Modulos de Captura, Comparacin y PWM Interfaz Serie - USART El Convertidor Analgico / Digital El Temporizador WDT Escritura de un programa fuente Conjunto de Instrucciones Modos de Direccionamiento Herramientas de desarrollo Simulacin Apndice 1 Apndice 2 3 4 5 6 6 8 8 9 10 10 11 12 13 19 24 27 31 38 42 43 43 46 47 50 51 52

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 02 de 58

1.1 Arquitectura Harvard vs. Arquitectura Von Neuman


La arquitectura tradicional de computadoras y microprocesadores se basa en el esquema propuesto por John Von Neumann, en el cual la unidad central de proceso, o CPU, esta conectada a una memoria nica que contiene las instrucciones del programa y los datos (figura 1.1.1). El tamao de la unidad de datos o instrucciones esta fijado por el ancho del bus de la memoria. Es decir que un microprocesador de 8 bits, que tiene adems un bus de 8 bits que lo conecta con la memoria, deber manejar datos e instrucciones de una o ms unidades de 8 bits (bytes) de longitud. Cuando deba acceder a una instruccin o dato de ms de un byte de longitud, deber realizar ms de un acceso a la memoria. Por otro lado este bus nico limita la velocidad de operacin del microprocesador, ya que no se puede buscar de memoria una nueva instruccin, antes de que finalicen las transferencias de datos que pudieran resultar de la instruccin anterior. Es decir que las dos principales limitaciones de esta arquitectura tradicional son : a) que la longitud de las instrucciones esta limitada por la unidad de longitud de los datos, por lo tanto el microprocesador debe hacer varios accesos a memoria para buscar instrucciones complejas, b) que la velocidad de operacin (o ancho de banda de operacin) esta limitada por el efecto de cuello de botella que significa un bus nico para datos e instrucciones que impide superponer ambos tiempos de acceso.

FIG. 1.1.1 Arquitectura Von Newmann La arquitectura Harvard y sus ventajas: La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos (figura 1.1.2). Ambos buses son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instruccin Set Computer), el set de instrucciones y el bus de la memoria de programa pueden disearse de manera tal que todas las instrucciones tengan una sola posicin de memoria de programa de longitud. Adems, como los buses son independientes, el CPU puede estar accediendo a los datos para completar la ejecucin de una instruccin, y al mismo tiempo estar leyendo la prxima instruccin a ejecutar. Se puede observar claramente que las principales ventajas de esta arquitectura son:
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 03 de 58

a) que el tamao de las instrucciones no esta relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instruccin ocupe una sola posicin de memoria de programa, logrando as mayor velocidad y menor longitud de programa, b) que el tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad de operacin. Una pequea desventaja de los procesadores con arquitectura Harvard, es que deben poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran fsicamente en la memoria de programa (por ejemplo en la EPROM de un microprocesador).

FIG. 1.1.2 Arquitectura Harvard Los microcontroladores PIC 16C5X, 16F87X, 16CXX y 17CXX poseen arquitectura Harvard, con una memoria de datos de 8 bits, y una memoria de programa que, segn el modelo, puede ser de 12 bits para los 16C5X, 14 bits para los 16CXX y 16 bits para los 17CXX.

1.2 Diagrama de bloques


13 FLA S H P ro g ra m M e m o ry P ro g ra m C o u n te r D a ta B u s 8 P O R TA R R R R R R PO RTB R R R R R R R R R R R R R R R R A 0 /A N 0 A 1 /A N 1 A 2 /A N 2 A 3 /A N 3 /V R E F A 4 /T 0 C K I A 5 /A N 4 /S S B 0 /IN T B1 B2 B 3 /P G M B4 B5 B 6 /P G C B 7 /P G D C C C C C C C C 0 /T 1 O S O /T 1 C K I 1 /T 1 O S I/C C P 2 2 /C C P 1 3 /S C K /S C L 4 /S D I/S D A 5 /S D O 6 /T X /C K 7 /R X /D T RAM F ile R e g is te rs R A M A d d r (1 ) 9

8 L e v e l S ta c k (1 3 -b it)

P ro g ra m Bus

14 In s tru c tio n re g D ire c t A d d r 7

A ddr M U X 8 In d ire c t A ddr

F S R re g 8 3 S TA T U S re g PO RTC

P o w e r-u p T im e r In s tru c tio n D ecode & C o n tro l T im in g G e n e ra tio n O S C 1 /C L K IN O S C 2 /C L K O U T O s c illa to r S ta r t-u p T im e r P o w e r-o n R eset W a tc h d o g T im e r B ro w n -o u t R eset In -C irc u it D e bugge r L o w -V o lta g e P ro g ra m m in g 8

MUX

A LU PO RTD W re g

R D 7 /P S P 7 :R D 0 /P S P 0

P a ra lle l S la v e P o r t

PO RTE R E 0 /A N 5 /R D R E 1 /A N 6 /W R

M C LR

VDD, VSS

R E 2 /A N 7 /C S

T im e r0

T im e r1

T im e r2

1 0 -b it A /D

D ev ic e P IC 1 6 F 8 7 4 USART P IC 1 6 F 8 7 7

P ro g ra m FLA SH 4K 8K

D a ta M e m o ry 1 9 2 B y te s 3 6 8 B y te s

D a t a E E P RO M 1 2 8 B y te s 2 5 6 B y te s

D a ta E E P R O M

C C P 1 ,2

S y n c h ro n o u s S e ria l P o r t

N o te 1 :

H ig h e r o rd e r b its a re fro m th e S TA T U S re g is te r.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 04 de 58

1.3 Mapas de memoria Memoria Interna (RAM)


Organizacin La memoria interna de datos, tambin llamada archivo de registros (register file), esta dividida en dos grupos: los registros especiales, y los registros de propsito generales. Los primeros ocupan las primeras 32 posiciones de los cuatro bancos de memoria RAM. Entre los registros especiales se encuentran el registro de estado (STATUS), los registros de datos de los cinco puertos de entrada salida (Puerto A, Puerto B, Puerto C, Puerto D, Puerto E), los 8 bits menos significativos del program counter (PC), los registros de los timers, TMR0, TMR1L, TMR1H, TMR2, un registro puntero llamado File Select Register (FSR). La posicin 00 no contiene ningn registro en especial y es utilizada en el mecanismo de direccionamiento indirecto. Como se observa este microcontrolador posee cuatro bancos de memoria y pueden seleccionarse desde el registro STATUS.
F ile A d d re s s In d ire c t a d d r. (*) TMR0 PC L S TA T U S FSR P O R TA PO RTB PO RTC P O R T D (1 ) P O R T E (1 ) P C L AT H IN T C O N P IR 1 P IR 2 T M R 1L T M R 1H T 1C O N TMR2 T 2C O N S S PBU F SSPC O N C C P R 1L C C P R 1H C C P 1C O N R C S TA TXREG RC REG C C P R 2L C C P R 2H C C P 2C O N ADRESH ADC ON0 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0A h 0B h 0C h 0D h 0E h 0F h 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1A h 1B h 1C h 1D h 1E h 1F h 20h In d ire c t a d d r. (*) O P T IO N _R E G PC L S TA T U S FSR T R IS A T R IS B T R IS C T R IS D (1 ) T R IS E (1 ) P C L AT H IN T C O N P IE 1 P IE 2 PC O N 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8A h 8B h 8C h 8D h 8E h 8F h 90h 91h 92h 93h 94h 95h 96h 97h 98h 99h 9A h 9B h 9C h 9D h 9E h 9F h A 0h G e n e ra l P u rp o s e R e g is te r 8 0 B y te s accesses 7 0 h -7 F h Bank 1 G e n e ra l P u rp o s e R e g is te r 8 0 B y te s accesses 7 0 h -7 F h Bank 2 In d ire c t a d d r. (*) TMR0 PC L S TA T U S FSR PO RTB 100h 101h 102h 103h 104h 105h 106h 107h 108h 109h 10A h 10B h 10C h 10D h 10E h 10F h 110h 111h 112h 113h 114h 115h 116h 117h 118h 119h 11A h 11B h 11C h 11D h 11E h 11F h 120h In d ire c t a d d r. (*) O P T IO N _R E G PC L S TA T U S FSR T R IS B 180h 181h 182h 183h 184h 185h 186h 187h 188h 189h 18A h 18B h 18C h 18D h 18E h 18F h 190h 191h 192h 193h 194h 195h 196h 197h 198h 199h 19A h 19B h 19C h 19D h 19E h 19F h 1A 0h G e n e ra l P u rp o s e R e g is te r 8 0 B y te s accesses 70h - 7F h Bank 3

P C L AT H IN T C O N E E D A TA EEADR E E D AT H EEADRH

P C L AT H IN T C O N EEC ON1 EEC ON2 R e s e rv e d (2 ) R e s e rv e d (2 )

SSPC O N2 PR 2 S S PA D D S S P S TA T

T X S TA S PBR G

G e n e ra l P u rp o s e R e g is te r 1 6 B y te s

G e n e ra l P u rp o s e R e g is te r 1 6 B y te s

ADRESL ADC ON1

G e n e ra l P u rp o s e R e g is te r 9 6 B y te s

EFh F 0h FFh

16F h 170h 17F h

1E F h 1F 0h 1F F h

Bank 0

7F h

U n im p le m e n te d d a ta m e m o ry lo c a tio n s , re a d a s '0 '. * N o t a p h y s ic a l re g is te r. N o te 1 : T h e s e re g is te rs a re n o t im p le m e n te d o n 2 8 -p in d e v ic e s . 2 : T h e s e re g is te rs a re re s e rv e d , m a in ta in th e s e re g is te rs c le a r.

FIG. 1.3.1 Organizacin de la memoria Interna (RAM) en la familia PIC16F87X


La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 05 de 58

Memoria de Programa
Organizacin La memoria de programa, que en los PIC16F87X puede ser de 2K, 4K u 8K instrucciones, debe ser considerada a los efectos de la programacin, como compuesta por secciones o pginas de 2K posiciones. Esto se debe, como se ver, a las limitaciones de direccionamiento de las instrucciones de salto

FIG. 1.3.2 Organizacin de la memoria de programa en la familia PIC16F87X

1.4 Registros de funciones especiales Camino de los datos y registro W


La figura 1.4.2 representa un diagrama simplificado de la arquitectura interna del camino de los datos en el CPU de los microcontroladores PIC. Este diagrama puede no representar con exactitud el circuito interno de estos microcontroladores, pero es exacto y claro desde la ptica del programador. La figura 1.4.1 representa el mismo diagrama para un microprocesador ficticio de arquitectura tradicional. Se puede observar que la principal diferencia entre ambos radica en la ubicacin del registro de trabajo, que para los PIC's se denomina W (Working Register), y para los tradicionales es el Acumulador (A).

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 06 de 58

Figura 1.4.1 En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La salida del acumulador esta conectada a una de las entradas de la Unidad Aritmtica y Lgica (ALU), y por lo tanto ste es siempre uno de los dos operandos de cualquier instruccin. Por convencin, las instrucciones de simple operando (borrar, incrementar, decrementar, complementar), actan sobre el acumulador. La salida de la ALU va solamente a la entrada del acumulador, por lo tanto el resultado de cualquier operacin siempre quedara en este registro. Para operar sobre un dato de memoria, luego realizar la operacin siempre hay que mover el acumulador a la memoria con una instruccin adicional. En los microcontroladores PIC, la salida de la ALU va al registro W y tambin a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. En las instrucciones de doble operando, uno de los dos datos siempre debe estar en el registro W, como ocurra en el modelo tradicional con el acumulador. En las instrucciones de simple operando el dato en este caso se toma de la memoria (tambin por convencin). La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instruccin que opere con la memoria, ya sea de simple o doble operando, puede dejarse en la misma posicin de memoria o en el registro W, segn se seleccione con un bit de la misma instruccin. Las operaciones con constantes provenientes de la memoria de programa (literales) se realizan solo sobre el registro W.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 07 de 58

En la memoria de datos de los PIC's se encuentran ubicados casi todos los registros de control del microprocesador y sus perifricos autocontenidos, y tambin las posiciones de memoria de usos generales. Contador de Programa Este registro, normalmente denominado PC, es totalmente equivalente al de todos los microprocesadores y contiene la direccin de la prxima instruccin a ejecutar. Se incrementa automticamente al ejecutar cada instruccin, de manera que la secuencia natural de ejecucin del programa es lineal, una instruccin despus de la otra. Algunas instrucciones que llamaremos de control, cambian el contenido del PC alterando la secuencia lineal de ejecucin. Dentro de estas instrucciones se encuentran el GOTO y el CALL que permiten cargar en forma directa un valor constante en el PC haciendo que el programa salte a cualquier posicin de la memoria. Otras instrucciones de control son los SKIP o "salteos" condicionales, que producen un incremento adicional del PC si se cumple una condicin especifica, haciendo que el programa saltee, sin ejecutar, la instruccin siguiente. El PC es un registro de 13 bits en los 16F87X, lo que permite direccionar 8192 posiciones de memoria de programa. Al resetearse el microprocesador, todos los bits del PC toman valor 0, de manera que la direccin de arranque del programa es siempre la primera posicin de memoria de programa. En esta posicin se deber poner la primera instruccin del programa. A diferencia de la mayora de los microprocesadores convencionales, el PC es tambin accesible al programador como registro de memoria interna de datos, en la posicin de 02. Es decir que cualquier instruccin comn que opere sobre registros puede ser utilizada para alterar el PC y desviar la ejecucin del programa. El uso indiscriminado de este tipo de instrucciones complica el programa y puede ser muy peligroso, ya que puede producir comportamientos difciles de predecir. Sin embargo, algunas de esta instrucciones utilizadas con cierto mtodo, pueden ser muy tiles para implementar poderosas estructuras de control tales como el goto computado. Como el microprocesador opera con datos de 8 bits, y la memoria de datos es tambin de 8 bits, estas instrucciones solo pueden leer o modificar los bits 0 a 7 del PC. Stack En los microcontroladores PIC el stack es una memoria interna dedicada, de tamao limitado, separada de las memorias de datos y de programa, inaccesible al programador, y organizada en forma de pila, que es utilizada solamente, y en forma automtica, para guardar las direcciones de retorno de subrrutinas e interrupciones. Cada posicin es de 13 bits y permite guardar una copia completa del PC. Como en toda memoria tipo pila, los datos son accedidos de manera tal que el primero que entra es el ultimo que sale. En los 16F87X el stack es de solo ocho posiciones, mientras que en los 17CXX es de 16 posiciones. Esto representa, en cierta medida, una limitacin de estos microcontroladores, ya que no permite hacer uso intensivo del anidamiento de subrutinas. En los 16F87X, solo se pueden anidar ocho niveles de subrutinas, es decir que una subrutina que es llamada desde el programa principal, puede a su vez llamar a otra subrutina, hasta un mximo de 8, siempre que no existan interrupciones habilitadas, en tal caso debern disminuir la cantidades de rutinas anidadas en el main, porque de lo contrario se desbordar el Stack.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 08 de 58

Esto de hecho representa una traba para el programador y adems parece impedir o dificultar la programacin estructurada, sin embargo es una buena solucin de compromiso ya que estos microcontroladores estn diseados para aplicaciones de alta velocidad en tiempo real, en las que el overhead (demoras adicionales) que ocasiona un excesivo anidamiento de subrutinas es inaceptable. Por otra parte existen tcnicas de organizacin del programa que permiten mantener la claridad de la programacin estructurada, sin necesidad de utilizar tantas subrutinas anidadas. Como ya se menciono anteriormente, el stack y el puntero interno que lo direcciona, son invisibles para el programador, solo se los accede automticamente para guardar o rescatar las direcciones de programa cuando se ejecutan las instrucciones de llamada o retorno de subrutinas, o cuando se produce una interrupcin o se ejecuta una instruccin de retorno de ella. Registro de Estado del Procesador (STATUS - Direccin 0x03, 0x83, 0x103, 0x183) La palabra de estado del procesador contiene los tres bits de estado de la ALU (C, DC y Z), y otros bits que por comodidad se incluyeron en este registro.
R /W -0 IR P b it7 R /W -0 R P1 R /W -0 R P0 R -1 TO R -1 PD R /W -x Z R /W -x DC R /W -x C b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7:

IR P : R e g is te r B a n k S e le c t b it (u s e d fo r in d ire c t a d d re s s in g ) 1 = B a n k 2, 3 (100h - 1F F h ) 0 = B a n k 0, 1 (00h - F F h )

b it 6-5: R P 1: R P 0: R e g is te r B a n k S e le c t b its (u s e d fo r d ire c t a d d re s s in g ) 11 = B a n k 3 (180h - 1F F h ) 10 = B a n k 2 (100h - 17F h ) 01 = B a n k 1 (80h - F F h ) 00 = B a n k 0 (00h - 7F h ) E a c h b a n k is 128 b y te s b it 4: T O : T im e -o u t b it 1 = A fte r p o w e r-u p, CLRWDT in s tru c tio n , o r SLEEP in s tru c tio n 0 = A W D T tim e -o u t o c c u rre d P D : P o w e r-d o w n b it 1 = A fte r p o w e r-u p o r b y th e CLRWDT in s tru c tio n 0 = B y e x e c u tio n o f th e SLEEP in s tru c tio n Z : Z e ro b it 1 = T h e re s u lt o f a n a rith m e tic o r lo g ic o p e ra tio n is ze ro 0 = T h e re s u lt o f a n a rith m e tic o r lo g ic o p e ra tio n is n o t z e ro D C : D ig it c a rry /b o rro w b it (ADDWF, ADDLW,SUBLW,SUBWF in s tru c tio n s ) (fo r b o rro w th e p o la rity is re v e rs e d ) 1 = A c a rry -o u t fro m th e 4th lo w o rd e r b it o f th e re s u lt o c c u rre d 0 = N o c a rry -o u t fro m th e 4th lo w o rd e r b it o f th e re s u lt C : C a rry /b o rro w b it (ADDWF, ADDLW,SUBLW,SUBWF in s tru c tio n s ) 1 = A c a rry -o u t fro m th e m o s t s ig n ic a n t b it o f th e re s u lt o c c u rre d 0 = N o c a rry -o u t fro m th e m o s t s ig n ic a n t b it o f th e re s u lt o c c u rre d N o te : F o r b o rro w th e p o la rity is re v e rs e d . A s u b tra c tio n is e x e c u te d b y a d d in g th e tw o s c o m p le m e n t o f th e s e c o n d o p e ra n d . F o r ro ta te (RRF, RLF) in s tru c tio n s , th is b it is lo a d e d w ith e ith e r th e h ig h o r lo w o rd e r b it o f th e s o u rc e re g is te r.

b it 3:

b it 2:

b it 1:

b it 0:

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 09 de 58

REGISTROS ESPECIALES IMPORTANTES Las primeras posiciones del rea de datos estn reservadas para alojar registros de propsito especial, quedando las restantes libres para contener los datos u operandos que se desee (registros de propsito general). El registro INDF que ocupa la posicin 0 no est implementando fsicamente y, como se ha explicado, se le referencia en el direccionamiento indirecto de datos aunque se utiliza el contenido de FSR. En la direccin 0x01 esta el registro TMR0 (Temporizador) que puede ser ledo y escrito como cualquier otro registro. Puede incrementar su valor con una seal externa aplicada al pin T0CKI o mediante el oscilador interno. El PC ocupa la posicin 2 del rea de datos en donde se halla el registro PCL al que se aaden 5 bits del registro PCLATH que se encuentra en pla posicin 0x0A. El registro de Estado ocupa la posicin 3 y entre sus bits se encuentran los sealizadores C, DC y Z y el resto de los bits vistos anteriormente. FSR se ubica en la direccin 4 y puede usarse para contener las direccin del dato en las instrucciones con direccionamiento indirecto y tambin para guardar operandos. Los registros que ocupan las posiciones 5, 6, 7, 8 y 9 soportan los Puertos A, B, C, D y E de E/S. Pueden ser ledos y escritos como cualquier otro registro y manejan los valores de los bits que entran y salen por los pines de E/S del microcontrolador.

1.5 Puertos de entrada / salida


Los microprocesadores PIC16F87X tienen tres o cinco puertos de entrada/salida paralelo de usos generales llamados Puerto A, Puerto B, Puerto C, Puerto D y Puerto E. El Puerto A es de cinco bits, el Puerto E es de tres bits y los dems son de 8 bits cada uno. El Puerto D y E solamente esta disponible en el 16F874 y el 16F877. Circuito equivalente Cada puerto tiene, particularidades en el diseo de su celda de entrada / salida, segn los perifricos asociados, etc. En la siguiente figura podemos ver en forma reducida un grfico tpico, con los elementos comunes para todos los puertos.

Circuito equivalente de puerto I/O


La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 10 de 58

El latch L1 corresponde a un bit del registro de datos del puerto, mientras que L2 es un bit del registro de control de tristate del mismo. B1 es el buffer tristate de salida que tiene capacidad de entregar 20 mA y drenar 25 mA. B1 es controlado por L2. Si L2 tiene cargado un "1", B1 se encuentra en tri-state, es decir con la salida desconectada (en alta impedancia), y el puerto puede ser usado como entrada. Si L2 tiene cargado un "0", la salida de B1 esta conectada (baja impedancia) y el puerto esta en modo de salida. B2 es el buffer de entrada, es decir el que pone los datos en el bus interno del microcontrolador cuando se lee el registro de datos del puerto. Puede verse que el dato ledo es directamente el estado del pin de entrada

1.6 Diagrama lgico


Diagrama lgico para los microcontroladores PIC16F87X (Pin-Out)
P D IP
M C L R /V P P /T H V R A 0/A N 0 R A 1/A N 1 R A 2/A N 2/V R E F R A 3/A N 3/V R E F + R A 4/T 0C K I R A 5/A N 4/S S R E 0/R D /A N 5 R E 1/W R /A N 6 R E 2/C S /A N 7 VDD VSS O S C 1/C L K IN O S C 2/C L K O U T R C 0/T 1O S O /T 1C K I R C 1/T 1O S I/C C P 2 R C 2/C C P 1 R C 3/S C K /S C L R D 0/P S P 0 R D 1/P S P 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 R B 7/P G D R B 6/P G C R B5 R B4 R B 3/P G M R B2 R B1 R B 0/IN T VDD VSS R D 7/P S P 7 R D 6/P S P 6 R D 5/P S P 5 R D 4/P S P 4 R C 7/R X /D T R C 6/T X /C K R C 5/S D O R C 4/S D I/S D A R D 3/P S P 3 R D 2/P S P 2

D IP , S O IC
M C L R /V P P /T H V R A 0/A N 0 R A 1/A N 1 R A 2/A N 2/V R E F R A 3/A N 3/V R E F + R A 4/T 0C K I R A 5/A N 4/S S VSS O S C 1/C L K IN O S C 2/C L K O U T R C 0/T 1O S O /T 1C K I R C 1/T 1O S I/C C P 2 R C 2/C C P 1 R C 3/S C K /S C L 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 R B 7/P G D R B 6/P G C R B5 R B4 R B 3/P G M R B2 R B1 R B 0/IN T VDD VSS R C 7/R X /D T R C 6/T X /C K R C 5/S D O R C 4/S D I/S D A

R A 3/A N 3/V R E F + R A 2/A N 2/V R E F R A 1/A N 1 R A 0/A N 0 M C L R /V P P /T H V NC R B 7/P G D R B 6/P G C R B5 R B4 NC

PLC C

Q FP

6 5 4 3 2 1 44 43 42 41 40

44 43 42 41 40 39 38 37 36 35 34

R C 6 /T X /C K R C 5 /S D O R C 4 /S D I/S D A R D 3 /P S P 3 R D 2 /P S P 2 R D 1 /P S P 1 R D 0 /P S P 0 R C 3 /S C K /S C L R C 2 /C C P 1 R C 1 /T 1 O S I/C C P 2 NC

P IC 16F 877/874

PIC16F876/873

18 19 20 21 22 23 24 25 26 27 282

R A 4/T 0C K I R A 5/A N 4/S S R E 0/R D /A N 5 R E 1/W R /A N 6 R E 2/C S /A N 7 VDD VSS O S C 1/C L K IN O S C 2/C L K O U T R C 0/T 1O S O /T 1C K 1 NC

7 8 9 10 11 12 13 14 15 16 17

P IC 16F 877 P IC 16F 874

39 38 37 36 35 34 33 32 31 30 9

R B 3/P G M R B2 R B1 R B 0/IN T VDD VSS R D 7/P S P 7 R D 6/P S P 6 R D 5/P S P 5 R D 4/P S P 4 R C 7/R X /D T

R C 1/T 1O S I/C C P 2 R C 2/C C P 1 R C 3/S C K /S C L R D 0/P S P 0 R D 1/P S P 1 R D 2/P S P 2 R D 3/P S P 3 R C 4/S D I/S D A R C 5/S D O R C 6/T X /C K NC

NC NC R B4 R B5 R B 6 /P G C R B 7 /P G D M C L R /V P P /T H V R A 0 /A N 0 R A 1 /A N 1 R A 2 /A N 2 /V R E F R A 3 /A N 3 /V R E F +

12 13 14 15 16 17 18 19 20 21 22

R C 7/R X /D T R D 4/P S P 4 R D 5/P S P 5 R D 6/P S P 6 R D 7/P S P 7 VSS VDD R B 0/IN T R B1 R B2 R B 3/P G M

1 2 3 4 5 6 7 8 9 10 11

P IC 16F 877 P IC 16F 874

33 32 31 30 29 28 27 26 25 24 23

NC R C 0/T 1O S O /T 1C K I O S C 2/C L K O U T O S C 1/C L K IN VSS VDD R E 2/A N 7/C S R E 1/A N 6/W R R E 0/A N 5/R D R A 5/A N 4 R A 4/T 0C K I

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 11 de 58

1.7 Temporizador 0 / Contador (TMR0)


Este dispositivo es uno de los tres que posee esta familia de microcontroladores, llamado Real Time Clock / Counter, es bsicamente un contador de 8 bits, constituido por el registro operacional TMR0 que se encuentra en la posicin 01 de la memoria de datos. Este registro puede usarse para contar eventos externos por medio de un pin de entrada especial (modo contador) o para contar pulsos internos de reloj de frecuencia constante (modo timer). Adems, en cualquiera de los dos modos, se puede insertar un prescaler, es decir un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32, 64, 128 o 256. Este divisor puede ser utilizado alternativamente como prescaler del TMR0 o como postscaler del Watch Dog Timer, segn se lo programe. Para su programacin se dispone de dos registros: el TMR0 ya mencionado y el registro OPTION. Este registro contiene los bits necesarios para seleccionar modo contador o modo timer, flanco de conteo en modo contador, prescaler para TMR0 o para WDT y constante de divisin del prescaler, segn el siguiente esquema:
R /W -1 R BPU b it7 R /W -1 IN T E D G R /W -1 T 0C S R /W -1 T 0S E R /W -1 PSA R /W -1 PS2 R /W -1 PS1 R /W -1 PS0 b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7:

R B P U : P O R T B P u ll-u p E n a b le b it 1 = P O R T B p u ll-u p s a re d is a b le d 0 = P O R T B p u ll-u p s a re e n a b le d b y in d iv id u a l p o rt la tc h v a lu e s IN T E D G : In te rru p t E d g e S e le c t b it 1 = In te rru p t o n ris in g e d g e o f R B 0/IN T p in 0 = In te rru p t o n fa llin g e d g e o f R B 0/IN T p in T 0C S : T M R 0 C lo c k S o u rc e S e le c t b it 1 = Tra n s itio n o n R A 4/T 0C K I p in 0 = In te rn a l in s tru c tio n c y c le c lo c k (C L K O U T ) T 0S E : T M R 0 S o u rc e E d g e S e le c t b it 1 = In c re m e n t o n h ig h -to -lo w tra n s itio n o n R A 4/T 0C K I p in 0 = In c re m e n t o n lo w -to -h ig h tra n s itio n o n R A 4/T 0C K I p in P S A : P re s c a le r A s s ig n m e n t b it 1 = P re s c a le r is a s s ig n e d to th e W D T 0 = P re s c a le r is a s s ig n e d to th e T im e r0 m o d u le
B it V a lu e 000 001 010 011 100 101 110 111 T M R 0 R a te 1 1 1 1 1 1 1 1 : : : : : : : : 2 4 8 16 32 64 128 256 W D T R a te 1 1 1 1 1 1 1 1 : : : : : : : : 1 2 4 8 16 32 64 128

b it 6:

b it 5:

b it 4:

b it 3:

b it 2-0: P S 2: P S 0: P re s c a le r R a te S e le c t b its

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 12 de 58

Circuito equivalente del TMR0 y el prescaler.


D a ta b u s F o s c /4 0 1 1 R A 4/T 0C K I p in P ro g ra m m a ble P re s c a le r T 0S E 3 P S 2, P S 1, P S 0 T 0C S PSA S e t in te rru p t a g b it T 0IF o n o v e ro w 0 P S out S y n c w ith In te rn a l c lo c k s (2 c y c le d e la y ) TMR0 P S out 8

N o te 1:

T 0C S , T 0S E , P S A , P S 2:P S 0 (O P T IO N _R E G <5:0>).

2: T h e p re s c a le r is s h a re d w ith W a tc h d o g T im e r (re fe r to F ig u re 5-2 fo r d e ta ile d b lo c k d ia g ra m ).

En el esquema se puede observar claramente como operan los bits de configuracin T0SE, T0CS y PSA, en cualquiera de sus combinaciones. Se observa adems que en la entrada del contador TMR0 hay un circuito de sincronizacin que introduce una demora de dos ciclos del clock de instrucciones (Fosc. / 4). Al escribir sobre el TMR0 automticamente se resetea este circuito, por lo tanto solo se incrementara dos ciclos despus. El prescaler es un contador asincrnico de 8 bits ms un multiplexor 8 a 1 comandado por los bits PS0 a PS2, que permite seleccionar como salida a cualquiera de los bits del contador. Al escribir sobre el TMR0, si este esta programado para operar con prescaler (PSA=0), se borra automticamente el prescaler. Las instrucciones CLRWDT y SLEEP borran el prescaler, si este esta programado para operar como postscaler del watch dog timer (PSA=1).

1.8 Interrupciones
Los 16F87X tienen la posibilidad de contar con sistema de interrupciones. Este sistema consiste en un mecanismo por el cual un evento interno o externo, asincrnico respecto del programa, puede interrumpir la ejecucin de ste produciendo automticamente un salto a una subrutina de atencin, de manera que pueda atender inmediatamente el evento, y retomar luego la ejecucin del programa exactamente en donde estaba al momento de ser interrumpido. Este mecanismo es muy til por ejemplo para el manejo de timers o rutinas que deben repetirse peridicamente (refresh de display, antirebote de teclado, etc.), deteccin de pulsos externos, recepcin de datos, etc. Existen catorce fuentes de interrupcin en los PIC16F87X. Funcionamiento En los 16F87X las interrupciones se comportan casi exactamente igual que las subrutinas. Desde el punto de vista del control del programa, al producirse una interrupcin se produce el mismo efecto que ocurrira si el programa tuviese un CALL 0004h en el punto en que se produjo la interrupcin. En uno de los registros de control del sistema de interrupciones existe un bit de habilitacin general de interrupciones GIE, que debe ser programado en 1 para que las interrupciones puedan actuar. Al producirse una interrupcin, este bit se borra automticamente para evitar nuevas interrupciones. La instruccin RETFIE que se utiliza al final de la rutina de interrupcin, es idntica a un retorno de subrutina, salvo que adems coloca en uno automticamente el bit GIE,
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 13 de 58

volviendo a habilitar las interrupciones. Dentro de la rutina de interrupcin, el programa deber probar el estado de los flags de interrupcin de cada una de las fuentes habilitadas, para detectar cual fue la que causo la interrupcin y as decidir que accin tomar.
E E IF E E IE P S P IF P S P IE A D IF A D IE R C IF R C IE T X IF T X IE S S P IF S S P IE C C P 1 IF C C P 1 IE T M R 2 IF T M R 2 IE T M R 1 IF T M R 1 IE C C P 2 IF C C P 2 IE B C L IF B C L IE T 0 IF T 0 IE IN T F IN T E R B IF R B IE P E IE G IE W a k e -u p (If in S L E E P m o d e )

In te rru p t to C P U

T h e fo llo w in g ta b le s h o w s w h ic h d e v ic e s h a v e w h ic h in te rru p ts .
D ev ic e P IC 1 6 F 8 7 6 /8 7 3 P IC 1 6 F 8 7 7 /8 7 4 T 0 IF Yes Yes IN T F Yes Yes R B IF Yes Yes P S P IF Yes A D IF Yes Yes R C IF Yes Yes T X IF Yes Yes S S P IF Yes Yes C C P 1 IF Yes Yes T M R 2 IF Yes Yes T M R 1 IF Yes Yes E E IF Yes Yes B C L IF Yes Yes C C P 2 IF Yes Yes

Lgica de interrupciones para los controladores PIC16F8X Fuentes La seal que produce la interrupcin es en realidad una sola, que resulta de la combinacin de todas las fuentes posibles y de los bits de habilitacin. Existen dos grupos de fuentes, unas que se habilitan con solo colocar en uno el bit GIE, y otras que adems necesitan que este puesto a uno el bit PEIE. Adems, cada fuente de interrupciones tiene su respectivo bit de habilitacin individual. REGISTRO INTCON (DIRECCIONES 0B Y 8B) Este registro sirve para el control global de las interrupciones y para indicar la procedencia de algunas a travs de los bits de estado. El PIC 16F87X dispone de doce fuentes de potenciales interrupciones: Cada bit del registro INTCON tiene un significado particular, que es:

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 14 de 58

Registro INTCON - Direccin 0x0B, 0x8B, 0x10B, 0x18B


R /W -0 G IE b it7 R /W -0 P E IE R /W -0 T 0IE R /W -0 IN T E R /W -0 R B IE R /W -0 T 0IF R /W -0 IN T F R /W -x R B IF b it0 R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7:

G IE : G lo b a l In te rru p t E n a b le b it 1 = E n a b le s a ll u n -m a s k e d in te rru p ts 0 = D is a b le s a ll in te rru p ts P E IE : P e rip h e ra l In te rru p t E n a b le b it 1 = E n a b le s a ll u n -m a s k e d p e rip h e ra l in te rru p ts 0 = D is a b le s a ll p e rip h e ra l in te rru p ts T 0IE : T M R 0 O v e ro w In te rru p t E n a b le b it 1 = E n a b le s th e T M R 0 in te rru p t 0 = D is a b le s th e T M R 0 in te rru p t IN T E : R B 0/IN T E x te rn a l In te rru p t E n a b le b it 1 = E n a b le s th e R B 0/IN T e x te rn a l in te rru p t 0 = D is a b le s th e R B 0/IN T e x te rn a l in te rru p t R B IE : R B P o rt C h a n g e In te rru p t E n a b le b it 1 = E n a b le s th e R B p o rt c h a n g e in te rru p t 0 = D is a b le s th e R B p o rt c h a n g e in te rru p t T 0IF : T M R 0 O v e ro w In te rru p t F la g b it 1 = T M R 0 re g is te r h a s o v e ro w e d (m u s t b e c le a re d in s o ftw a re ) 0 = T M R 0 re g is te r d id n o t o v e ro w IN T F : R B 0/IN T E x te rn a l In te rru p t F la g b it 1 = T h e R B 0/IN T e x te rn a l in te rru p t o c c u rre d (m u s t b e c le a re d in s o ftw a re ) 0 = T h e R B 0/IN T e x te rn a l in te rru p t d id n o t o c c u r R B IF : R B P o rt C h a n g e In te rru p t F la g b it 1 = A t le a s t o n e o f th e R B 7:R B 4 p in s c h a n g e d s ta te (m u s t b e c le a re d in s o ftw a re ) 0 = N o n e o f th e R B 7:R B 4 p in s h a v e c h a n g e d s ta te

b it 6:

b it 5:

b it 4:

b it 3:

b it 2:

b it 1:

b it 0:

Debemos hacer algunos comentarios sobre la gestin de los bits de este registro. En primer lugar, cada indicador de interrupcin individual (RBIF, INTF, etc.) se debe poner a 0 mediante software en el programa de tratamiento de la interrupcin correspondiente. Como hemos visto en la figura 1.3.2, en el PIC16F87X slo hay disponible un vector de interrupcin situado en la direccin 0004. A dicho programa de interrupcin le corresponde comprobar estos bits para saber cul es el origen de la interrupcin. Cuando llega una interrupcin, el PIC pone automticamente a 0 el bit GIE, de forma que no se perturbe el tratamiento de la interrupcin en curso por otras interrupciones eventuales. Este bits se pone automticamente a 1 al finalizar el programa de interrupcin cuando se ejecuta la instruccin RETFIE. Por ltimo, los bits de indicacin de interrupcin permanecen funcionales incluso cuando las interrupciones correspondientes no se autorizan. Debido a la incorporacin de una cantidad importante de perifricos dentro de el PIC que se est analizando, es necesario contar con mas registros dedicados a configurar las interrupciones, estos son PIR1, PIE1, PIR2 y PIE2.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 15 de 58

Registro PIE1 - Direccin 0x8C

R /W -0 P S P IE (1) b it7

R /W -0 A D IE

R /W -0 R C IE

R /W -0 T X IE

R /W -0 S S P IE

R /W -0 C C P 1IE

R /W -0 T M R 2IE

R /W -0 T M R 1IE b it0 R = R e a d a ble b it W = W rita ble b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7:

P S P IE (1): P a ra lle l S lave P o rt R e a d /W rite In te rru p t E n a ble b it 1 = E n a ble s th e P S P re a d /w rite in te rru p t 0 = D is a ble s th e P S P re a d /w rite in te rru p t A D IE : A /D C o nve rte r In te rru p t E n a ble b it 1 = E n a ble s th e A /D c o nve rte r in te rru p t 0 = D is a ble s th e A /D c o nve rte r in te rru p t R C IE : U S A R T R e c e ive In te rru p t E n a ble b it 1 = E n a ble s th e U S A R T re c e ive in te rru p t 0 = D is a ble s th e U S A R T re c e ive in te rru p t T X IE : U S A R T Tra n s m it In te rru p t E n a ble b it 1 = E n a ble s th e U S A R T tra n s m it in te rru p t 0 = D is a ble s th e U S A R T tra n s m it in te rru p t S S P IE : S y n c h ro n o u s S e ria l P o rt In te rru p t E n a ble b it 1 = E n a ble s th e S S P in te rru p t 0 = D is a ble s th e S S P in te rru p t C C P 1IE : C C P 1 In te rru p t E n a ble b it 1 = E n a ble s th e C C P 1 in te rru p t 0 = D is a ble s th e C C P 1 in te rru p t T M R 2IE : T M R 2 to P R 2 M a tc h In te rru p t E n a ble b it 1 = E n a ble s th e T M R 2 to P R 2 m a tc h in te rru p t 0 = D is a ble s th e T M R 2 to P R 2 m a tc h in te rru p t T M R 1IE : T M R 1 O ve ro w In te rru p t E n a ble b it 1 = E n a ble s th e T M R 1 ove ro w in te rru p t 0 = D is a ble s th e T M R 1 ove ro w in te rru p t

b it 6:

b it 5:

b it 4:

b it 3:

b it 2:

b it 1:

b it 0:

N o te 1: P S P IE is re s e rve d o n 28-p in d ev ic e s, a lw ay s m a in ta in th is b it c le a r.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 16 de 58

Registro PIR1 - Direccin 0x0C

R /W -0 P S P IF (1) b it7

R /W -0 A D IF

R -0 R C IF

R -0 T X IF

R /W -0 S S P IF

R /W -0 C C P 1IF

R /W -0 T M R 2IF

R /W -0 T M R 1IF b it0 R = R e a d a ble b it W = W rita b le b it - n = V a lu e a t P O R re s e t

b it 7:

P S P IF (1): P a ra lle l S la v e P o rt R e a d /W rite In te rru p t F la g b it 1 = A re a d o r a w rite o p e ra tio n h a s ta ke n p la c e (m u s t b e c le a re d in s o ftw a re ) 0 = N o re a d o r w rite h a s o c c u rre d A D IF : A /D C o n v e rte r In te rru p t F la g b it 1 = A n A /D c o n v e rs io n c o m p le te d 0 = T h e A /D c o n v e rs io n is n o t c o m p le te R C IF : U S A R T R e c e iv e In te rru p t F la g b it 1 = T h e U S A R T re c e iv e bu ffe r is fu ll 0 = T h e U S A R T re c e iv e bu ffe r is e m p ty T X IF : U S A R T Tra n s m it In te rru p t F la g b it 1 = T h e U S A R T tra n s m it bu ffe r is e m p ty 0 = T h e U S A R T tra n s m it bu ffe r is fu ll S S P IF : S y n c h ro n o u s S e ria l P o rt (S S P ) In te rru p t F la g 1 = T h e S S P in te rru p t c o n d itio n h a s o c c u rre d , a n d m u s t b e c le a re d in s o ftw a re b e fo re re tu rn in g fro m th e in te rru p t s e rv ic e ro u tin e . T h e c o n d itio n s th a t w ill s e t th is b it a re : SPI A tra n s m is s io n /re c e p tio n h a s ta ke n p la c e . I 2 C S la v e A tra n s m is s io n /re c e p tio n h a s ta ke n p la c e . I 2 C M a s te r A tra n s m is s io n /re c e p tio n h a s ta ke n p la c e . T h e in itia te d s ta rt c o n d itio n w a s c o m p le te d by th e S S P m o d u le . T h e in itia te d s to p c o n d itio n w a s c o m p le te d by th e S S P m o d u le . T h e in itia te d re s ta rt c o n d itio n w a s c o m p le te d by th e S S P m o d u le . T h e in itia te d a c k n o w le d g e c o n d itio n w a s c o m p le te d by th e S S P m o d u le . A s ta rt c o n d itio n o c c u rre d w h ile th e S S P m o d u le w a s id le (M u ltim a s te r s y s te m ). A s to p c o n d itio n o c c u rre d w h ile th e S S P m o d u le w a s id le (M u ltim a s te r s y s te m ). 0 = N o S S P in te rru p t c o n d itio n h a s o c c u rre d . C C P 1IF : C C P 1 In te rru p t F la g b it C a p tu re M o d e 1 = A T M R 1 re g is te r c a p tu re o c c u rre d (m u s t b e c le a re d in s o ftw a re ) 0 = N o T M R 1 re g is te r c a p tu re o c c u rre d C o m p a re M o d e 1 = A T M R 1 re g is te r c o m p a re m a tc h o c c u rre d (m u s t b e c le a re d in s o ftw a re ) 0 = N o T M R 1 re g is te r c o m p a re m a tc h o c c u rre d P W M M ode U n u s e d in th is m o d e T M R 2IF : T M R 2 to P R 2 M a tc h In te rru p t F la g b it 1 = T M R 2 to P R 2 m a tc h o c c u rre d (m u s t b e c le a re d in s o ftw a re ) 0 = N o T M R 2 to P R 2 m a tc h o c c u rre d

b it 6:

b it 5:

b it 4:

b it 7:

b it 2:

b it 1:

b it 0:

T M R 1IF : T M R 1 O v e ro w In te rru p t F la g b it 1 = T M R 1 re g is te r o v e ro w e d (m u s t b e c le a re d in s o ftw a re ) 0 = T M R 1 re g is te r d id n o t o v e ro w N o te 1: P S P IF is re s e rv e d o n 28-p in d e v ic e s , a lw a y s m a in ta in th is b it c le a r.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 17 de 58

Registro PIE2 - Direccin 0x8D


U -0 b it7 R /W -0 (1) U -0 R /W -0 E E IE R /W -0 B C L IE U -0 U -0 R /W -0 C C P 2IE b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7: b it 6: b it 5: b it 4:

U n i m p l e m e n te d : R e a d a s '0' R e s e r v e d : A lw a y s m a in ta in th is b it c le a r U n i m p l e m e n te d : R e a d a s '0' E E IE : E E P R O M W rite O p e ra tio n In te rru p t E n a b le 1 = E n a b le E E W rite In te rru p t 0 = D is a b le E E W rite In te rru p t B C L IE : B u s C o llis io n In te rru p t E n a b le 1 = E n a b le B u s C o llis io n In te rru p t 0 = D is a b le B u s C o llis io n In te rru p t U n i m p l e m e n te d : R e a d a s '0' C C P 2IE : C C P 2 In te rru p t E n a b le b it 1 = E n a b le s th e C C P 2 in te rru p t 0 = D is a b le s th e C C P 2 in te rru p t

b it 3:

b it 2-1: b it 0:

N o te 1: P IE 2<6> is re s e rv e d , a lw a y s m a in ta in th is b it c le a r.

Registro PIR2 - Direccin 0x0D


U -0 b it7 R /W -0 (1) U -0 R /W -0 E E IF R /W -0 B C L IF U -0 U -0 R /W -0 C C P 2IF b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7: b it 6: b it 5: b it 4:

U n i m p l e m e n te d : R e a d a s '0' R e s e r v e d : A lw a y s m a in ta in th is b it c le a r U n i m p l e m e n te d : R e a d a s '0' E E IF : E E P R O M W rite O p e ra tio n In te rru p t F la g b it 1 = T h e w rite o p e ra tio n c o m p le te d (m u s t b e c le a re d in s o ftw a re ) 0 = T h e w rite o p e ra tio n is n o t c o m p le te o r h a s n o t b e e n s ta rte d B C L IF : B u s C o llis io n In te rru p t F la g 1 =A b u s c o llis io n h a s o c c u rre d in th e S S P, w h e n c o n g u re d f o r I 2 C m a s te r m o d e 0 =N o b u s c o llis io n h a s o c c u rre d U n i m p l e m e n te d : R e a d a s '0' C C P 2IF : C C P 2 In te rru p t F la g b it C a p tu re M o d e 1 = A T M R 1 re g is te r c a p tu re o c c u rre d (m u s t b e c le a re d in s o ftw a re ) 0 = N o T M R 1 re g is te r c a p tu re o c c u rre d C o m p a re M o d e 1 = A T M R 1 re g is te r c o m p a re m a tc h o c c u rre d (m u s t b e c le a re d in s o ftw a re ) 0 = N o T M R 1 re g is te r c o m p a re m a tc h o c c u rre d P W M M ode U nused

b it 3:

b it 2-1: b it 0:

N o te 1: P IR 2<6> is re s e rv e d , a lw a y s m a in ta in th is b it c le a r.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 18 de 58

LOS PUERTOS PARALELOS


Los PIC16F874/7 disponen de cinco puertos paralelo, denominados puerto A hasta puerto E. Las lneas de estos puertos se pueden programar individualmente como entradas o como salidas. No obstante, con el fin de que los encapsulados del PIC 16F87X no tengan excesivos pines, y teniendo en cuenta la cantidad de recursos internos disponibles, la mayora de las lneas de estos puertos se comparten con las lneas de entrada/salida de otros recursos, punto del que ya se mension anteriormente. Vamos a ver que al compartir lneas a veces influye en la estructura de los correspondientes puertos, y puede imponer algunas restricciones de utilizacin. EL PUERTO A El puerto "A" dispone de seis bits. Las lneas representan el esquema interno de la siguiente figura. Todas ellas estn provistas como salidas con un buffer CMOS normal, y como entradas aceptan niveles TTL. Como puede comprobar en esta figura, la entrada y la salida pasan por un latch.
D a ta bus WR P o rt

Q VDD CK Q P N
D a ta bus WR PO RT

D CK

Q Q N

D a ta L a tc h D WR T R IS Q I/O p in (1)

I/O p in (1)

D a ta L a tc h D Q Q V ss S c h m itt Trig g e r in p u t b u ffe r WR T R IS

CK

T R IS L a tc h

VSS A n a lo g in p u t m ode

CK

T R IS L a tc h

R D T R IS Q D

TTL in p u t b u ffe r

R D T R IS Q D

ENE N EN R D PO RT To A /D C o n v e rte r N o te 1: I/O p in s h a v e p ro te c tio n d io d e s to V D D a n d VSS.


R D PO RT

T M R 0 c lo c k in p u t

N o te 1: I/O p in h a s p ro te c tio n d io d e s to V S S o n ly.

RA4

RA0, RA1, RA2, RA3 y RA5 En el PIC16F87X, lasinco lneas del primer grfico pueden ser usadas como entradas del conversor analgico/digital integrado. Cuando este conversor se activa, estas lneas pasan a ser entradas analgicas. Si las intenta leer como lneas del puerto A, las ver como si estuvieran todas ellas a 0. Como se ve en la figura de la derecha la lnea RA4 tiene una estructura algo diferente. En efecto, en este caso, la salida es de tipo drenador abierto (el equivalente en MOS al clsico colector abierto), y la entrada est provista de un trigger Schmitt. Es comn con la entrada externa del temporizador 0.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 19 de 58

EL PUERTO B El puerto B es un puerto bidireccional de 8 bits completo, en le que slo una lnea se comparte con otro recurso interno. Las lneas RB0-RB3 adoptan la estructura interna que puede ver en la figura de la izquierda, mientras que las lneas RB4-RB7 tienen la estructura de la figura derecha. El motivo de esto se encuentra en el hecho de que es posible programar una interrupcin durante un cambio de estado de una cualquiera de las lneas RB0-RB3. Si se utiliza esta posibilidad, el simple hecho de que cualquiera de las lneas cambie de estado genera una interrupcin (ver la descripcin anterior del registro INTCON). Tenga presente que slo las lneas programadas como entradas son susceptibles de ser monitorizadas mediante este procedimiento.
VDD R B P U (2) VDD R B P U (2) D a ta b u s W R P o rt D a ta L a tc h D Q CK T R IS L a tc h D Q W R T R IS CK I/O p in (1) W R T R IS TTL In p u t B u ffe r w eak P p u ll-u p D a ta b u s W R P o rt D a ta L a tc h D Q CK T R IS L a tc h D Q CK TTL In p u t B u ffe r I/O p in (1) w eak P p u ll-u p

ST B u ffe r

R D T R IS Q R D T R IS Q R D P o rt R B 0/IN T S c h m itt Trig g e r B u ffe r R D P o rt D EN F ro m o th e r R B 7:R B 4 p in s Q S e t R B IF R D P o rt

L a tc h D EN Q1

D R D P o rt EN Q3

R B 7:R B 6 in s e ria l p ro g ra m m in g m o d e N o te 1: I/O p in s h a v e d io d e p ro te c tio n to V D D a n d V S S . 2: To e n a b le w e a k p u ll-u p s , s e t th e a p p ro p ria te T R IS b it(s ) a n d c le a r th e R B P U b it (O P T IO N _R E G <7>).

N o te 1: I/O p in s h a v e d io d e p ro te c tio n to V D D a n d V S S . 2: To e n a b le w e a k p u ll-u p s , s e t th e a p p ro p ria te T R IS b it(s ) a n d c le a r th e R B P U b it (O P T IO N _R E G <7>).

Como puede comprobar en ambas figuras, cada una de las lneas del puerto B dispone de una resistencia de pull-up de alto valor conectada a la alimentacin. Esta resistencia de pull-up puede activarse o no gracias al bit RBPU del registro OPTION (ver la descripcin anterior de este registro al hablar del temporizador 0, al que afecta, principalmente). La activacin o no de esta resistencia de pull-up es comn a todas las lneas del puerto B. Adems, sta se desactiva automticamente durante un reset, as como las lneas que estn configuradas como salida. El sentido de trabajo de todas las lneas de este puerto se controla mediante el registro TRISB, en el que un bit a 0 activa a la lnea correspondiente como salida, y un bit a 1 la activa como entrada. Evidentemente, despus de un reset, todos los bits del registro TRISB se ponen a 1.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 20 de 58

EL PUERTO C El puerto C es un puerto bidireccional de 8 bits completo, en el que todas las lneas se comparten con los dems recursos internos, segn la reparticin vista en la descripcin de las seales disponibles en el circuito. A pesar de esto, cada una de las lneas de este puerto adoptan la misma estructura, la cual se puede ver en la siguiente figura. se dispone de un buffer CMOS clsico como salida, y de un trigger Schmitt como entrada.

P O R T /P E R IP H E R A L S e le c t(2) P e rip h e ra l D a ta O u t D a ta b u s WR PO RT D CK Q 1 Q D a ta L a tc h WR T R IS D CK Q Q N VSS S c h m itt Trig g e r Q D EN I/O p in (1) 0 VDD P

P O R T /P E R IP H E R A L S e le c t(2) P e rip h e ra l D a ta O u t D a ta b u s WR PO RT D CK Q 1 Q D a ta L a tc h WR T R IS D CK Q Q N VSS S c h m itt Trig g e r Q RD PO RT S S P l in p u t C KE S S P S TA T <6> D EN 0 1 S c h m itt Trig g e r w ith S M Bus le v e ls I/O p in (1) 0 VDD P

T R IS L a tc h

T R IS L a tc h

R D T R IS P e rip h e ra l O E (3) RD PO RT P e rip h e ra l in p u t

R D T R IS P e rip h e ra l O E (3)

N o te 1: 2: 3:

I/O p in s h a v e d io d e p ro te c tio n to V D D a n d V S S . P o rt/P e rip h e ra l s e le c t s ig n a l s e le c ts b e tw e e n p o rt d a ta a n d p e rip h e ra l o u tp u t. P e rip h e ra l O E (o u tp u t e n a ble ) is o n ly a c tiv a te d if p e rip h e ra l s e le c t is a c tiv e .

N o te 1: 2: 3:

RC0-RC2 / RC5-RC7

I/O p in s h a v e d io d e p ro te c tio n to V D D a n d V S S . P o rt/P e rip h e ra l s e le c t s ig n a l s e le c ts b e tw e e n p o rt d a ta a n d p e rip h e ra l o u tp u t. P e rip h e ra l O E (o u tp u t e n a ble ) is o n ly a c tiv a te d if p e rip h e ra l s e le c t is a c tiv e .

RC3-RC4

El sentido de trabajo de cada una de las lneas de este puerto es controlado por el registro TRISC, en el que un bit a 0, activa a la lnea correspondiente como salida, y un bit a 1 la activa como entrada. Evidentemente, despus de un reset, todos los bits del registro TRISC se ponen a 1.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 21 de 58

EL PUERTO D El puerto D es un puerto bidireccional de 8 bits completo, que no comparte sus lneas de entrada/salida con ningn otro recurso. En la siguiente figura puede ver su esquema interno, en el que observamos un buffer TTL como salida, y un trigger Schimtt como entrada.
D a ta bus WR PO RT

D CK

I/O p in (1)

D a ta L a tc h
D Q

WR T R IS

CK

T R IS L a tc h

S c h m itt Trig g e r in p u t b u ffe r

R D T R IS
Q D EN EN

R D PO RT N o te 1: I/O p in s h a v e p ro te c tio n d io d e s to V D D a n d V S S .

Este puerto tambin dispone de un modo de funcionamiento especial, denominado modo esclavo paralelo, que se muestra en la siguiente figura, y que utiliza tres lneas del puertoE.

D a ta b u s WR PO RT

D CK

RDx p in TTL

D EN EN

RD PO RT O n e b it o f P O R T D

S e t in te rru p t a g P S P IF (P IR 1<7>)

R ead

TTL

RD CS WR

C h ip S e le c t
TTL

W rite

TTL

N o te : I/O p in h a s p ro te c tio n d io d e s to V D D a n d V S S .

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 22 de 58

PRINCIPIO DE UTILIZACION DEL PUERTO D EN MODO ESCLAVO PARALELO. En este modo, los PIC16F87X se deben considerar como circuitos de interfaz clsicos para un microprocesador de 8 bits. Las lneas del puerto D se convierten en las lneas del bus de datos de este micro, mientras que las tres lneas de control clsicas: de lectura, de escritura y de activacin del circuito (chip select) estn disponibles en el puerto E. Ms adelante, en el aparato dedicado al registro TRISE, veremos el principio de funcionamiento de este modo mediante los bits de control contenidos en este registro. Cuando no funciona en modo esclavo paralelo, el puerto D se puede utilizar normalmente. El sentido de trabajo de cada una de las lneas de este puerto es controlado por el registro TRISD, en el que un bit a 0 activa a la lnea correspondiente como salida, y un bit a 1 la activa como entrada. Evidentemente, despus de un reset, todos los bits del registro TRISD se ponen a 1. EL PUERTO E El puerto E no dispone ms que de tres lneas bidireccionales, que respetan el esquema de la siguiente figura. Suministran un buffer CMOS como salida y trigger Schmitt como entrada.
D a ta bus WR PO RT
D CK Q

I/O p in (1)

D a ta L a tc h
D Q

WR T R IS

CK

T R IS L a tc h

S c h m itt Trig g e r in p u t b u ffe r

R D T R IS
Q D EN EN

R D PO RT N o te 1: I/O p in s h a v e p ro te c tio n d io d e s to V D D a n d V S S .

Estas lneas se pueden utilizar normalmente como las lneas de cualquier puerto paralelo, o pueden servir de seales de control cuando el puerto "D" est activado en modo esclavo paralelo. El registro de control para el sentido de funcionamiento del puerto E, TRISE, adopta una estructura especial, como se ve a continuacin

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 23 de 58

Registro TRISE - Direccin 0x89


R -0 IB F b it7 R -0 O BF R /W -0 IB O V R /W -0 PSPMO DE U -0 R /W -1 b it2 R /W -1 b it1 R /W -1 b it0 b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7 :

IB F : In p u t B u ffe r F u ll S ta tu s b it 1 = A w o rd h a s b e e n re c e iv e d a n d is w a itin g to b e re a d b y th e C P U 0 = N o w o rd h a s b e e n re c e iv e d O B F : O u tp u t B u ffe r F u ll S ta tu s b it 1 = T h e o u tp u t b u ffe r s till h o ld s a p re v io u s ly w ritte n w o rd 0 = T h e o u tp u t b u ffe r h a s b e e n re a d IB O V : In p u t B u ffe r O v e ro w D e te c t b it (in m ic ro p ro c e s s o r m o d e ) 1 = A w rite o c c u rre d w h e n a p re v io u s ly in p u t w o rd h a s n o t b e e n re a d (m u s t b e c le a re d in s o ftw a re ) 0 = N o o v e ro w o c c u rre d P S P M O D E : P a ra lle l S la v e P o rt M o d e S e le c t b it 1 = P a ra lle l s la v e p o rt m o d e 0 = G e n e ra l p u rp o s e I/O m o d e U n i m p l e m e n te d : R e a d a s '0'

b it 6:

b it 5:

b it 4:

b it 3: b it 2:

P O R T E D a ta D i r e c ti o n B i ts
B i t2: D ire c tio n C o n tro l b it fo r p in R E 2/C S /A N 7 1 = In p u t 0 = O u tp u t B i t1: D ire c tio n C o n tro l b it fo r p in R E 1/W R /A N 6 1 = In p u t 0 = O u tp u t B i t0: D ire c tio n C o n tro l b it fo r p in R E 0/R D /A N 5 1 = In p u t 0 = O u tp u t

b it 1:

b it 0:

Estas funciones y asignaciones se corresponden perfectamente con lo que habitualmente se encuentra en cualquier circuito de interfaz para microprocesadores de 8 bits. Para poder funcionar en modo esclavo paralelo, y adems de la puesta a 1 del bit PSPMODE, las lneas deben activarse como entradas mediante la escritura de un 1 en los bits 0 a 2 del registro TRISE. En el modo esclavo, los bits del registro TRISD no se utilizan, ya que el sentido de trabajo del puerto D est bajo el control del microprocesador externo a travs de y . Observe tambin que, como hemos visto en la descripcin del registro PIR1, es posible generar una interrupcin durante la lectura o escritura en el puerto D si est configurado en este modo.

LOS TEMPORIZADORES
Los PIC16F87X contienen tres temporizadores distintos, que disponen de diversas posibilidades de funcionamiento, las cuales vamos a describir a continuacin. Cada temporizador puede generar una interrupcin, como hemos visto en la presentacin de los registros INTCON y PIR1. Los temporizadores 1 y 2 pueden adems asociarse a los mdulos funcionales denominados y PWM, que permiten realizar la captura de datos como entrada, la comparacin de datos como salida y la modulacin de impulsos en duracin. Todas estas caractersticas son comparables a las que se encuentren tradicionalmente en los temporizadores de mayores prestaciones de los micros de 8 bits.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 24 de 58

EL TEMPORIZADOR 0 El temporizador 0 es el ms sencillo de los tres y como se vi anteriormente est formado por el conjunto TMR0 y el registro OPTION. EL TEMPORIZADOR 1 El temporizador1 est constituido principalmente por un registro de 16 bits dividido en dos registros de 8 bits, TMR1L y TMR1H, los cuales pueden ser escritos y ledos. El contenido de este registro vara de 0000 hasta FFFF, y vuelve a 0000 despus de su desbordamiento, generando una interrupcin en ese momento, si sta se autoriza. El esquema de la siguiente figura permite comprender los diversos modos de direccionamiento de este temporizador.
S e t a g b it T M R 1IF o n O v e ro w T M R 1H

TMR1 T M R 1L

S y n c h ro n iz e d c lo c k in p u t

1 T M R 1O N o n /o ff 1 T 1O S C E N E n a b le O s c illa to r(1) F o s c /4 In te rn a l C lo c k P re s c a le r 1, 2, 4, 8 0 2 T 1C K P S 1:T 1C K P S 0 T M R 1C S T 1S Y N C S y n c h ro n iz e det S L E E P in p u t

T 1O S C R C 0/T 1O S O /T 1C K I

R C 1/T 1O S I

N o te 1:

W h e n th e T 1O S C E N b it is c le a re d , th e in v e rte r a n d fe e d b a c k re s is to r a re tu rn e d o ff. T h is e lim in a te s p o w e r d ra in .

ESQUEMA DEL TEMPORIZADOR 1. En modo temporizador, el registro se incrementa en una unidad con cada ciclo del reloj de instruccin (es decir, en cada ciclo de reloj dividido por cuatro). En modo contador, este incremento tiene lugar en cada periodo de la seal aplicada en el pin RC0, o en cada periodo generado por el oscilador que se puede implementar conectando un cristal de cuarzo entre los pines RC0 y RC1. En todos los casos, la seal de reloj del temporizador pasa por un prescaler de tasa programable, que puede sincronizar despus con el reloj interno. Evidentemente, esta sincronizacin es perfectamente intil cuando se utiliza esa fuente como reloj. En modo externo (o reloj suministrado por el oscilador del temporizador 1) puede seleccionar o no esta sincronizacin. Si se valida la sincronizacin, es posible utilizar el temporizador 1 conjuntamente con el mdulo CCP que se presenta ms adelante. Este modo hace entonces una puesta a 0 del temporizador a partir de la ocurrencia del evento (comprobacin o captura) para el que est programado. Sin embargo, el temporizador 1 deja de funcionar en modo SLEEP, ya que la sincronizacin no puede tener lugar debido a la parada del reloj interno en este modo. Si no se valida la sincronizacin, no es posible el funcionamiento con los mdulos CCP, pero el temporizador contina contando incluso en modo SLEEP, y puede por tanto "despertar" al microcontrolador y hacerle salir automticamente de este modo cuando se desborda, si ha autorizado la generacin de una interrupcin en esta situacin.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 25 de 58

Los diferentes modos de funcionamiento de este temporizador son controlados por el registro T1CON, en el que cada bit tiene un significado propio, que es el siguiente: Registro T1CON - Direccin 0x10

U -0 b it7

U -0

R /W -0

R /W -0

R /W -0

R /W -0

R /W -0 T M R 1C S

R /W -0 T M R 1O N b it0 R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

T 1C K P S 1 T 1C K P S 0 T 1O S C E N T 1S Y N C

b it 7-6:

U n i m p l e m e n te d : R e a d a s '0'

b it 5-4: T 1C K P S 1: T 1C K P S 0: T im e r1 In p u t C lo c k P re s c a le S e le c t b its 11 = 1:8 P re s c a le v a lu e 10 = 1:4 P re s c a le v a lu e 01 = 1:2 P re s c a le v a lu e 00 = 1:1 P re s c a le v a lu e b it 3: T 1O S C E N : T im e r1 O s c illa to r E n a b le C o n tro l b it 1 = O s c illa to r is e n a b le d 0 = O s c illa to r is s h u t o ff N o te : T h e o s c illa to r in v e rte r a n d fe e d b a c k re s is to r a re tu rn e d o ff to e lim in a te p o w e r d ra in T 1S Y N C : T im e r1 E x te rn a l C lo c k In p u t S y n c h ro n iz a tio n C o n tro l b it T M R 1C S = 1 1 = D o n o t s y n c h ro n iz e e x te rn a l c lo c k in p u t 0 = S y n c h ro n iz e e x te rn a l c lo c k in p u t T M R 1C S = 0 T h is b it is ig n o re d . T im e r1 u s e s th e in te rn a l c lo c k w h e n T M R 1C S = 0. b it 1: T M R 1C S : T im e r1 C lo c k S o u rc e S e le c t b it 1 = E x te rn a l c lo c k fro m p in R C 0/T 1O S O /T 1C K I (o n th e ris in g e d g e ) 0 = In te rn a l c lo c k (F O S C /4) T M R 1O N : T im e r1 O n b it 1 = E n a b le s T im e r1 0 = S to p s T im e r1

b it 2:

b it 0:

El oscilador que se sita entre los pines RC0 y RC1, se realiza mediante la conexin de un cuarzo entre dichos pines. La frecuencia mxima de funcionamiento prevista es de 200 kHz, y este circuito est optimizado para un cristal de cuarzo a 32 kHz. EL TEMPORIZADOR 2 Como muestra el esquema de la siguiente figura este temporizador est formado por un registro de 8 bits denominado TMR2, asociado a un predivisor y a un postdivisor, as como a un registro de periodo.
S e ts a g b it T M R 2IF TMR2 o u tp u t (1) R eset P o s ts c a le r 1:1 to 1:16 4 P re s c a le r 1:1, 1:4, 1:16 2

T M R 2 re g C o m p a ra to r P R 2 re g

F o s c /4

EQ

N o te 1:

T M R 2 re g is te r o u tp u t c a n b e s o ftw a re s e le c te d b y th e S S P M o d u le a s a b a u d c lo c k .

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 26 de 58

El contenido de este registro se inicia en el valor 00 y aumenta con cada impulso del reloj de instruccin, despus de la eventual divisin realizada por el prescaler. Cuando el contenido se hace igual que el registro de periodo, se pone a 0 y se aplica una seal al postdivisor. La salida de ste puede generar entonces una interrupcin, si ha sido autorizada por el registro PIE1. Los contenidos del prescaler y el postdivisor se ponen automticamente a 0 durante una escritura en el registro TMR2 o en el registro de control T2CON, as como en un reset, sea cual sea su origen. Registro T2CON - Direccin 0x12
U -0 b it7 R /W -0 R /W -0 R /W -0 R /W -0 R /W -0 T M R 2O N R /W -0 R /W -0 b it0 R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

TO U TPS 3 TO U TPS 2 TO U TPS 1 TO U TPS 0

T 2C K P S 1 T 2C K P S 0

b it 7:

U n i m p l e m e n te d : R e a d a s '0'

b it 6-3: T O U T P S 3: T O U T P S 0: T im e r2 O u tp u t P o s ts c a le S e le c t b its 0000 = 1:1 P o s ts c a le 0001 = 1:2 P o s ts c a le 1111 = 1:16 P o s ts c a le b it 2: T M R 2O N : T im e r2 O n b it 1 = T im e r2 is o n 0 = T im e r2 is o ff K P S 0: T im e r2 C lo c k P re s c a le S e le c t b its is 1 is 4 is 16

b it 1-0: T 2C K P S 1: T 2C 00 = P re s c a le r 01 = P re s c a le r 1x = P re s c a le r

LOS MODULOS DE CAPTURA, COMPARACION Y MODULACION DE ANCHO DE PULSOS Los PIC16F87X disponen de dos mdulos de captura, comparacin y generacin de modulacin ancho de pulsos (PWM), denominados CCP1 y CCP2. Estos dos mdulos funcionan de la misma forma; excepto en el modo de arranque especial. Por tanto, los vamos a presentar simultneamente, y observaremos en qu se distinguen cuando veamos dicho modo. Cada mdulo est formado por un registro de 16 bits, accesible tanto para escritura como para lectura, bajo la forma de dos registros de 8 bits sucesivos, CCPxL para los bits de menor peso y CCPxH para los bits de mayor peso. EL MODO CAPTURA En este modo, el registro CCPx captura el contenido del temporizador 1 cuando en el pin Rcx/CCPx se produce una de las siguientes condiciones: Un flanco de bajada. Un flanco de subida. Una captura cada cuatro flancos de subida. Una captura cada diecisis flancos de subida.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 27 de 58

La eleccin de estos eventos se realiza con los bits contenidos en el registro CCPxCON, que veremos a continuacin. Cuando tiene lugar una captura, se puede generar una interrupcin, siempre que haya sido autorizada por el bit apropiado de los registros PIE1 o PIE2, vistos anteriormente. Si se produce otra captura antes de que el contenido de CCPx se haya ledo, este contenido se sustituye por el nuevo. Observe tambin que, para que este sistema funcione correctamente, evidentemente el pin Rcx/CCPx debe estar programado como entrada. Si est configurado como salida y se produce una escritura en el puerto C, puede generarse una captura falsa. La siguiente figura muestra de forma extremadamente visual el funcionamiento de este modo de captura. Observe la presencia de un prescaler, que permite la captura de cada un flanco, cada cuatro flancos o cada diecisis flancos. Su contenido se pone 0 durante un reset, as como durante cualquier parada del mdulo CCP. Preste atencin al hecho de que, si vara el valor del prescaler con el fin de definir otras condiciones de captura, se puede generar una falsa interrupcin, por lo que es aconsejable detener el mdulo CCP antes de cambiar las condiciones de captura, para evitar este fenmeno.
P re s c a le r 1, 4, 16 R C 2/C C P 1 P in and e d g e d e te c t C C P 1C O N <3:0> S e t a g b it C C P 1IF (P IR 1<2>) C C P R 1H C a p tu re E n a b le T M R 1H Q s T M R 1L C C P R 1L

ESQUEMA DE UN MODULO CCP EN MODO CAPTURA. EL MODO COMPARACION En este modo, el contenido del registro CCP se compara permanente con el contenido del temporizador 1. Cuando se produce una igualdad, cualquiera de los fenmenos siguientes se puede producir: Pone un nivel alto en el pin RCx/CCPx. Pone un nivel bajo en el pin RCx/CCPx. Ninguna variacin en el pin, pero se genera una interrupcin, por supuesto si esta est habilitada. Evidentemente, en los dos primeros casos, el pin correspondiente del puerto C debe programarse como salida, poniendo a 0 el bit correspondiente del registro TRISC. Existe un modo suplementario que se denomina modo de arranque especial. En este caso, una comparacin correcta da lugar a los eventos siguientes: Para CCP1: el temporizador 1 se pone a 0, lo que permite utilizar el registro CCP1 como un registro de periodo de 16 bits para el temporizador 1. Para CCP2: el temporizador 1 se pone a 0, y se desencadena una conversin analgico / digital si, por supuesto, la funcin correspondiente ha sido autorizada por el convertidor. Esto permite llevar a cabo muy fcilmente conversiones a intervalos regulares sin que sea necesario utilizar la unidad central.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 28 de 58

La siguiente figura muestra de forma muy clara el principio de funcionamiento de este modo de comparacin.
S p e c ia l e v e n t trig g e r w ill: re s e t T im e r1, b u t n o t s e t in te rru p t a g b it T M R 1IF (P IR 1<0>), a n d s e t b it G O /D O N E
S p e c ia l E v e n t Trig g e r (C C P 2 o n ly ) S e t a g b it C C P 1IF (P IR 1<2>) C C P R 1H C C P R 1L Q R C 2/C C P 1 P in T R IS C <2> O u tp u t E n a b le S R O u tp u t L o g ic C o m p a ra to r T M R 1H T M R 1L

m a tc h

C C P 1C O N <3:0> M o d e S e le c t

ESQUEMA DE UN MODULO CCP EN MODO COMPARACION. EL MODO PWM O MODULACION DE ANCHO DE PULSO En este modo, el pin RCx/CCPx permite disponer de una salida que es una seal con modulacin de ancho de pulsos, con una resolucin que puede llegar hasta 10 bits. Evidentemente, este pin debe configurarse como salida por medio del registro TRISC. Como muestra la siguiente figura, el principio de este modo de funcionamiento es el que sigue. El usuario escribe, en el registro CCPx, el ciclo de trabajo deseado utilizando 8 bits. El registro CCPxL, el ciclo de trabajo deseado utilizando 8 bits. El registro CCPxH se utiliza como esclavo de CCPxL, por lo que no se puede escribir en l. El periodo de la seal generada se determina mediante el contenido del registro periodo del temporizador 2 (PR2). En estas condiciones, y teniendo en cuanta el funcionamiento del temporizador 2 visto anteriormente, se puede escribir: Periodo de la seal = (PR2 +1) x 4T x (Predivisor de TMR2) Donde T es el periodo de la seal de reloj del PIC. Ciclo de trabajo = DC1 x T x (Predivisor TMR2) Donde T es el periodo del reloj del PIC, y de DC1 es la palabra de 10 bits, formada por los 8 bits de CCPxL, y los bits 4 y 5 de CCPxCON, utilizados como bits de menor peso. La resolucin de este modo PWM es, por tanto, programable hasta alcanzar los 10 bits, si los bits 4 y 5 son distintos de 0. En caso contrario, el modo PWM funciona con una resolucin de 9 bits (un nico bit a 0), o de 8 bits (los dos bits a 0).

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 29 de 58

D u ty c y c le re g is te rs C C P R 1L

C C P 1C O N <5:4>

C C P R 1H (S la v e ) Q R C 2/C C P 1 S T R IS C <2> C le a r T im e r, C C P 1 p in a n d la tc h D .C .

C o m p a ra to r

TMR2

(N o te 1)

C o m p a ra to r

PR 2

N o te 1: 8-b it tim e r is c o n c a te n a te d w ith 2-b it in te rn a l Q c lo c k o r 2 b its o f th e p re s c a le r to c re a te 10-b it tim e -b a s e .

ESQUEMA DE UN MODULO CCP EN MODO PWM. EL REGISTRO DE CONTROL DE LOS MODULOS CCP Vistos los diversos modos de funcionamiento, vamos a presentar el anlisis del contenido del registro de control de cada mdulo CCP. Cada mdulo CCP dispone de su propio registro de control, denominado CCPxCON, en el que cada uno de sus bits tiene la siguiente funcin: Registro CCP1CON / CCP2CON - Direccin 0x17 / 0x1D
U -0 U -0 R /W -0 C C PxX R /W -0 C C PxY R /W -0 C C PxM 3 R /W -0 C C PxM 2 R /W -0 C C PxM 1 R /W -0 C C PxM 0

b it7

b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n =V a lu e a t P O R re s e t

b it 7-6:

U n i m p l e m e n te d : R e a d a s '0'

b it 5-4: C C P x X : C C P x Y : P W M L e a s t S ig n ic a n t b its C a p tu re M o d e : U n u s e d C o m p a re M o d e : U n u s e d P W M M o d e : T h e s e b its a re th e tw o L S b s o f th e P W M d u ty c y c le. T h e e ig h t M S b s a re fo u n d in C C P R x L . b it 3-0: C C P x M 3: C C P x M 0: C C P x M o d e S e le c t b its 0000 = C a p tu re /C o m p a re /P W M o ff (re s e ts C C P x m o d u le ) 0100 = C a p tu re m o d e , e v e ry fa llin g e d g e 0101 = C a p tu re m o d e , e v e ry ris in g e d g e 0110 = C a p tu re m o d e , e v e ry 4th ris in g e d g e 0111 = C a p tu re m o d e , e v e ry 16th ris in g e d g e 1000 = C o m p a re m o d e , s e t o u tp u t o n m a tc h (C C P x IF b it is s e t) 1001 = C o m p a re m o d e , c le a r o u tp u t o n m a tc h (C C P x IF b it is s e t) 1010 = C o m p a re m o d e , g e n e ra te s o ftw a re in te rru p t o n m a tc h (C C P x IF b it is s e t, C C P x p in is u n a ffe c te d ) 1011 = C o m p a re m o d e , trig g e r s p e c ia l e v e n t (C C P x IF b it is s e t; C C P 1 re s e ts T M R 1; C C P 2 re s e ts T M R 1 a n d s ta rts a n A /D c o n v e rs io n (if A /D m o d u le is e n a b le d )) 11xx = P W M m o d e

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 30 de 58

INTERFAZ UNIVERSAL DIRECCIONABLE SERIE SINCRONA / ASNCRONA - USART La interfaz serie asncrona o SCI con la que est equipado el PIC16F87X es comparable a una UART programable por software. Puede funcionar en modo asncrono full duplex para conectar al PIC con cualquier equipo provisto con una conexin del mismo tipo (terminal, mdem, etc...), o bien en modo sncrono semiduplex maestro o esclavo, para aplicaciones algo ms especiales. La velocidad de transmisin es por completo programable gracias a su registro interno, y es idntica en transmisin y en recepcin. La SCI no soporta directamente la paridad, en el sentido de que no la calcula ni la verifica. Por el contrario, ofrece la posibilidad de transmitir y recibir 9 bits de datos, lo cual permite generar esta paridad por software, y utilizar este noveno bit para transmitirla y recibirla. Excepto esta programacin con 8 o 9 bits, el formato de transmisin es fijo; es el clsico con un bit de arranque, los bits de datos y un bit de parada. LA SCI EN MODO ASINCRNO FULL DUPLEX En este modo de funcionamiento, la parte de la transmisin de la SCI sigue el esquema de la siguiente figura. Este esquema es el tpico, ya que el corazn de este conjunto es el registro TXREG, cuando el bit del registro de estado nos indica que dicho registro est vaco. Esta situacin se puede comprobar leyendo este registro por software, o generando una interrupcin si la SCI la ha autorizado mediante el bit apropiado del registro PIEI (ver al principio del captulo). Si la transmisin debe hacerse con 9 bits (utilizando la paridad, por ejemplo, con una transmisin de datos con 8 bits), este noveno bit procede del registro TXSTA, que veremos a continuacin. Este bit debe tener el valor correcto antes de escribir el registro TXREG. En efecto, si TXREG est vaco, el hecho de escribir en el un byte valida inmediatamente la transmisin, por lo que imperativamente el noveno bit se ha debido activar previamente.
D a ta B u s T X IF T X IE MSb (8) In te rru p t TXEN B a u d R a te C L K TRMT S PBR G B a u d R a te G e n e ra to r TX9 T X 9D SPEN T S R re g is te r T X R E G re g is te r 8 LS b 0 P in B u ffe r a n d C o n tro l R C 6/T X /C K p in

ESQUEMA DE LA SCI EN MODO TRANSMISIN ASNCRONA.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 31 de 58

El principio de utilizacin de la SCI en transmisin es la siguiente: Escritura de la velocidad de transmisin deseada en el registro SPBRG (visto ms arriba). Activacin del puerto SCI Activacin eventual de las interrupciones en transmisin mediante la activacin del bit TXIE del registroPIE1 (ver al principio del captulo). Comprobacin del bit TMRT del registro TXSTA (visto ms arriba), para ver si el registro de transmisin est vaco, excepto en el caso de funcionamiento bajo interrupciones, donde la activacin de la interrupcin correspondiente indica situacin. En caso de transmisin con 9 bits, escritura del noveno bit en el registro TXSTA Escritura del byte que hay que transmitir en el registro TXREG. El procedimiento se repite a continuacin a partir de la comprobacin del estado del registro TXREG, con el fin de proceder a la transmisin de los siguientes datos. En recepcin, el principio de funcionamiento es tambin clsico. En este modo, la estructura de la SCI es la indicada en la siguiente figura.
x 64 B a u d R a te C L K C REN S PBR G B a u d R a te G e n e ra to r R C 7/R X /D T P in B u ffe r a n d C o n tro l D a ta R e c o v e ry RX9 64 or 16 MSb S to p (8) 7 OERR FERR

R S R re g is te r 1

LS b 0 S ta rt

8 SPEN

RX9 ADDEN RX9 ADDEN R S R <8>

E n a b le Load of R e c e iv e B u ffe r 8

R X 9D

R C R E G re g is te r

F IF O

8 In te rru p t R C IF R C IE D a ta B u s

ESQUEMA DE LA SCI EN MODO RECEPCION El registro de desplazamiento de recepcin no es accesible directamente y slo se puede leer por medio de registro RCREG, que dispone de un doble buffer, por lo que es posible recibir un byte mientras que el anterior todava no se ha ledo. Evidentemente, un bit del registro de estado indica cuando est disponible un byte en RCREG, y puede incluso dar lugar a una interrupcin, siempre que est autorizada por la activacin del bit adecuado del registro PIE1. En el registro de estado hay adems dos controles disponibles. Un bit de desbordamiento, que indica la sobrescritura de los datos contenidos en RCREG por los datos siguientes, si
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 32 de 58

no se han ledo suficientemente rpido, y un bit de error de formato. No est previsto ningn bit de error de paridad, ya que sta no es soportada directamente. Si se utiliza el noveno bit, ste no est disponible en el registro RCREG, que es un registro de 8 bits, sino en el registro de estado de recepcin. El principio de utilizacin de la SCI en recepcin es el siguiente: Escritura de la velocidad de transmisin deseada en el registro SPBRG (visto ms arriba), Habilitacin del puerto SCI Habilitacin eventual de las interrupciones en recepcin mediante la activacin del bit RCIE del registro PIE1 (ver al principio del captulo). Comprobacin del bit RCIF del registro PIR1 (visto al principio del captulo), para ver si el registro de recepcin est vaco, excepto en el caso de funcionamiento bajo interrupciones, donde la activacin de la interrupcin correspondiente indica situacin. En caso de recepcin con 9 bits, hay que leer el noveno bit en el registro RCSTA, y verificar la ausencia de error de recepcin. Lectura del byte recibido en el registro RCREG. El procedimiento se repite a continuacin a partir de la comprobacin del estado del bit RCIF, con el fin de recibir los datos siguientes. LA SCI EN MODO SNCRONO SEMIDUPLEX El funcionamiento en modo sncrono semiduplex descansa sobre los mismos principios que los vistos anteriormente, con nicamente dos diferencias importantes. Al tratarse de un modo semiduplex, la transmisin y la recepcin simultnea no es posible. El hecho de utilizar una de estas funciones desactiva automticamente a la otra. El hecho de estar en modo sncrono significa que el reloj de transmisin se enva conjuntamente con los datos. Cuando la SCI est en modo maestro, es ella la que suministra la seal de reloj en su pin CK, con una frecuencia fijada, como en el caso anterior, por el contenido del registro SPBRG. Cuando la SCI est en modo esclavo, recibe el reloj de transmisin en este mismo pin CK. La siguiente figura presenta el grfico de una transmisin en modo maestro, y la figura a continuacin presenta el de recepcin en el mismo modo. Los principios de transmisin y recepcin vistos para el modo asncrono son vlidos tambin en este caso. Para ello basta con activar correctamente los bits de seleccin de este modo en los registros TXSTA y RCSTA.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 33 de 58

Q 1Q 2 Q 3Q 4 Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2 Q 3Q 4

Q 3Q 4 Q 1Q 2 Q 3Q 4 Q 1Q 2 Q 3Q 4 Q 1Q 2 Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4Q 1 Q 2Q 3 Q 4

R C 7/R X /D T p in R C 6/T X /C K p in W rite to T X R E G re g


W rite w o rd 1

B it 0

B it 1 W ORD 1

B it 2

B it 7

B it 0

B it 1 W ORD 2

B it 7

T X IF b it
(In te rru p t fla g ) T it RMT TRMT b

W rite w o rd 2

T X E N b it

'1'
N o te : S y n c m a s te r m o d e ; S P B R G = '0'. C o n tin u o u s tra n s m is s io n o f tw o 8-b it w o rd s .

'1'

TRANSMISIN SNCRONA
R C 7/R X /D T p in R C 6/T X /C K p in W rite to T X R E G re g b it0 b it1 b it2 b it6 b it7

T X IF b it

T R M T b it

T X E N b it

TRANSMISIN SNCRONA A TRAVZ DE TXEN

Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3 Q 4

R C 7/R X /D T p in R C 6/T X /C K p in W rite to b it S R E N S R E N b it C R E N b it '0' R C IF b it (in te rru p t) R ead RXREG

b it0

b it1

b it2

b it3

b it4

b it5

b it6

b it7

'0'

N o te : T im in g d ia g ra m d e m o n s tra te s S Y N C m a s te r m o d e w ith b it S R E N = '1' a n d b it B R G H = '0'.

RECEPCIN SNCRONA

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 34 de 58

LOS REGISTROS DE CONTROL Y DE ESTADO DE LA SCI Ahora que conocemos los dos modos de funcionamiento de la interfaz serie asncrona o SCI, podemos examinar el papel de los diversos bits de estado y de control de sus registros internos. En primer lugar, vamos a ver el registro de estado TXSTA en el que cada bit tiene el significado particular que sigue. Registro TXSTA - Direccin 0x98

R /W -0 CSRC b it7

R /W -0 TX9

R /W -0 TXEN

R /W -0 SYNC

U -0

R /W -0 BR G H

R -1 TRMT

R /W -0 T X 9D b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n =V a lu e a t P O R re s e t

b it 7:

C S R C : C lo c k S o u rc e S e le c t b it A s y n c h ro n o u s m o d e D o n t c a re S y n c h ro n o u s m o d e 1 = M a s te r m o d e (C lo c k g e n e ra te d in te rn a lly fro m B R G ) 0 = S la v e m o d e (C lo c k fro m e x te rn a l s o u rc e )

b it 6:

T X 9: 9-b it Tra n s m it E n a b le b it 1 = S e le c ts 9-b it tra n s m is s io n 0 = S e le c ts 8-b it tra n s m is s io n T X E N : Tra n s m it E n a ble b it 1 = Tra n s m it e n a b le d 0 = Tra n s m it d is a b le d N o te : S R E N /C R E N o v e rrid e s T X E N in S Y N C m o d e . S Y N C : U S A R T M o d e S e le c t b it 1 = S y n c h ro n o u s m o d e 0 = A s y n c h ro n o u s m o d e U n i m p l e m e n te d : R e a d a s '0' B R G H : H ig h B a u d R a te S e le c t b it A s y n c h ro n o u s m o d e 1 = H ig h s p e e d 0 = L ow spe e d S y n c h ro n o u s m o d e U n u s e d in th is m o d e

b it 5:

b it 4:

b it 3: b it 2:

b it 1:

T R M T : Tra n s m it S h ift R e g is te r S ta tu s b it 1 = T S R e m p ty 0 = T S R fu ll T X 9D : 9th b it o f tra n s m it d a ta . C a n b e p a rity b it.

b it 0:

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 35 de 58

El segundo registro principal que controla la SCI es el registro RCSTA, en el que cada bit tiene el siguiente significado. Registro RCSTA - Direccin 0x18
R /W -0 SPEN b it7 R /W -0 RX9 R /W -0 SREN R /W -0 C REN R /W -0 ADDEN R -0 FERR R -0 OERR R -x R X 9D b it0

R = R e a d a b le b it W = W rita b le b it U = U n im p le m e n te d b it, re a d a s 0 - n =V a lu e a t P O R re s e t

b it 7:

S P E N : S e ria l P o rt E n a b le b it 1 = S e ria l p o rt e n a b le d (C o n g u re s R C 7/R X /D T a n d R C 6/T X /C K p in s a s s e ria l p o rt p in s ) 0 = S e ria l p o rt d is a b le d R X 9: 9-b it R e c e iv e E n a b le b it 1 = S e le c ts 9-b it re c e p tio n 0 = S e le c ts 8-b it re c e p tio n S R E N : S in g le R e c e iv e E n a b le b it A s y n c h ro n o u s m o d e D o n t c a re S y n c h ro n o u s m o d e - m a s te r 1 = E n a b le s s in g le re c e iv e 0 = D is a b le s s in g le re c e iv e T h is b it is c le a re d a fte r re c e p tio n is c o m p le te . S y n c h ro n o u s m o d e - s la v e U n u s e d in th is m o d e

b it 6:

b it 5:

b it 4:

C R E N : C o n tin u o u s R e c e iv e E n a b le b it A s y n c h ro n o u s m o d e 1 = E n a b le s c o n tin u o u s re c e iv e 0 = D is a b le s c o n tin u o u s re c e iv e S y n c h ro n o u s m o d e 1 = E n a b le s c o n tin u o u s re c e iv e u n til e n a b le b it C R E N is c le a re d (C R E N o v e rrid e s S R E N ) 0 = D is a b le s c o n tin u o u s re c e iv e

b it 3:

A D D E N : A d d re s s D e te c t E n a b le b it A s y n c h ro n o u s m o d e 9-b it (R X 9 = 1) 1 = E n a b le s a d d re s s d e te c tio n , e n a b le in te rru p t a n d lo a d o f th e re c e iv e b u rffe r w h e n R S R <8> is s e t 0 = D is a b le s a d d re s s d e te c tio n , a ll b y te s a re re c e iv e d , a n d n in th b it c a n b e u s e d a s p a rity b it F E R R : F ra m in g E rro r b it 1 = F ra m in g e rro r (C a n b e u p d a te d b y re a d in g R C R E G re g is te r a n d re c e iv e n e x t v a lid b y te ) 0 = N o fra m in g e rro r O E R R : O v e rru n E rro r b it 1 = O v e rru n e rro r (C a n b e c le a re d b y c le a rin g b it C R E N ) 0 = N o o v e rru n e rro r R X 9D : 9th b it o f re c e iv e d d a ta (C a n b e p a rity b it)

b it 2:

b it 1:

b it 0:

El ltimo registro de control de la SCI es el registro SPBRG, que permite definir la velocidad de transmisin. El contenido de este registro permite, en realidad, calcular la velocidad de transmisin que se utilizar segn las indicaciones de la siguiente tabla.
SYNC
0 1

B R G H = 0 (L wo S p e e d )

B R G H = 1 (H i g h S p e e d ) B a u d R a te = F O S C /(16(X +1)) NA

(A s y n c h ro n o u s ) B a u d R a te = F O S C /(64(X +1)) (S y n c h ro n o u s ) B a u d R a te = F O S C /(4(X +1)) X = v a lu e in S P B R G (0 to 255)

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 36 de 58

En modo asncrono, definido por la puesta a 0 del bit SYNC del registro TXSTA, se utilizan dos frmulas de clculo dependiendo del estado del bit BRGH de este mismo registro. En modo sncrono definido por la puesta a uno de este mismo bit SYNC, slo se usa una frmula. En este modo, el bit BRG no se utiliza. En las relaciones indicadas en la tabla anterior, evidentemente, la X indica el contenido del registro SPRBG. La siguiente tabla proporciona algunos valores tpicos para diferentes configuraciones y diversas frecuencias de reloj, as como los porcentajes de error obtenidos por este procedimiento con respecto a las velocidades tericas
BAU D R AT E (K ) 0.3 1.2 2.4 9.6 19.2 76.8 96 300 500 H IG H LO W

F O S C = 20 M H z
KBAU D NA NA NA NA 19.53 76.92 96.15 294.1 500 5000 19.53 % ERROR +1.73 +0.16 +0.16 -1.96 0 -

16 M H z S PBR G v a lu e KBAU D (d e c im a l) 255 64 51 16 9 0 255 NA NA NA NA 19.23 76.92 95.24 307.69 500 4000 15.625 4 MHz

% ERROR +0.16 +0.16 -0.79 +2.56 0 -

10 M H z S PBR G v a lu e KBAU D (d e c im a l) 207 51 41 12 7 0 255 NA NA NA 9.766 19.23 75.76 96.15 312.5 500 2500 9.766

% ERROR +1.73 +0.16 -1.36 +0.16 +4.17 0 -

7.15909 M H z S PBR G v a lu e % KBAU D (d e c im a l) ERROR 255 129 32 25 7 4 0 255 1 MHz NA NA NA 9.622 19.24 77.82 94.20 298.3 NA 1789.8 6.991 +0.23 +0.23 +1.32 -1.88 -0.57 -

S PBR G v a lu e (d e c im a l) 185 92 22 18 5 0 255 32.768 k H z

F O S C = 5.0688 M H z
BAU D R AT E (K ) 0.3 1.2 2.4 9.6 19.2 76.8 96 300 500 H IG H LO W KBAU D NA NA NA 9.6 19.2 79.2 97.48 316.8 NA 1267 4.950

3.579545 M H z

S PBR G S PBR G S PBR G S PBR G S PBR G % v a lu e KBAU D % v a lu e KBAU D % v a lu e KBAU D % v a lu e KBAU D % v a lu e E R R O R (d e c im a l) E R R O R (d e c im a l) E R R O R (d e c im a l) E R R O R (d e c im a l) E R R O R (d e c im a l) 0 0 +3.13 +1.54 +5.60 131 65 15 12 3 0 255 NA NA NA 9.615 19.231 76.923 1000 NA NA 100 3.906 +0.16 +0.16 +0.16 +4.17 103 51 12 9 0 255 NA NA NA 9.622 19.04 74.57 99.43 298.3 NA 894.9 3.496 +0.23 -0.83 -2.90 +3.57 -0.57 92 46 11 8 2 0 255 NA 1.202 2.404 9.615 19.24 83.34 NA NA NA 250 0.9766 +0.16 +0.16 +0.16 +0.16 +8.51 207 103 25 12 2 0 255 0.303 1.170 NA NA NA NA NA NA NA 8.192 0.032 +1.14 -2.48 26 6 0 255

BAUD RATE MODO SNCRONO


BAU D R AT E (K ) 0.3 1.2 2.4 9.6 19.2 76.8 96 300 500 H IG H LO W

F O S C = 20 M H z
KBAU D NA 1.221 2.404 9.469 19.53 78.13 104.2 312.5 NA 312.5 1.221 % ERROR +1.73 +0.16 -1.36 +1.73 +1.73 +8.51 +4.17 -

16 M H z S PBR G v a lu e (d e c im a l) K B A U D 255 129 32 15 3 2 0 0 255 NA 1.202 2.404 9.615 19.23 83.33 NA NA NA 250 0.977 4 MHz

% ERROR +0.16 +0.16 +0.16 +0.16 +8.51 -

10 M H z S PBR G v a lu e (d e c im a l) K B A U D 207 103 25 12 2 0 255 NA 1.202 2.404 9.766 19.53 78.13 NA NA NA 156.3 0.6104

% ERROR +0.16 +0.16 +1.73 +1.73 +1.73 -

7.15909 M H z S PBR G v a lu e % (d e c im a l) K B A U D E R R O R 129 64 15 7 1 0 255 1 MHz NA 1.203 2.380 9.322 18.64 NA NA NA NA 111.9 0.437 +0.23 -0.83 -2.90 -2.90 -

S PBR G v a lu e (d e c im a l) 92 46 11 5 0 255 32.768 k H z

F O S C = 5.0688 M H z
BAU D R AT E (K ) 0.3 1.2 2.4 9.6 19.2 76.8 96 300 500 H IG H LO W

3.579545 M H z

S PBR G S PBR G S PBR G S PBR G S PBR G v a lu e % v a lu e % % v a lu e % v a lu e % v a lu e K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) 0.31 1.2 2.4 9.9 19.8 79.2 NA NA NA 79.2 0.3094 +3.13 0 0 +3.13 +3.13 +3.13 255 65 32 7 3 0 0 255 0.3005 1.202 2.404 NA NA NA NA NA NA 62.500 3.906 -0.17 +1.67 +1.67 207 51 25 0 255 0.301 1.190 2.432 9.322 18.64 NA NA NA NA 55.93 0.2185 +0.23 -0.83 +1.32 -2.90 -2.90 185 46 22 5 2 0 255 0.300 1.202 2.232 NA NA NA NA NA NA 15.63 0.0610 +0.16 +0.16 -6.99 51 12 6 0 255 0.256 NA NA NA NA NA NA NA NA 0.512 0.0020 -14.67 1 0 255

BAUD RATE MODO ASNCRONO (BRGH = 0)


La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 37 de 58

BAU D R AT E (K ) 9.6 19.2 38.4 57.6 115.2 250 625 1250 BAU D R AT E (K ) 9.6 19.2 38.4 57.6 115.2 250 625 1250

F O S C = 20 M H z
KBAU D 9.615 19.230 37.878 56.818 113.636 250 625 1250 % ERROR +0.16 +0.16 -1.36 -1.36 -1.36 0 0 0

16 M H z S PBR G v a lu e (d e c im a l) K B A U D 129 64 32 21 10 4 1 0 9.615 19.230 38.461 58.823 111.111 250 NA NA

% ERROR +0.16 +0.16 +0.16 +2.12 -3.55 0 -

10 M H z S PBR G v a lu e (d e c im a l) K B A U D 103 51 25 16 8 3 9.615 18.939 39.062 56.818 125 NA 625 NA

% ERROR +0.16 -1.36 +1.7 -1.36 +8.51 0 -

7.16 M H z S PBR G v a lu e % (d e c im a l) K B A U D E R R O R 64 32 15 10 4 0 9.520 19.454 37.286 55.930 111.860 NA NA NA -0.83 +1.32 -2.90 -2.90 -2.90 -

S PBR G v a lu e (d e c im a l) 46 22 11 7 3 -

F O S C = 5.068 M H z
KBAU D 9.6 18.645 39.6 52.8 105.6 NA NA NA

4 MHz 3.579 M H z 1 MHz 32.768 k H z S PBR G S PBR G S PBR G S PBR G S PBR G v a lu e v a lu e v a lu e v a lu e % % % % % v a lu e E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) K B A U D E R R O R (d e c im a l) 0 -2.94 +3.12 -8.33 -8.33 32 16 7 5 2 NA 1.202 2.403 9.615 19.231 NA NA NA +0.17 +0.13 +0.16 +0.16 207 103 25 12 9.727 18.643 +1.32 -2.90 22 11 5 3 1 0 8.928 20.833 31.25 62.5 NA NA NA NA -6.99 +8.51 -18.61 +8.51 6 2 1 0 NA NA NA NA NA NA NA NA -

37.286 -2.90 55.930 -2.90 111.860 -2.90 223.721 -10.51 NA NA -

BAUD RATE MODO ASNCRONO (BRGH = 1)

EL CONVERTIDOR ANALGICO/DIGITAL
El convertidor analgico digital incorporado al PIC16F87X4 es un modelo de 10 bits precedido de un multiplexor de varias entradas. Como veremos a continuacin, el nmero de entradas se puede definir por software por medio de los bits apropiados del registro de control. La referencia de tensin utilizada para esta conversin se puede definir como Vdd o la tensin aplicada a RA3/AN3/Vref+, y tambien la referencia inferior como Vss o RA2/AN2/Vref-. Adems, este convertidor ofrece la particularidad de poder funcionar incluso en modo SLEEP. En la siguiente figura se presenta su esquema interno y, aunque en esta figura no pueda verlo, se utilizan cuatro registros: dos registros de control llamados ADCON0 y ADCON1, y dos registros de resultados ADRESL y ADRESH
C H S 2 :C H S 0 111 110 101 100 V A IN (I n p u t v o lta g e ) A /D C o n v e r te r 011 010 001 VDD V REF+ (R e fe re n c e v o lta g e ) P C F G 3 :P C F G 0 X000 o r X010 o r X100 X001 o r X011 o r X101 00XX o r 0X0X o r 1000 o r 1010 o r 1100 V REF(R e fe re n c e v o lta g e ) 1001 o r 1011 o r 1101 000

R E 2 /A N 7 (1 ) R E 1 /A N 6 (1 ) R E 0 /A N 5 (1 ) R A 5 /A N 4 R A 3 /A N 3 /V R E F + R A 2 /A N 2 /V R E F R A 1 /A N 1 R A 0 /A N 0

VSS P C F G 3 :P C F G 0

N o te

1:

N o t a v a ila b le o n 2 8 -p in d e v ic e s .

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 38 de 58

Las lneas de entrada del convertidor se comparten con las lneas del puerto A y del puerto E, las cuales deben estar configuradas como entradas cuando se utilizan para conversin. En caso contrario, el convertidor leer el nivel lgico presente en estos pines. El convertidor utiliza un tcnica de muestreo y retencin que equivale a cargar una capacidad con la tensin que hay que medir. Por esto, el multiplexor de la figura anterior no tiene necesidad de releer permanentemente la entrada seleccionada como entrada del conversor propiamente dicho, sino solamente durante el tiempo suficiente para cargar al condensador. Este tiempo, denominado Tad, depende de la velocidad de conversin deseada y de la frecuencia de reloj del PIC. Precisado todo esto, podemos estudiar el contenido de los registros de control, lo que nos facilitar el estudio del principio que hay que utilizar para programar a este convertidor. El primer registro, denominado ADCON0, est formado por los siguientes bits: Registro ADCON0 - Direccin 0x1F
R /W -0 ADC S1 b it7 R /W -0 ADC S0 R /W -0 C HS2 R /W -0 C HS1 R /W -0 C HS0 R /W -0 G O /D O N E U -0 R /W -0 ADON b it0

R =R e a d a b le b it W = W rita b le b it U =U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7-6:

A D C S 1: A D C S 0: A /D C o n v e rs io n C lo c k S e le c t b its 00 = F O S C /2 01 = F O S C /8 10 = F O S C /32 11 = F R C (c lo c k d e riv e d fro m a n R C o s c illa tio n )

b it 5-3: C H S 2: C H S 0: A n a lo g C h a n n e l S e le c t b its 000 = c h a n n e l 0, (R A 0/A N 0) 001 = c h a n n e l 1, (R A 1/A N 1) 010 = c h a n n e l 2, (R A 2/A N 2) 011 = c h a n n e l 3, (R A 3/A N 3) 100 = c h a n n e l 4, (R A 5/A N 4) 101 = c h a n n e l 5, (R E 0/A N 5)(1) 110 = c h a n n e l 6, (R E 1/A N 6)(1) 111 = c h a n n e l 7, (R E 2/A N 7)(1) b it 2: G O /D O N E : A /D C o n v e rs io n S ta tu s b it If A D O N = 1 1 = A /D c o n v e rs io n in p ro g re s s (s e ttin g th is b it s ta rts th e A /D c o n v e rs io n ) 0 = A /D c o n v e rs io n n o t in p ro g re s s (T h is b it is a u to m a tic a lly c le a re d b y h a rd w a re w h e n th e A /D c o n v e rs io n is c o m p le te ) b it 1: b it 0: U n i m p l e m e n te d : R e a d a s '0' A D O N : A /D O n b it 1 = A /D c o n v e rte r m o d u le is o p e ra tin g 0 = A /D c o n v e rte r m o d u le is s h u to ff a n d c o n s u m e s n o o p e ra tin g c u rre n t N o te 1: T h e s e c h a n n e ls a re n o t a v a ila b le o n th e 28-p in d e v ic e s .

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 39 de 58

Registro ADCON1 - Direccin 0x9F

U -0 ADFM b it7

U -0

R /W -0

U -0

R /W -0 PC FG 3

R /W -0 PC FG 2

R /W -0 PC FG 1

R /W -0 PC FG 0 b it0

R =R e a d a b le b it W = W rita b le b it U =U n im p le m e n te d b it, re a d a s 0 - n = V a lu e a t P O R re s e t

b it 7:

A D F M : A /D R e s u lt fo rm a t s e le c t 1 = R ig h t J u s tie d . 6 m o s t s ig n ic a n t b its o f A D R E S H a re re a d a s 0. 0 = L e ft J u s tie d . 6 le a s t s ig n ic a n t b its o f A D R E S L a re re a d a s 0. U n i m p l e m e n te d : R e a d a s '0' P C F G 3: P C F G 0: A /D P o rt C o n g u ra tio n C o n tro l b it s

b it 6-4: b it 3-0:

P C F G 3: A N 7 (1) A N 6 (1) A N 5 (1) PC FG 0 R E2 RE1 RE0 0000 0001 0010 0011 0100 0101 011x 1000 1001 1010 1011 1100 1101 1110 1111 A A D D D D D A D D D D D D D A A D D D D D A D D D D D D D A A D D D D D A A A A D D D D A A A A D D D A A A A A D D D

AN4 RA5

AN3 RA3 A V REF+ A V REF+ A V REF+ D V REF+ A V REF+ V REF+ V REF+ V REF+ D V REF+

AN2 RA2 A A A A D D D V REFA A V REFV REFV REFD V REFA A A A A A D A A A A A A D D

AN1 RA1 A A A A A A D A A A A A A A A

AN0 RA0

V REF+ VDD RA3 VDD RA3 VDD RA3 VDD RA3 VDD RA3 RA3 RA3 RA3 VDD RA3

V REFVSS VSS VSS VSS VSS VSS VSS RA2 VSS VSS RA2 RA2 RA2 VSS RA2

C HAN / R EFS 8/0 7/1 5/0 4/1 3/0 2/1 0/0 6/2 6/0 5/1 4/2 3/2 2/2 1/0 1/2

A = A n a lo g in p u t D = D ig ita l I/O N o te 1: T h e s e c h a n n e ls a re n o t a v a ila b le o n th e 28-p in d e v ic e s .

A D C lo c k S ouc r e (TA D ) O p e r a ti o n 2T O S C 8T O S C 32T O S C RC Legend: N o te 1: 2: 3: 4: A D C S 1: A D C S 0 00 01 10 11 20 M H z 100 n s (2) 400 n s (2) 1.6 s 2-6 s (1, 4)

D e v i c e F r e q u e n cy 5 MHz 400 n s (2) 1.6 s 6.4 s 2-6 s (1, 4) 1.25 M H z 1.6 s 6.4 s 25.6 s (3) 2-6 s (1, 4) 333.33 k H z 6 s 24 s (3) 96 s (3) 2 - 6 s (1)

S h a d e d c e lls a re a re o u ts id e o f re c o m m e n d e d ra n g e s . T h e R C s o u rc e h a s a ty p ic a l T A D tim e o f 4 s . T h e s e v a lu e s v io la te th e m in im u m re q u ire d T A D tim e . F o r fa s te r c o n v e rs io n tim e s , th e s e le c tio n o f a n o th e r c lo c k s o u rc e is re c o m m e n d e d . W h e n th e d e v ic e fre q u e n c ie s is g re a te r th a n 1 M H z , th e R C A /D c o n v e rs io n c lo c k s o u rc e is o n ly re c o m m e n d e d fo r s le e p o p e ra tio n . 5: F o r e x te n d e d v o lta g e d e v ic e s (L C ), p le a s e re fe r to E le c tric a l S p e c ic a tio n s s e c tio n .

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 40 de 58

Visto el contenido de estos registros, el principio de utilizacin del convertidor es muy sencillo de comprender. En efecto, basta con proceder de la siguiente forma: Configurar el convertidor, programando los bits de los registros de control. Activar o no las interrupciones que proceden del convertidor, programando el bit adecuado del registro PIE1 (ver el principio del captulo). Asegurarse de respetar el tiempo mnimo de muestreo, . Iniciar la conversin poniendo el bit GO/DONE a 1. Detectar el fin de la conversin, bien comprobando el paso a 0 de este mismo bit, bien por la recepcin de la interrupcin que procede del convertidor, si se ha autorizado. Entonces el resultado se puede leer en el registro ADRES. Despus, es posible pedir la conversin de otra va (o de la misma, por supuesto), pero observe que es necesario esperar un tiempo igual, al menos, a 2 Tad. Observe que tambin como, por una razn no precisada en la hojas de caractersticas, es necesario no poner a 1 los bits ADON y GO/DONE con la misma instruccin, sino proceder en dos veces. El reloj de conversin se debe seleccionar sabiendo que la conversin necesita un tiempo igual a 12 Tad para los 10 bits. Adems, para asegurar una conversin correcta, se debe respetar el tiempo mnimo Tad de 1.6ms. La tabla anterior muestra cules son las distintas posibilidades ofertadas por la programacin de los bits ADCS0 y ADCS1 , en funcin de la frecuencia de reloj del PIC. La descripcin del mdulo CC , hemos visto que era posible utilizarle para desencadenar una conversin analgico/digital. Esto no cambia en nada los principios expuestos anteriormente, ni el desarrollo general de la programacin de una conversin. La nica diferencia es con esta exposicin esta en hecho de que el bit GO/DONE no debe ponerlo a 1 por sus medios, sino que se hace por medio de CC . Si esta posibilidad de iniciacin la utiliza CC , sin que el convertidor haya sido activado por su bit ADONE, no tiene lugar ninguna accin por parte del convertidor, pero el temporizador se pone a 0 como si la orden de inicio del convertidor hubiera sido dada. Hay un ltimo punto importante que sealar: el funcionamiento del modo SLEEP. Es posible programar una conversin mientras que PIC est en modo SLEEP. En este caso, hay que utilizar imperativamente como reloj de conversin el modo RC, ya que el reloj normal del PIC est parado en este modo. Cuando se selecciona este reloj, el convertidor espera un ciclo de instruccin antes de comenzar la conversin, lo que permite ejecutar la instruccin SLEEP cuando la conversin se termina, su resultado se coloca en ADRES, el bit GO/DONE se pone a 0 y se genera una interrupcin si estaba autorizada. En este caso, el PIC sale del modo SLEEP gracias a ella. Si esta interrupcin no estaba autorizada el convertidor permanece en este estado hasta que el procesador sale del modo SLEEP, momento en que el resultado y el bit GO/DONE siguen siendo vlidos.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 41 de 58

EL TEMPORIZADOR WATCHDOG Como en el caso de los PIC 16C5X, PIC16CXX el temporizador watchdog de los PIC16F87X est provisto con su propio oscilador autnomo de tipo RC interno, por lo que no precisa ningn componente externo, y puede continuar funcionando incluso cuando el reloj del PIC est parado, por ejemplo, durante una instruccin SLEEP. Como todos sus homlogos, este temporizador cuenta permanentemente, y el hecho de desbordarse, es decir, de llegar a FF hace que se genere un reset del microcontrolador. Si el PIC est en modo SLEEP cuando se produce este desbordamiento, el efecto es que salga de dicho modo. Si no desea utilizar el watchdog, es posible invalidarlo mediante la escritura de un 0 en un bit especfico del circuito durante su programacin. Este bit no forma parte del espacio direccionable ni de los registros clsicos, por lo que no lo habr visto en ninguna de las figuras anteriores. No obstante, todos los programadores del PIC saben acceder a l. El tiempo de desbordamiento tpico de este temporizador es de 18 ms, aunque puede variar un poco con la tensin de alimentacin y la temperatura. Si este tiempo no es bastante largo, el predivisor del que hemos hablado para el temporizador 0 se puede asignar al temporizador watchdog gracias al bit PSA del registro OPTION (ver la descripcin de este registro en el apartado dedicado al temporizador 0). En estas condiciones, las tasas de predivisin definidas por este mismo registro varan, siendo el mximo permitido 128, con lo que es posible obtener tiempos de desbordamiento que llegan a 2,5 s. Las instrucciones CLRWDT y SLEEP ponen a 0 el temporizador watchdog, y a 1 el bit TO del registro de estado (ver la descripcin de este registro al principio del captulo). Esto permite evitar que se generen resets indeseados cuando el registro est, por ejemplo, en modo SLEEP. Estas dos instrucciones ponen a 0 tambin al predivisor, si esta asignado al temporizador watchdog.
F ro m T M R 0 C lo c k S o u rc e (F ig u re 5-2)
0 W D T T im e r 1 M U X P o s ts c a le r 8 8 - to - 1 M U X W DT E n a b le B it PSA P S 2:P S 0

To T M R 0 (F ig u re 5-2)
0 MUX 1 PSA

N o te : P S A a n d P S 2:P S 0 a re b its in th e O P T IO N _R E G re g is te r.

W DT T im e -o u t

A d d re s s 2007h 81h ,181h

N am e C o n g . b its
O P T IO N _R E G

B it 7 (1) R BPU

B it 6 B O D E N (1) IN T E D G

B it 5 C P1 T 0C S

B it 4 C P0 T 0S E

B it 3 P W R T E (1) PSA

B it 2 W DTE PS2

B it 1 FO SC 1 PS1

B it 0 FO SC 0 PS0

L e g e n d : S h a d e d c e lls a re n o t u s e d b y th e W a tc h d o g T im e r. N o te 1: S e e F ig u re 12-1 fo r o p e ra tio n o f th e s e b its .


La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 42 de 58

Programa fuente:
El programa fuente esta compuesto por una sucesin de lneas de programa. Cada lnea de programa esta compuesta por 4 campos separados por uno o ms espacios o tabulaciones. Estos campos son: [Etiqueta] Comando [Operando(s)] [;Comentario]

La etiqueta es opcional; El comando puede ser un mnemnico del conjunto de instrucciones; El operando esta asociado al comando, si no hay comando no hay operando, e inclusive algunos comandos no llevan operando. El comentario es opcional para el compilador aunque es buena prctica considerarlo obligatorio para el programador. La etiqueta, es el campo que empieza en la primer posicin de la lnea. No se pueden insertar espacios o tabulaciones antes de la etiqueta sino ser considerado comando. Identifica la lnea de programa haciendo que el compilador le asigne un valor automticamente. Si se trata de una lnea cuyo comando es una instruccin de programa del microcontrolador, se le asigna el valor de la direccin de memoria correspondiente a dicha instruccin (location counter). En otros casos se le asigna un valor de una constante, o la direccin de una variable, o ser el nombre de una macroinstruccin, etc. El comando puede ser un cdigo mnemnico de instruccin del microcontrolador, o una directiva o pseudoinstruccin para el compilador. En el primer caso ser directamente traducido a cdigo de maquina, en el segundo caso ser interpretado por el compilador y realizara alguna accin en tiempo de compilacin como ser asignar un valor a una etiqueta, etc. El campo de parmetros puede contener uno o ms parmetros separados por comas. Los parmetros dependen de la instruccin o directiva. Pueden ser nmeros o literales que representen constantes o direcciones. El campo de comentario debe comenzar con un caracter punto y coma. No necesita tener espacios o tabulaciones separndolo del campo anterior, e incluso puede empezar en la primer posicin de la lnea. El compilador ignora todo el texto que contenga la lnea despus de un caracter punto y coma. De esta manera pueden incluirse lneas que contengan solo comentarios, y es muy buena prctica hacer uso y abuso de esta posibilidad para que los programas resulten autodocumentados.

Conjunto de instrucciones
El conjunto de instrucciones de los microprocesadores PIC 16F87X consiste en un pequeo repertorio de solo 35 instrucciones de 14 bits, que pueden ser agrupadas para su estudio en tres a cinco grupos. En este curso se ha optado por clasificarlas, desde el punto de vista del programador, en cinco categoras bien definidas de acuerdo con la funcin y el tipo de operandos involucrados. En primer lugar se agrupan las instrucciones que operan con bytes y que involucran algn registro de la memoria interna.
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 43 de 58

En segundo lugar se analizaran las instrucciones que operan solo sobre el registro W y que permiten cargarle una constante implcita o incluida literalmente en la instruccin (literales). En tercer lugar se agrupan las instrucciones que operan sobre bits individuales de los registros de la memoria interna. En cuarto lugar se clasifican las instrucciones de control de flujo del programa, es decir las que permiten alterar la secuencia lineal de ejecucin de las instrucciones. Por ltimo se agrupan unas pocas instrucciones que llamaremos especiales, cuyas funciones o tipos de operandos son muy especficos y no encajan en ninguna de las clasificaciones anteriores.
B y te -o rie n te d le re g is te r o p e ra tio n s 13 8 7 6 O PC O DE d f (F IL E #)

d = 0 fo r d e s tin a tio n W d = 1 fo r d e s tin a tio n f f = 7-b it le re g is te r a d d re s s B it-o rie n te d le re g is te r o p e ra tio n s 13 10 9 7 6 O PC O DE b (B IT #) f (F IL E #)

F ie ld
f
0

D e s c r i p ti o n
R e g is te r le a d d re s s (0x 00 to 0x 7F ) W o rk in g re g is te r (a c c u m u la to r) B it a d d re s s w ith in a n 8-b it le re g is te r L ite ra l e ld , c o n s ta n t d a ta o r la b e l D o n 't c a re lo c a tio n (= 0 o r 1) T h e a s s e m b le r w ill g e n e ra te c o d e w ith x = 0. It is th e re c o m m e n d e d fo rm o f u s e fo r c o m p a tib ility w ith a ll M ic ro c h ip s o ftw a re to o ls . D e s tin a tio n s e le c t; d = 0: s to re re s u lt in W , d = 1: s to re re s u lt in le re g is te r f. D e fa u lt is d = 1 P ro g ra m C o u n te r T im e -o u t b it P o w e r-d o w n b it

W b k x

b = 3-b it b it a d d re s s f = 7-b it le re g is te r a d d re s s L ite ra l a n d c o n tro l o p e ra tio n s G e n e ra l 13 O PC O DE k = 8-b it im m e d ia te v a lu e C A L L a n d G O T O in s tru c tio n s o n ly 13 11 O PC O DE 10 k (lite ra l) 0 8 7 k (lite ra l) 0

PC TO PD

k = 11-b it im m e d ia te v a lu e

Descripcin del Campo de los cdigos de Operacin

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 44 de 58

Resumen de instrucciones (clasificacin segn el fabricante en tres grupos): En esta tabla de resumen del conjunto de instrucciones se pueden observar los mnemnicos, la explicacin, el nmero de ciclos, el cdigo de mquina y los bits afectados del registro STATUS para cada una de las instrucciones.
M n e m o n ic , O p e ra n d s D e s c r i p ti o n C y c le s MSb 14-B i t O p c o d e LSb S ta tu s A f f e c te d N o te s

B Y T E -O R IE N T E D F IL E R E G IS T E R O P E R TA IO N S A DDW F A NDW F C LRF C LRW COMF DEC F DEC FSZ IN C F IN C F S Z IO R W F MOVF MOVW F NOP RLF RRF SUBW F SW A PF XORW F BC F BSF BTFSC BTFSS A D D LW A N D LW C A LL C LRW DT G O TO IO R L W M O V LW R E T F IE R E T LW RETURN SLEEP S U B LW X O R LW f, d f, d f f, d f, d f, d f, d f, d f, d f, d f f, d f, d f, d f, d f, d f, b f, b f, b f, b k k k k k k k k k A dd W and f A N D W w ith f C le a r f C le a r W C o m p le m e n t f D e c re m e n t f D e c re m e n t f, S k ip if 0 In c re m e n t f In c re m e n t f, S k ip if 0 In c lu s iv e O R W w ith f M ove f M o v e W to f N o O p e ra tio n R o ta te L e ft f th ro u g h C a rry R o ta te R ig h t f th ro u g h C a rry S u b tra c t W fro m f S w a p n ib ble s in f E x c lu s iv e O R W w ith f B it C le a r f B it S e t f B it Te s t f, S k ip if C le a r B it Te s t f, S k ip if S e t A d d lite ra l a n d W A N D lite ra l w ith W C a ll s u b ro u tin e C le a r W a tc h d o g T im e r G o to a d d re s s In c lu s iv e O R lite ra l w ith W M o v e lite ra l to W R e tu rn fro m in te rru p t R e tu rn w ith lite ra l in W R e tu rn fro m S u b ro u tin e G o in to s ta n d b y m o d e S u b tra c t W fro m lite ra l E x c lu s iv e O R lite ra l w ith W 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1 1 1 1 (2) 1 (2) 1 1 2 1 2 1 1 2 2 2 1 1 1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0111 0101 0001 0001 1001 0011 1011 1010 1111 0100 1000 0000 0000 1101 1100 0010 1110 0110 dfff dfff lfff 0xxx dfff dfff dfff dfff dfff dfff dfff lfff 0xx0 dfff dfff dfff dfff dfff ffff ffff ffff xxxx ffff ffff ffff ffff ffff ffff ffff ffff 0000 ffff ffff ffff ffff ffff C ,D C ,Z Z Z Z Z Z Z Z Z 1,2 1,2 2 1,2 1,2 1,2,3 1,2 1,2,3 1,2 1,2

C C C ,D C ,Z Z

1,2 1,2 1,2 1,2 1,2 1,2 1,2 3 3

B IT-O R IE N T E D F IL E R E G IS T E R O P E R TA IO N S 01 01 01 01 00bb 01bb 10bb 11bb bfff bfff bfff bfff ffff ffff ffff ffff C ,D C ,Z Z T O ,P D Z

L IT E R A L A N D C O N T O R L O P E R AT IO N S 11 11 10 00 10 11 11 00 11 00 00 11 11 111x 1001 0kkk 0000 1kkk 1000 00xx 0000 01xx 0000 0000 110x 1010 kkkk kkkk kkkk 0110 kkkk kkkk kkkk 0000 kkkk 0000 0110 kkkk kkkk kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk 1000 0011 kkkk kkkk

T O ,P D C ,D C ,Z Z

N o te 1: W h e n a n I/O re g is te r is m o d ie d a s a fu n c tio n o f its e lf ( e .g ., MOVF PORTB, 1), th e v a lu e u s e d w ill b e th a t v a lu e p re s e n t o n th e p in s th e m s e lv e s . F o r e x a m p le , if th e d a ta la tc h is '1' fo r a p in c o n g u re d a s in p u t a n d is d r iv e n lo w b y a n e x te rn a l d e v ic e , th e d a ta w ill b e w ritte n b a c k w ith a '0'. 2: If th is in s tru c tio n is e x e c u te d o n th e T M R 0 re g is te r (a n d , w h e re a p p lic a b le , d = 1), th e p re s c a le r w ill b e c le a re d if a s s ig n e d to th e T im e r0 M o d u le . 3: If P ro g ra m C o u n te r (P C ) is m o d ie d o r a c o n d itio n a l te s t is tr u e , th e in s tru c tio n re q u ire s tw o c y c le s . T h e s e c o n d c y c le is e x e c u te d a s a N O P.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 45 de 58

Modos de direccionamiento
Direccionamiento de la memoria de datos (RAM) La memoria interna se direcciona en forma directa por medio de los 7 bits "f" contenidos en las instrucciones que operan sobre registros. De esta manera se puede direccionar cualquier posicin desde la 00 a la 7F. Como se vi en el captulo correspondiente a los mapas de memoria, las direcciones 80 a FF, 100 a 17F y 180 a 1FF corresponden a los bancos de registros, el programador deber asegurarse de haber programado los bits de seleccin de banco en el registro STATUS. El registro FSR, es un puntero para direccionamiento indirecto. La posicin 00 del mapa de RAM es la llamada direccin indirecta. S en cualquier instruccin se opera con la direccin 00, en realidad se estar operando con la direccin a donde apunte el contenido del FSR. Por ejemplo si el FSR contiene el valor 14, una instruccin que opere sobre la direccin 0, operara en realidad sobre la direccin 14. Se puede decir en este ejemplo que la posicin 14 de memoria fue direccionada en forma indirecta a travs del puntero FSR. Ejemplo : ; Esta porcin de programa borra 5 posiciones de memoria a partir de la direccin 0x20 FSR equ 04 ;(definicin al comienzo del programa) ..................................... ..................................... movlw 5 ;prepara para repetir 5 veces movwf 0x7F ;(el registro 0x7F es el contador del loop) movlw 0x20 ;apunta a la direccin 0x20 movwf FSR ; loop: clrf INDF ;borra una posicin de memoria incf FSR,1 ;apunta a la siguiente decfsz 0x7F,1 ;si todava no borra todas goto loop ;sige borrando ..................................... ..................................... El direccionamiento indirecto es muy til para el procesamiento de posiciones consecutivas de memoria, como en el ejemplo, o para el direccionamiento de datos en subrutinas. Direccionamiento de la memoria de programa (EPROM, OTP)
D ire c t A d d re s s in g R P 1: R P 0 6 fro m o p c o d e 0 IR P In d ire c t A d d re s s in g 7 F S R re g is te r 0

b a n k s e le c t

lo c a tio n s e le c t 00 00h 01 80h 10 100h 11 180h

b a n k s e le c t

lo c a tio n s e le c t

D a ta M e m o ry (1 )

7F h Bank 0

FFh Bank 1

17F h Bank 2

1F F h Bank 3

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 46 de 58

La instruccin GOTO dispone solo de 11 bits en el cdigo de operacin para especificar la direccin de destino del salto. Al ejecutar una instruccin GOTO el microprocesador toma los dos bits que restan para completar la direccin de 13 bits, de los bits 3 y 4 del registro PCLATH. Ver la siguiente figura.
PC H 12 PC 5 P C L AT H <4:0> 8 8 7 PC L 0 In s tru c tio n w ith P C L as D e s tin a tio n A LU

P C L AT H PC H 12 PC 2 P C L A T H <4:3> 11 O p c o d e <10:0 > 1 1 10 8 7 PC L 0 GOTO,CALL

P C L AT H

Direccionamiento directo con instruccin GOTO y CALL Deber tenerse en cuenta adems que es posible avanzar de una pgina a otra en forma automtica cuando el PC se incrementa. Esto ocurre si el programa empieza en una pgina y sigue en la siguiente. Sin embargo, al incrementarse el PC desde la ltima posicin de una pgina a la primera de la siguiente, los bits 3 y 4 del PCLATH no se modifican, y por lo tanto s se ejecuta una instruccin GOTO, CALL o alguna que acte sobre el PC, esta producir un salto a la pgina anterior, a menos que el programador tenga la precaucin de actualizar el valor de dichos bits. Por este motivo es conveniente dividir el programa en mdulos o rutinas que estn confinados a una pgina. En el caso de la instruccin CALL, el direccionamiento es igual y como el stack, tiene un tamao de 13 bits la direccin de retorno se almacena completa, pero al igual que al pasar de una pagina a otra en un programa lineal, los bits 3 y 4 del PCLATH no se actualizan.

Herramientas de desarrollo
UNA MIRADA RAPIDA AL MPLAB. Qu es el MPLAB ? EL MPLAB es un "Entorno de Desarrollo Integrado " (Integrated Development Environment, IDE) que corre en "Windows ", mediante el cual Usted puede desarrollar aplicaciones para los microcontroladores de las familias PIC 16/17. EL MPLAB le permite a Usted escribir, depurar y optimizar los programas (firmware) de sus diseos con PIC 16/17. EL MPLAB incluye un editor de texto, un simulador y un organizador de proyectos. Adems, el MPLAB soporta el emulador PICMASTER y a otras herramientas de desarrollo de Microchip como el PICSTART - Plus.

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 47 de 58

De que forma le ayuda el MPLAB ? Con el MPLAB Usted puede: Depurar sus programas fuente. Detectar errores automticamente en sus programas fuente para editarlos. Depurar los programas utilizando puntos de corte (breakpoints) mediante valores de los registros internos. Observar el flujo del programa con el simulador MPLAB -SIM, seguirlo en tiempo real utilizando el emulador PICMASTER. Realizar medidas de tiempo utilizando un cronmetro. Mirar variables en las ventanas de observacin. Encontrar respuestas rpidas a sus preguntas, utilizando la Ayuda en lnea del MPLAB. LAS HERRAMIENTAS DEL MPLAB El Organizador de Proyectos (Proyect Manager). El organizador de proyectos (Proyect Manager) es parte fundamental de MPLAB. Sin crear un proyecto Usted no puede realizar depuracin simblica. Con el Organizador de Proyectos (Proyect manager) puede utilizar las siguientes operaciones: Crear un proyecto. Agregar un archivo de programa fuente de proyecto. Ensamblar o compilar programas fuente. Editar programas fuente. Reconstruir todos los archivos fuente, o compilar un solo archivo. Depurar su programa fuente. Software ensamblador: El software ensamblador que presenta Microchip viene en dos presentaciones, una, para entorno DOS llamado MPASM.EXE y la otra, para entorno Windows llamado MPASMWIN.EXE Las dos presentaciones soportan a TODOS los microcontroladores de la familia PIC de Microchip. El conjunto de instrucciones de los microcontroladores PIC es en esencia la base del lenguaje ensamblador soportado por este software. Directivas de uso frecuente: Son indicaciones para el compilador, no generan cdigo. #DEFINE ej. #define <nombre> [<valor a remplazar>] explicacin: declara una cadena de texto como substituto de otra END ej. end explicacin: indica fin de programa
La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 48 de 58

EQU ej. status equ 05 explicacin: define una constante de ensamble INCLUDE ej. include <PIC16F84.h> explicacin: incluye en el programa un archivo con cdigo fuente ORG ej. org 0x100 explicacin: ensambla a partir de la direccin especificada Para informacin ms completa referirse a la gua rpida del MPASM. Una vez instalado adecuadamente el MPLAB, para realizar la simulacin de un programa deben seguirse los siguientes pasos:

Lista de pasos:
1. Haga doble click en el cono correspondiente a MPLAB. 2. Crear el archivo fuente correspondiente (men File...New Source). 3. Salve el archivo (con extensin .ASM) una vez terminada su edicin (men FILE...Save). 4. Debe a continuacin crearse un nuevo proyecto (men Project...New Project). 5. Cuando aparezca la ventana de New Project editar las cajas de texto: Project path and Name y Development Mode, hacer click en <OK>. 6. En la siguiente ventana Edit Project, hacer click en la seccin Non-project files sobre el nombre del archivo fuente realizado en los pasos 2 y 3. 7. Haga click en el botn <=add y luego de que ste aparezca en la seccin Project Files haga click sobre el botn <OK>. 8. Salvar el proyecto (en el men Project...Save project). 9. Realizar la "construccin de todo el proyecto" (men Project...Build All). 10. En esta etapa se realiza en forma automtica el ensamble de nuestro programa fuente y el vaciado de ste en memoria de simulacin. El proceso de ensamble generar un archivo de errores en caso de que estos existan, s es as deben corregirse directamente sobre el archivo fuente, salvar las correcciones y reconstruir el proyecto (men Project...Build All). <<<En esta etapa del proceso ya se tiene el entorno listo para la simulacin>>>

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 49 de 58

Vista del Entorno de Programacin MPLAB Como en la mayora de las aplicaciones Windows la pantalla se divide en varias secciones: 1. Barra de ttulo: Se observa el nombre del proyecto 2. Barra de menus: Acceso a las diferentes opciones del entorno 3. Barra de herramientas: Cada cono ejecuta las acciones correspondientes 4. Barra de estados: Indica el estado del entorno y sus ventanas Simulacin: 1. Resetear el procesador (men Debug...Run...Reset) con F6 con el cono correspondiente en la barra de herramientas. 2. Crear una nueva ventana donde se incluyan las variables que queremos tener en cuenta (Window...New Watch Window) 3. Empezar a correr paso a paso el programa haciendo el seguimiento detallado de todos y cada uno de los pasos (men Debug...Run...Step) con la tecla F7 con el cono correspondiente en la barra de herramientas. El proceso de simulacin nos permite detectar y corregir problemas de lgica, problemas de situaciones que no hayamos tenido en cuenta que son errores que no pueden ser detectados en el momento del ensamble del programa. Nota: El programa MPLAB puede obtenerse en forma gratuita de la direccin: http://www.microchip.com/10/Tools/mTools/MPLAB/index.htm

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 50 de 58

1 4

DISPLAYK1 DISPLAY KC D

DISPLAYK2 DISPLAY KC

DISPLAYK3 DISPLAY KC

APENDICE 1

VCC

Circuito Propuesto

C15 100nF RC0/T1OSO/T1CKI RC1/T1OSI/CCP2


Comn Comn Comn

U5

POT2 1K

2 3 4 5 6 7 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDI RC5/SDO RC6/TX/CK RC7/RX/CT TXD RXD Q4 R23 4K7 R24 4K7 R25 4K7 BC557 BC557 BC557 VCC Q5 Q6 15 16 17 18 23 24 25 26

RA0/NA0 RA1/NA1 RA2/NA2 RA3/NA3 RA4/TOCKI RA5/AN4/SS

sa sb sc sd se sf sg sP 470 470 470 470 470 470 470 470 a b c d e f g 8 P a b c d e f g 8 P a b c d e f g 8 P

R15 R16 R17 R18 R19 R20 R21 R22

VCC

R12 27K

T1 BC557 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 8 9 10

sa sb sc sd se sf sg sP RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RSD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 19 20 21 22 27 28 29 30

33 34 35 36 37 38 39 40

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

MCLR/VPP

R13 150K

C6

R14 39K

15pF C10

13 14

OSC1/CLKIN OSC2/CLKOUT

PIC16C74A

15pF VCC L2 22mHy C4 2 TXD C2 +5V C13 100nF 3 VCC 10uF RXD 11 10 1 3 12 9 10uF V+ T1IN T2IN C1+ C1R1OUT R2OUT T1OUT T2OUT U4 MAX232EJE

GND

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba
I2 14 7 C3 C2+ C2R1IN R2IN V4 5 13 8 6 10uF 10uF B U6 MC7805T 1 Vin 1 6 2 7 3 8 4 9 5 C5 DB9

X2 4Mhz

VCC

C14 100nF

B1

D1

1N4007

+12V

C12 100nF

1 2 3

BOR3

D2

1N4007

C11 1000uF

Macho PCB 90'

Title

A Size A4 Date: File: 12-Sep-2002 \\Oscar\c_oscar\ADVSCH\PROJECTS\CursoUC\Curso\Curso.DDB 3 Sheet of Drawn By: 4 Number Revision

Pgina 51 de 58
2

APENDICE 2 - PIC16F87X
12.1
ADDLW Syntax: Operands: Operation: Status Affected: Description:

Instruction Descriptions
Add Literal and W [label] ADDLW 0 k 255 (W) + k (W) C, DC, Z The contents of the W register are added to the eight bit literal k and the result is placed in the W register. Operation: Status Affected: Description: k ANDWF Syntax: Operands: AND W with f [label] ANDWF 0 f 127 d [0,1] (W) .AND. (f) (destination) Z AND the W register with register 'f'. If 'd' is 0, the result is stored in the W register. If 'd' is 1, the result is stored back in register 'f'. f,d

BCF ADDWF Syntax: Operands: Operation: Status Affected: Description: Add W and f [label] ADDWF 0 f 127 d [0,1] (W) + (f) (destination) C, DC, Z Add the contents of the W register with register f. If d is 0, the result is stored in the W register. If d is 1, the result is stored back in register f. f,d Syntax: Operands: Operation: Status Affected: Description:

Bit Clear f [label] BCF 0 f 127 0b7 0 (f<b>) None Bit 'b' in register 'f' is cleared. f,b

BSF Syntax: ANDLW Syntax: Operands: Operation: Status Affected: Description: AND Literal with W [label] ANDLW 0 k 255 (W) .AND. (k) (W) Z The contents of W register are ANDed with the eight bit literal 'k'. The result is placed in the W register. k Operation: Status Affected: Description: Operands:

Bit Set f [label] BSF 0 f 127 0b7 1 (f<b>) None Bit 'b' in register 'f' is set. f,b

BTFSS Syntax: Operands: Operation: Status Affected: Description:

Bit Test f, Skip if Set [label] BTFSS f,b 0 f 127 0b<7 skip if (f<b>) = 1 None If bit b in register f is 0, the next instruction is executed. If bit b is 1, then the next instruction is discarded and a NOP is executed instead making this a 2TCY instruction.

CLRF Syntax: Operands: Operation: Status Affected: Description:

Clear f [label] CLRF 0 f 127 00h (f) 1Z Z The contents of register f are cleared and the Z bit is set. f

CLRW Syntax: BTFSC Syntax: Operands: Operation: Status Affected: Description: Bit Test, Skip if Clear [label] BTFSC f,b 0 f 127 0b7 skip if (f<b>) = 0 None If bit b in register f is 1, the next instruction is executed. If bit b, in register f, is 0, the next instruction is discarded, and a NOP is executed instead, making this a 2TCY instruction. Operands: Operation: Status Affected: Description:

Clear W [ label ] CLRW None 00h (W) 1Z Z W register is cleared. Zero bit (Z) is set.

CLRWDT Syntax: CALL Syntax: Operands: Operation: Call Subroutine [ label ] CALL k 0 k 2047 (PC)+ 1 TOS, k PC<10:0>, (PCLATH<4:3>) PC<12:11> None Call Subroutine. First, return address (PC+1) is pushed onto the stack. The eleven bit immediate address is loaded into PC bits <10:0>. The upper bits of the PC are loaded from PCLATH. CALL is a two cycle instruction. Operands: Operation:

Clear Watchdog Timer [ label ] CLRWDT None 00h WDT 0 WDT prescaler, 1 TO 1 PD TO, PD CLRWDT instruction resets the Watchdog Timer. It also resets the prescaler of the WDT. Status bits TO and PD are set.

Status Affected: Description:

Status Affected: Description:

COMF Syntax: Operands: Operation: Status Affected: Description:

Complement f [ label ] COMF 0 f 127 d [0,1] (f) (destination) Z The contents of register f are complemented. If d is 0, the result is stored in W. If d is 1, the result is stored back in register f. f,d

GOTO Syntax: Operands: Operation: Status Affected: Description:

Unconditional Branch [ label ] GOTO k 0 k 2047 k PC<10:0> PCLATH<4:3> PC<12:11> None GOTO is an unconditional branch. The eleven bit immediate value is loaded into PC bits <10:0>. The upper bits of PC are loaded from PCLATH<4:3>. GOTO is a two cycle instruction.

DECF Syntax: Operands: Operation: Status Affected: Description:

Decrement f [label] DECF f,d 0 f 127 d [0,1] (f) - 1 (destination) Z Decrement register f. If d is 0, the result is stored in the W register. If d is 1, the result is stored back in register f. Operation: Status Affected: Description: INCF Syntax: Operands: Increment f [ label ] INCF f,d 0 f 127 d [0,1] (f) + 1 (destination) Z The contents of register f are incremented. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f.

DECFSZ Syntax: Operands: Operation: Status Affected: Description:

Decrement f, Skip if 0 [ label ] DECFSZ f,d 0 f 127 d [0,1] (f) - 1 (destination); skip if result = 0 None The contents of register f are decremented. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f. If the result is 1, the next instruction is executed. If the result is 0, then a NOP is executed instead making it a 2TCY instruction. Status Affected: Description: INCFSZ Syntax: Operands: Operation: Increment f, Skip if 0 [ label ] INCFSZ f,d 0 f 127 d [0,1] (f) + 1 (destination), skip if result = 0 None The contents of register f are incremented. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f. If the result is 1, the next instruction is executed. If the result is 0, a NOP is executed instead making it a 2TCY instruction.

IORLW Syntax: Operands: Operation: Status Affected: Description:

Inclusive OR Literal with W [ label ] IORLW k 0 k 255 (W) .OR. k (W) Z The contents of the W register are ORed with the eight bit literal 'k'. The result is placed in the W register.

MOVLW Syntax: Operands: Operation: Status Affected: Description:

Move Literal to W [ label ] k (W) None The eight bit literal 'k' is loaded into W register. The dont cares will assemble as 0s. MOVLW k 0 k 255

MOVWF IORWF Syntax: Operands: Operation: Status Affected: Description: Inclusive OR W with f [ label ] IORWF f,d 0 f 127 d [0,1] (W) .OR. (f) (destination) Z Inclusive OR the W register with register 'f'. If 'd' is 0 the result is placed in the W register. If 'd' is 1 the result is placed back in register 'f'. Syntax: Operands: Operation: Status Affected: Description:

Move W to f [ label ] (W) (f) None Move data from W register to register 'f'. MOVWF f 0 f 127

NOP Syntax: MOVF Syntax: Operands: Operation: Status Affected: Description: Move f [ label ] MOVF f,d 0 f 127 d [0,1] (f) (destination) Z The contents of register f are moved to a destination dependant upon the status of d. If d = 0, destination is W register. If d = 1, the destination is file register f itself. d = 1 is useful to test a file register since status flag Z is affected. Operands: Operation: Status Affected: Description:

No Operation [ label ] None No operation None No operation. NOP

RETFIE Syntax: Operands: Operation: Status Affected:

Return from Interrupt [ label ] None TOS PC, 1 GIE None RETFIE

RLF Syntax: Operands: Operation: Status Affected: Description:

Rotate Left f through Carry [ label ] RLF f,d 0 f 127 d [0,1] See description below C The contents of register f are rotated one bit to the left through the Carry Flag. If d is 0, the result is placed in the W register. If d is 1, the result is stored back in register f.
C Register f

RETLW Syntax: Operands: Operation: Status Affected: Description:

Return with Literal in W [ label ] RETLW k RRF Syntax: Operands: Operation: Status Affected: Description: Rotate Right f through Carry [ label ] RRF f,d 0 f 127 d [0,1] See description below C The contents of register f are rotated one bit to the right through the Carry Flag. If d is 0, the result is placed in the W register. If d is 1, the result is placed back in register f.
C Register f

0 k 255 k (W); TOS PC None The W register is loaded with the eight bit literal k. The program counter is loaded from the top of the stack (the return address). This is a two cycle instruction.

RETURN Syntax: Operands: Operation: Status Affected: Description:

Return from Subroutine [ label ] None TOS PC None Return from subroutine. The stack is POPed and the top of the stack (TOS) is loaded into the program counter. This is a two cycle instruction. Operands: Operation: RETURN SLEEP Syntax: [ label ] None 00h WDT, 0 WDT prescaler, 1 TO, 0 PD TO, PD The power-down status bit, PD is cleared. Time-out status bit, TO is set. Watchdog Timer and its prescaler are cleared. The processor is put into SLEEP mode with the oscillator stopped. SLEEP

Status Affected: Description:

SUBLW Syntax: Operands: Operation: Description:

Subtract W from Literal [ label ] SUBLW k 0 k 255 k - (W) (W) The W register is subtracted (2s complement method) from the eight bit literal 'k'. The result is placed in the W register.

XORLW Syntax: Operands: Operation: Status Affected: Description:

Exclusive OR Literal with W [label] XORLW k

0 k 255 (W) .XOR. k (W) Z The contents of the W register are XORed with the eight bit literal 'k'. The result is placed in the W register.

Status Affected: C, DC, Z

SUBWF Syntax: Operands: Operation: Description:

Subtract W from f [ label ] SUBWF f,d 0 f 127 d [0,1] (f) - (W) (destination) Subtract (2s complement method) W register from register 'f'. If 'd' is 0, the result is stored in the W register. If 'd' is 1, the result is stored back in register 'f'.

XORWF Syntax: Operands: Operation: Status Affected: Description:

Exclusive OR W with f [label] XORWF f,d 0 f 127 d [0,1] (W) .XOR. (f) (destination) Z Exclusive OR the contents of the W register with register 'f'. If 'd' is 0, the result is stored in the W register. If 'd' is 1, the result is stored back in register 'f'.

Status Affected: C, DC, Z

SWAPF Syntax: Operands: Operation: Status Affected: Description:

Swap Nibbles in f [ label ] SWAPF f,d 0 f 127 d [0,1] (f<3:0>) (destination<7:4>), (f<7:4>) (destination<3:0>) None The upper and lower nibbles of register 'f' are exchanged. If 'd' is 0, the result is placed in W register. If 'd' is 1, the result is placed in register 'f'.

Notas y Referencias El Presente apunte ha sido concebido para uso de los alumnos durante el curso Nivel I de microcontroladores de la familia flash PIC16F87X dictado por el docente OSCAR CELIS. Bibliografia PIC 16/17 microcontroller data Book, Microchip MPASM assembler. User's Guide, Microchip MPLAB IDE User's Guide, Microchip. www.microchip.com

La impresin est solo permitida para la CEE - UTN Facultad Regional Crdoba

Pgina 58 de 58

Vous aimerez peut-être aussi