UTP – FIEM – ELECTRÓNICA – 2011 – I CIRCUITOS DIGITALES II Microcontroladores Pic 16F84A. Los PIC son una extensa familia de microcontroladores divididos en tres gamas, la gama baja con memoria de programa de 12 bits, la gama media y la gama alta con memoria de programa de 14 bits. En la tabla 1 se presentan algunos miembros de cada una de estas gamas con resumen de sus principales características. Nosotros utilizaremos el PIC 16f84 por sus especiales características. Los microcontroladores PIC 16f84 com memoria tipo FLASH y PIC 16c84 con memoria EEPROM, son potentes, flexibles y fáciles de emplear debido entre otras carcterísticas a que este tipo de memoria permite su grabación y su borrado miles de veces de forma casi instantánea al realizarse eléctricamente a diferencia de los microcontroladores basados en memoria EPROM que necesita un borrador ultravioleta. Pueden utilizarse tanto en el desarrollo como en la producción. Su coste se reduce frente a otros modelos ya que no necesitan encapsulados cerámicos con ventana de programación como los chips EPRPOMs. Disponen ademas de una EEPROM de 64 bytes para datos, lo que elimina la necesidad de una memoria EEPROM externa, y aun mas importante, pueden ser programados "en circuito" sin necesidad de ser retirados, lo que permite su grabación después del ensamblado y que los programas pueden ser actualizados o modificados para eliminar errores detectados con posterioridad o para introducir versiones mas actualizadas del programa. El PIC 16f84 pertenece a la gama media del fabricante, poseyendo unas características óptimas para su empleo en el aprendizaje. Este microntrolador con memoria FLASH ésta fabricado con tecnología CMOS. Su consumo es muy reducido siendo el circuito completamente estático por lo que su reloj puede detenerse completamente sin pérdida de los contenidos de los registros. Un consumo típico es de 2 mA a 4 Mhz y unos 40 microamperios en modo Sleep. Al ser un circuito CMOS, todas las entradas no usadas deben ser llevadas a +5V. El encapsulado de 18 pines así como la descripción del patillaje puede verse en la figura 1. Set de instrucciones Microcontrolador PIC. Estas son las todas las instrucciones que hay para poder programar el Pic 16c5x, 16c64, 16c71, 16c74, 16c84, 16f84, 16f873. Las encontraremos en orden alfabetico. En total son 37 y haciendo un clic sobre una de ellas podemos acceder a su respectiva descripción: NOTA: Las instrucciones OPTION y TRIS incluidas en este listado, no forman parte del set de instrucciones de los PIC 16f84 y 16f873. DOCENTE: Ing. Luis Pacheco Cribillero JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I CIRCUITOS DIGITALES II ADDLW CALL ADDWF ANDLW ANDWF BCF BSF BTFSC BTFSS CLRF CLRW CLRWDT COMF DECF DECFSZ GOTO ADDLW ADD Literal to W ADDWF ADD W to F Sintaxis ADDLW k Sintaxis ADDWF f, d Codificación 11 Codificación Palabras, Ciclos 1, 1 0001 11df 00 0111 dfff Operación W + k -> W Palabras, Ciclos 1, 1 111x kkkk SLEEP SUBLW SUBWF SWAPF TRIS XORLW XORWF kkkk Añade el contenido de W al contenido de k, y almacena el resultado en W Descripción Atención: Esta instrucción no existe en los Pic 16c5X Operación W + f -> W si d=0 Bit estado de C, DC, Z Añade el contenido de W al contenido de f, y almacena el Descripción resultado en W si d=0, y en f si d=1 ANDLW AND Literal and W ANDWF AND W with F Sintaxis ANDLW k Sintaxis ANDWF f, d Codificación 0001 01df ffff 00 0101 dfff Palabras, Ciclos 1, 1 Palabras, Ciclos 1, 1 Operación W AND k -> W Bit estado Z ffff W + f -> f si d=1 Bit de estado C, DC, Z Codificación 1110 kkkk kkkk 11 1001 kkkk ffff Kkkk ffff W AND f -> f si d=1 de Operación W AND f -> W si d=0 Efectúa un AND lógico entre el contenido de W y el Descripción literal k, y lo almacena en W DOCENTE: Ing. Luis Pacheco Cribillero Bit estado de Z Efectúa un AND lógico entre el contenido de W y Descripción el contenido de f, y almacena el resultado en W si d=0, y en f si d=1 JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I CIRCUITOS DIGITALES II BCF Bit Clear F BSF Bit Set F Sintaxis BCF f, b Sintaxis BSF f, b Codificación 0101 bbbf ffff 01 01bb bfff Palabras, Ciclos 1, 1 Operación 1 -> b(f) Bit estado Ninguno Codificación 0100 bbbf ffff 01 00bb bfff Palabras, Ciclos 1, 1 Operación 0 -> b(f) Bit estado de ffff Ninguno de Descripción Pone a uno el bit numero b de f Descripción Pone a cero el bit numero b de f BTFSC Bit Test, Skip If Clear BTFSS Bit Test, Skip If Set Sintaxis BTFSC f, b Sintaxis BTFSS f, b Codificación 0110 bbbf ffff 01 10bb bfff ffff Codificación 0111 01 Palabras, Ciclos 1, 1 o 2 Palabras, Ciclos 1, 1 o 2 Operación Salta si b(f)=0 Operación Salta si b(f)=1 Bit estado Ninguno Bit estado Ninguno de Si el bit numero b de f es nulo, la instrucción que sigue a esta se ignora y se Descripción trata como un NOP. En este caso, y solo en este caso, la instrucción BTFSC precisa dos ciclos para ejecutarse. de bbbf 11bb ffff bfff Subrutina Call CLRF Clear F with F Sintaxis CALL k Sintaxis CLRF f Codificación 1001 kkkk kkkk 10 0kkk kkkk Palabras, Ciclos 1, 2 Operación En el caso de los 16c64, 71, 74, 84: PC + 1 -> Pila, k -> PC(0-10), PCLATH(3,4) -> PC(11,12) Bit estado de Descripción Guarda Codificación 0000 011f 00 Ninguno la DOCENTE: Ing. Luis Pacheco Cribillero dirección de ffff Si el bit numero b de f esta en uno, la instrucción que sigue a esta se ignora y se trata Descripción como un NOP. En este caso, y solo en este caso, la instrucción BTFSC precisa dos ciclos para ejecutarse. CALL kkkk ffff 0001 1fff Palabras, Ciclos 1, 1 Operación 00 -> f Bit estado Z de Descripción ffff ffff Pone el contenido de f a cero y activa el bit Z. JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I CIRCUITOS DIGITALES II vuelta en la pila y después llama a la subrutina situada en la dirección cargada en el PC. Atención: En el modo de cálculo de la dirección hay que posicionar bien el registro PCLATH antes de ejecutar la instrucción CALL CLRW Clear W register CLRWDT Clear Watchdog Timer Sintaxis CLRW Sintaxis CLRWDT Codificación 0000 0100 0000 00 0001 0xxx xxxx Codificación 0000 0000 0100 00 0000 0110 0100 Palabras, Ciclos 1, 1 Palabras, Ciclos 1, 1 Operación 00 -> W Operación Bit estado 00 -> WDT y 0 -> predivisor del temporizador Z Bit estado 1 -> TO y 1 -> PD de Pone el registro W a cero y Descripción activa el bit Z de Pone a cero el registro contador del temporizador Descripción watchdog, asi como el predivisor COMF Complement F DECF Decrement F to F Sintaxis COMF f, d Sintaxis DECF f, d Codificación 0010 01df ffff 00 1001 dfff Codificación 0000 11df ffff 00 0011 dfff Palabras, Ciclos 1, 1 Palabras, Ciclos ffff 1, 1 ~f -> f su d=1 Operación ~f -> W si d=0 Bit estado de Z Hace un complemento de f bit a bit. El resultado lo Descripción almacena de nuevo en f si d=1 (borra el anterior), o en W si d=0 (f no varía) DECFSZ Decrement F, Skip If Zero Sintaxis DECFSZ f, d DOCENTE: Ing. Luis Pacheco Cribillero ffff f - 1 -> f si d=1 Operación f - 1 -> W si d=0 Bit estado de Z Decrementa el contenido de f en una unidad. El Descripción resultado se guarda en W si d=0 (f no varia), y en f si d=1 GOTO Salto Incondicional with F JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I Codificación Palabras, Ciclos 0010 11df ffff 00 1011 dfff CIRCUITOS DIGITALES II ffff Sintaxis GOTO k Codificación 101k kkkk kkkk 10 1kkk kkkk Palabras, Ciclos 1, 2 Operación En el caso de los 16c64,71,74 y 84: k -> PC(0-10), PCLATH(3,4) -> PC(11,12) Bit estado Ninguno 1, 1(2) f - 1 -> f si d=1 Operación f - 1 -> W si d=0 Bit estado de Ninguno Decrementa el contenido de f en una unidad. El resultado se guarda en W si d=0 (f no varia), y en f si d=1 de LLama a la subrutina situada en la dirección cargada en el PC Descripción Si el reusltado es nulo, se ignora la siguiente instrucción y en este caso la instrucción dura dos ciclos. kkkk Descripción Atención: En el modo de cálculo de la dirección hay que posicionar correctamente el registro PCLATH antes de ejecutar la instrucción GOTO INCF Increment F INCFSZ Increment F, Skip if Zero Sintaxis INCF f, d Sintaxis INCFSZ f, d Codificación 0010 10df ffff 00 1010 dfff Codificación 0011 11df ffff 00 1111 dfff Palabras, Ciclos 1, 1 Palabras, Ciclos 1, 1(2) ffff f + 1 -> f si d=1 ffff f + 1 -> f si d=1 Operación f + 1 -> W si d=0 Bit estado de Operación Z Incrementa el contenido de f en una unidad. El resultado se almacena de Descripción nuevo en f si d=1 y en W si d=0(en este caso f no varía) Bit estado de f + 1 -> W si d=0 En ambos casos: Salto si f +1=0 Ninguno Incrementa el contenido de f en 1. El resultado se guarda en f si d=1 y en w si d=0 (en este caso f no Descripción varía). Si el resultado es nulo, se ignora la siguiente instrucción y esta instrucción dura dos ciclos IORLW Inclusive OR Literal With W IORWF Inclusive OR W With f Sintaxis IORLW k Sintaxis IORWF f, d Codificación DOCENTE: Ing. Luis Pacheco Cribillero Codificación JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I 1101 11 kkkk 1000 Palabras, Ciclos 1, 1 Operación W OR k -> W Bit estado de CIRCUITOS DIGITALES II kkkk kkkk 0001 00df ffff 11 0100 dfff kkkk Palabras, Ciclos ffff 1, 1 W OR f -> f si d=1 Operación Z W OR f -> W si d=0 Efectúa un OR lógico inclusivo entre el contenido de Descripción W y el literal K, y almacena el resultado en W Bit estado de Z Efectúa un OR lógico inclusivo entre el contenido de W y el Descripción contenido de f, y almacena el resultado en f si d=1 o en W si d=0 MOVF Move F MOVLW Move Literal to W with F Sintaxis MOVF f, d Sintaxis MOVLW k Codificación 0010 00df ffff 00 1000 dfff Codificación 1100 kkkk kkkk 11 00xx kkkk 1, 1 Palabras, Ciclos 1, 1 f -> f si d=1 Operación k -> W f -> W si d=0 Bit estado Ninguno Z Descripción Carga W con el literal k Palabras, Ciclos ffff Operación Bit estado de de kkkk Pone el contenido de f en f si d=1 o f en W si d=0 Atención: El desplazamiento de f en f Descripción que parecería inútil, permite comprobar el contenido de f con respecto a cero ya que esta instrucción actúa sobre el bit Z MOVWF Move W to F NOP No Operation Sintaxis MOVWF f Sintaxis NOP Codificación 0000 001f ffff 00 0000 1fff Codificación 0000 0000 0000 00 0xx0 0000 Palabras, Ciclos 1, 1 Palabras, Ciclos 1, 1 Operación W -> f Operación Ninguna DOCENTE: Ing. Luis Pacheco Cribillero ffff JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I Bit estado de CIRCUITOS DIGITALES II Bit estado Ninguno de Ninguna Descripción Carga f con el contenido de W OPTION Load Option Register RETFIE Return From Interrupt Sintaxis Option Sintaxis RETFIE Codificación 0000 0000 0010 00 0000 0110 0010 Codificación 00 1, 2 Palabras, Ciclos Palabras, Ciclos 1, 1 Operación Pila -> PC, 1 -> GIE Operación W -> OPTION Ninguno Bit estado Bit estado Ninguno Carga el PC con el valor que se encuentra en la parte superior de la pila, asegurando así la vuelta de la interrupción. Pone a 1 el bit GIE, con el fin de Descripción autorizar de nuevo que se tengan en cuenta las interrupciones de Carga el registro OPTION con el contenido de W Atención: Esta instrucción Descripción es correctamente interpretada por los circuitos 16c64, 71, 74, 84 con el fin de asegurar una compatibilidad ascendente RETLW Return Literal to W Sintaxis RETLW k 1000 kkkk kkkk Codificación 11 01xx kkkk kkkk Consume tiempo de la maquina y ocupa un lugar Descripción en la memoria de programa. de 0000 0000 1001 Atención: Esta interrupción dura dos ciclos RETURN Return from Subroutine with F Sintaxis RETURN Codificación 00 0000 0000 0000 1, 2 Palabras, Ciclos 1, 2 Operación k -> W, Pila -> PC Operación Pila -> PC Bit estado Ninguno Bit estado Ninguno Palabras, Ciclos de Carga W con el literal k, y después carga el PC con el valor que se encuentra en la parte superior de la pila, Descripción efectuando así un retorno de subrutina. Atención: Esta instrucción dura dos ciclos DOCENTE: Ing. Luis Pacheco Cribillero de Carga el PC con el valor que se encuentra en la parte superior de la pila, efectuando así una vuelta a Descripción la subrutina. Se trata de la instrucción RETLW simplificada. Atención: Esta instrucción dura dos ciclos JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I CIRCUITOS DIGITALES II RLF Rotate Left F through Carry Sintaxis RLF f,d 0011 Codificación 00 01df 1101 Palabras, Ciclos 1, 1 Operación ver descr. Bit estado C de ffff dfff ffff Rotación de un bit a la izquierda del contenido de f, pasando por el bit de acarreo Descripción C. Si d=1 el resultado se almacena en f si d=0 el resultado se almacena en W RRF Rotate Right F through Carry Sintaxis RRF f, d Codificación 0011 00df ffff 00 1100 dfff Palabras, Ciclos 1, 1 Operación Ver descr. Bit estado C de ffff Rotación de un bit a la derecha del contenido de f, pasando por el bit de Descripción acarreo C. Si d=1 el resultado se introduce en f, si d=0 el resultado se amacena en W SLEEP Sleep SUBLW Substract W from Literal Sintaxis SLEEP Sintaxis SUBLW k Codificación 0000 0000 0011 00 0000 0110 0011 Codificación 11 1, 1 Palabras, Ciclos Palabras, Ciclos 1, 1 Operación k - W -> W Operación 0 -> PD, 1 -> TO, 00 -> WDT, 0 -> Predivisor del WDT Bit estado C, DC, Z Bit estado de PD, TO Pone el circuito a dormir con parada del oscilador. Su consumo es inferior. Descripción de 110x kkkk Sustrae el contenido de W del literal k, y almacena el Descripción resultado en W. La sustracción se realiza en complemento a dos Atención: Use esta instrucción con mucho cuidado, pues puede provocar que el micro no despierte si no se ha seteado correctamente. SUBWF Substract W from F SWAPF Swap F to F Sintaxis SUBWF f, d Sintaxis SWAPF f, d Codificación 0000 10df ffff 00 0010 dfff Codificación 0011 11df ffff 00 1110 dfff Palabras, 1, 1 Palabras, kkkk 1, 1 DOCENTE: Ing. Luis Pacheco Cribillero ffff ffff JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I CIRCUITOS DIGITALES II Ciclos Ciclos f - W -> f si d=1 f(0-3) -> f(4-7) y f(4-7) -> f(0-3) Operación f - W -> W si d=0 Bit estado de Operación Resultado -> f si d=1 Resultado -> W si d=0 C, DC, Z Sustrae el contenido de W del contenido de f, y almacena el resultado en Descripción W si d=0 y en f si d=1. La sustracción se realiza en complemento a dos TRIS Load TRIS Register Sintaxis TRIS f 0000 0000 0fff Codificación 00 0000 0110 0fff Palabras, Ciclos 1, 1 Operación W -> registro TRIS del puerto f Bit estado Ninguno de Carga el contenido de W en el registro TRIS del puerto f. Descripción Atención: Esta instrucción, es correctamente interpretada por los circuitos 16c64, 71, 74, 84, con el fin de asegurar una compatibilidad ascendente Bit estado de Ninguno Intercambia los cuatro bit de mayor peso por los Descripción cuatro de menor peso de f, y almacena el resultado en W si d=0, y en f si d=1 XORLW Exclusive OR Literal With W Sintaxis XORLW k Codificación 1111 kkkk kkkk 11 1010 kkkk Palabras, Ciclos 1, 1 Operación W OR (Exclusivo) k -> W Bit estado Z de kkkk Efectúa un OR lógico exclusivo entre el contenido de W y el Descripción contenido del Literal K y almacena el resultado en W XORWF Exclusive Or W with F Sintaxis XORWF f,d Codificación 0001 00 Palabras, Ciclos 1, 1 Operación W OR (Exclusivo) W OR (Exclusivo) f -> W si d=0 Bit de estado Z Descripción Efectúa un Or lógico exclusivo entre el contenido de W y el contenido de f y almacena el resultado en f si d=1 o en W si d=0 DOCENTE: Ing. Luis Pacheco Cribillero 10df 0110 ffff dfff f ffff -> f si d=1 JUEGO DE INSTRUCCIONES UTP – FIEM – ELECTRÓNICA – 2011 – I DOCENTE: Ing. Luis Pacheco Cribillero CIRCUITOS DIGITALES II JUEGO DE INSTRUCCIONES