Anda di halaman 1dari 9

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

NOTAS SOBRE EL PIC 16F84A El pic que se va a utilizar para las prcticas realizadas va ha ser el 16f84A. Este pic es similar al 16c84, por tanto (aunque a veces se hable de ste) nos referimos al 16f84A a lo largo de toda la gua. 1. Encapsulado: El 16f84 pertenece a la familia de la gama media y dentro de ella es de los ms pequeos: tan solo tiene 18 patillas. Tiene una capacidad de memoria de programa de 1K (palabras de 14 bits cada una) tipo FLASH y 64 bytes de EEPROM como memoria auxiliar. Estas memorias son elctricamente borrables, lo que permite grabar y borrar el programa para realizar todas las pruebas pertinentes (soporta unos 1000 ciclos de escritura/borrado). Este pic est fabricado con tecnologa CMOS y el encapsulado (de 18 patillas) es el representado en la figura 1.1. Figura 1.1. Patillaje del pic 16f84 A continuacin se va a comentar brevemente la misin de cada patilla: - Vdd: Patilla por la que se va a aplicar la tensin positiva de alimentacin (4V 6V DC). - Vss: Conectada a tierra o negativo de la alimentacin. - MCLR: Esta patilla va a ser activada a nivel bajo para resetear el pic. Tambin se va a utilizar durante la grabacin de la memoria de programa para introducir por ella la tensin Vpp (12V 14V DC). El micropic trainer tiene un botn de reset conectado al pic como se ve en la figura 1.2 (R1 = 100 y R = 4K7). Figura 1.2. Circuito que permite producir un reset al presionar un pulsador - OSC1/CLKIN: Por ella se va a introducir la entrada del circuito oscilador externo que va a proporcional la frecuencia de trabajo. - OSC2/CLKOUT: Patilla auxiliar del circuito oscilador. Segn la frecuencia de trabajo del oscilador, se va a tener una u otra velocidad en la ejecucin de cada instruccin. En las prcticas realizadas, la frecuencia de trabajo es de 4 MHz, por tanto el ciclo de instruccin va a ser de 1sg (4 periodos de reloj x 0,25sg = 1sg). Todas las instrucciones se van a ejecutar en 1sg salvo las de salto que van ha tardar 2sg. Los pic admiten cuatro tipos de circuito oscilador (RC, HS, XT y LP). En las prcticas realizadas se a utilizado el XT (Figura 1.3). Figura 1.3. Esquema del oscilador tipo XT Este circuito utiliza un cristal de cuarzo que acta como un oscilador que proporciona la frecuencia de 4MHz antes citada. Los condensadores C1 y C2 estn comprendidos entre 15 33 pF. El micropic trainer los utiliza de 27 pF. - RA0 RA4: Son las 5 lneas de E/S digitales correspondientes a la puerta A. La lnea RA4 multiplexa el TOCKI. En este caso sirve para recibir una frecuencia externa que alimente el temporizador interno TMR0. - RB0 RB7: Corresponden a las 8 lneas de E/S digitales de la puerta B. La RB0 multiplexa el INT, que servir de entrada a una peticin externa de interrupcin. El consumo tpico del pic es de 2mA aproximadamente funcionando en modo normal. Cuando entramos en el modo llamado reposo, mediante la instruccin SLEEP (ver apartado 5), pasa a consumir menos de 10 A. 2. Arquitectura interna: La arquitectura del procesador sigue el modelo Harvard. En este, la CPU se conecta de forma independiente y con buses distintos con la memoria de instrucciones y con la de datos, permitiendo a esta acceder simultneamente a las dos memorias. Se aplica la tcnica de segmentacin en la ejecucin de las instrucciones. Esta segmentacin permite
DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

al procesador realizar al mismo tiempo la ejecucin de una instruccin y la bsqueda del cdigo de la siguiente. De esta forma se puede ejecutar cada instruccin en un ciclo (un ciclo de instruccin equivale a cuatro ciclos de reloj). Las instrucciones de salto ocupan dos ciclos al no conocer la direccin de la siguiente instruccin hasta que no se haya completado la de bifurcacin. El formato de todas las instrucciones es de la misma longitud (14 bits en los de gama media). Procesador RISC (Computador de Juego de Instrucciones Reducido). Los modelos de la gama media disponen de un repertorio de 35 instrucciones. Cualquier instruccin puede manejar cualquier elemento de la arquitectura como fuente o como destino, es decir, todos los objetos del sistema (puertas de E/S, posiciones de memoria, etc.) estn implementados como registros. En la figura 2.1 aparece el diagrama de bloques del pic 16f84. Para analizar un poco el funcionamiento del procesador, nos vamos a centrar en la ejecucin de una instruccin.

Figura 2.1. Arquitectura interna del PIC16F84 El contador de programa comienza la fase de bsqueda facilitando la direccin de la memoria de instrucciones donde se ubica la instruccin. Su cdigo binario de 14 bits se lee y se carga en el Registro de instrucciones (1), desde donde se transfiere al decodificador y a la unidad de control (2). La ALU (3) es la encargada de realizar la operacin aritmtico-lgica que implica la instruccin decodificada. Uno de los operandos lo recibe del registro W (4) y el otro de un registro o de la propia instruccin. En cuanto a la memoria de programa, el PIC es capaz de contener 8.192 instrucciones de 14 bits cada una. Este mapa se divide en pginas de 2.048 posiciones. Para direccionar 8K posiciones se necesitan 13 bits (longitud del contador de programa). Sin embargo el PIC solo tiene implementadas 1K posiciones, por lo que ignora los 3 bits de ms peso del PC (contador programa). La organizacin de la memoria de programa es como indica la figura 2.2. El vector de reset se almacena en la direccin 0000, mientras que el vector de interrupcin est en la 0004. La memoria de programa de usuario comienza en la direccin 0005 y se extiende hasta la 03FF. La pila es una zona aislada de las memorias de instrucciones y datos (Ver fig. 2.3). Tiene una estructura LIFO (Last In First Out) en la que el ltimo valor guardado es el primero que sale. Tiene ocho niveles de profundidad cada uno con 13 bits. La instruccin CALL (Ver apartado 5) y las interrupciones originan la carga del contenido del PC en el nivel
DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

superior de la pila. El contenido del nivel superior se saca de la pila al ejecutar las instrucciones RETURN, RETLW y RETFIE. Figura 2.3. Organizacin de la memoria de programa 3. Registros internos: La memoria de datos del 16F84 dispone de dos zonas diferentes: - rea EEPROM: de 64 bytes. En ella se pueden almacenar datos que no se pierden al desconectar la alimentacin. - rea RAM esttica o SRAM: en ella reside el banco de registros especficos (SFR) y el banco de registros de propsito general (GPR). El primero tiene 24 posiciones de tamao byte y el segundo 68. La memoria RAM se halla dividida en dos bancos (banco 0 y banco 1) de 128 bytes cada uno. Las 12 primeras posiciones estn reservadas al SFR, son los registros encargados del control del procesador y sus recursos. Las direcciones comprendidas entre 7H 87H no son operativas. Los 68 registros del GPR se destinan a propsito general y en realidad solo son operativos los 68 del banco 0 porque los del banco 1 se mapean sobre el banco 0, es decir, cuando se apunta a uno del banco 1 se accede al mismo pero en el banco 0. A continuacin, se describen los diferentes registros que se representan en la figura 3.1. Figura 3.1. Organizacin de los registros internos - Registro de indireccin (00): Este registro no tiene existencia fsica, por tanto no se podr leer. Si se intenta acceder a l, siempre se encontrar 00, y si se intenta escribir se producir un NOP, es decir, una instruccin que no hace nada. Este registro se utiliza nicamente para realizar un direccionamiento indirecto; cuando se le hace referencia se accede a la direccin de un banco especificada con los 7 bits de menos peso del registro FSR. El bit de ms peso del FSR junto con el IRP del registro ESTADO se encarga de seleccionar el banco a acceder. - Registro PCL (02): Son los 8 bits de menos peso del contador del programa o PC. Como el PC debe tiene un tamao de 13 bits, sus bits de mayor peso se llevan al registro PCLATH (posiciones 0A-8A). Como muestra la figura 3.2, si el PC es destino de una instruccin, el contenido de PCLATH se tiene en cuenta automticamente; para las instrucciones CALL y GOTO tiene lugar la misma operacin (teniendo en cuenta que el PC est ahora codificado con 11 bits en la propia instruccin).

Figura 3.2. Determinacin de los bits de mayor peso del PC a travs del PCLATH. A la derecha, para instrucciones CALL y GOTO. - Registro STATUS (03): contiene un cierto nmero de bits de estado de la unidad central. Se puede leer y escribir como cualquier otro registro. En la figura 3.3 se puede ver la estructura de este registro; hay bits que no se pueden varia al indicar estados del procesador, as al ejecutar la instruccin de borrar el registro, este se carga con el valor 000uu1uu (u = se queda como estaba).
DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

Figura 3.3. Estructura interna del registro estado

El bit 0 o C (Carry) es el bit de acarreo para las operaciones de suma y sustraccin. Se pone a 1 si se produce acarreo en el bit de mayor peso. Tambin lo utilizan las instrucciones de rotacin. El bit 1 o DC (Digit Carry) es el bit de acarreo de dgito. Funciona igual que el anterior, pero haciendo referencia al 4 bit. El bit 2 o Z (Zero) se pone a 1 si el resultado de una operacin aritmtica o lgica es nulo. El bit 3 o PD (Power down) se pone a 1 durante la conexin a la alimentacin del circuito o durante la ejecucin de la instruccin CLRWDT. Se pone a 0 al ejecutar SLEEP. Es de solo lectura. El bit 4 o TO (Time out) se pone a 1 durante la conexin a alimentacin o durante la ejecucin de una instruccin CLRWDT o SLEEP. Se pone a 0 cuando el temporizador watchdog se desborda. Tambin es de solo lectura. Los bit 5 y 6 o RP0 y RP1 sirven para seleccionar las pginas de memoria de programa. El 16F84 solo utiliza el RP0 al tener tan solo dos pginas; si RP0 = 1 selecciona pagina 1, si RP0 = 0 selecciona la pagina 0. El bit 7 o IRP no se utiliza en nuestro caso, debe programarse como 0. Los bits T0 y PD tambin nos sirven para determinar la causa de la produccin de un reset (ver tabla 3.1). TO PD Condicin de reset 1 1 Reset por alimentacin 0 1 Desbordamiento del WDT en funcionamiento normal 0 0 Desbordamiento del WDT en estado de reposo 1 1 Activacin del MCLR en funcionamiento normal 1 0 Activacin MCLR en reposo Tabla 3.1. Determinacin del origen de un reset - Registro INTCON (0B-8B): sirve para el control global de las interrupciones y para indicar la procedencia de alguna de ellas. Las cuatro fuentes de interrupcin posibles en el 16F84 son: activacin de la patilla RB0/INT, desbordamiento del temporizador TMR0, cambio de estado en los pines RB4 a RB7 y el fin de una escritura en la EEPROM de datos. Figura 3.4. Registro INTCON

Cada bit del registro INTCON (Figura 3.4) tiene un significado concreto que es el que sigue: El bit 0 o RBIF (RB Interrupt Flag) se pone a 1 si hay un cambio de estado en una de las lneas de RB4 a RB7 del puerto B. El bit 1 o INTF (Interrupt Flag) se pone a 1 si hay una interrupcin provocada por la lnea RB=/INT del puerto B. El bit 2 o T0IF (Timer 0 Interrupt Flag) se pone a 1 si hay desbordamiento del Timer 0. El bit 3 o RBIE (RB Interrupt Enable) se pone a 1 para autorizar las interrupciones provocadas por un cambio de estado en las lneas RB4 a RB7 del puerto B. El bit 4 o INTE (Interrupt Enable) se pone a 1 para autorizar las interrupciones provocadas por la lnea RB0/INT del puerto B. Los bit 5 o bit T0IE (Timer 0 Interrupt Enable) se pone a 1 para autorizar las interrupciones debidas al desbordamiento del temporizador 0. El bit 6 o EEIE (EEPROM Interrupt Enable) se pone a 1 para autorizar las interrupciones que proceden de la memoria EEPROM de datos. El bit 7 o GIE (Global Interrupt Enable) se pone a 1 para autorizar todas las interrupciones que no tengan sus bits a 0. Si este bit es 0, todas las interrupciones estn desactivadas aunque sus bits particulares sean 1 (Ver figura 3.5). Figura 3.5. Lgica de control para interrupciones - Puertas de E/S: el 16F84 solo dispone de dos puertas de entrada/salida. La puerta A posee 5 lneas, RA0-RA4, y una de ellas soporta dos funciones multiplexadas. Se trata de la RA4/T0CKI, que puede actuar como lnea de E/S o como patilla de entrada para los impulsos con que debe contar TMR0. La puerta B tiene 8 lneas, RB0-RB7, y tambin tiene una con funciones multiplexadas, la RB0/INT, que sirve como E/S y como patilla por la que se reciben los impulsos externos
DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

que provocan una interrupcin. Cada lnea de E/S puede configurarse independientemente como entrada o salida, segn se ponga a 1 o 0, respectivamente, el bit asociado del registro de TRISA o TRISB (direcciones 5 y 6 del banco 1 de la memoria de datos). Los registros PUERTAA y PUERTAB guardan la informacin que entra o sale por la puerta (direcciones 5 y 6 del banco 0). Al reinicializarse el pic todos los bits de los registros TRIS quedan a 1, con lo que las lneas de las puertas quedan configuradas como entradas; las resistencias pull-up que veremos ms adelante, se desconectan al resetear. Cada lnea de salida puede suministrar una corriente mxima de 20 mA y si es entrada puede absorber hasta 25 mA. En la figura 3.6 se muestra la adaptacin de las patillas RA4-RA0 a las seales internas del procesador. Por ejemplo, cuando se saca un nivel lgico por una puerta A, primero se deposita en la lnea correspondiente del bus de datos y se activa la seal WRITE, lo que origina el almacenamiento del nivel en la bscula de datos; para que acte como salida, la bscula de configuracin debera contener un 0, por lo que la puerta OR tendra un 0 en su salida y la AND tambin; estos valores producen la conduccin del PMOS superior y el bloqueo del NMOS; as, la patilla queda conectada a Vdd y tiene nivel alto. Como la lnea de salida est lacheada conserva su valor hasta que no se reescriba en la bscula D. Figura 3.6. Conexin electrnica de las patillas RA-RA0. A la derecha la patilla RA4 En la figura 3.7 se ve el esquema electrnico de conexionado para las patillas RB7-RB0. A todas las lneas de esta puerta se le permite conectar una resistencia pullup de elevado valor con el positivo de la alimentacin (se programa en el registro OPTION). Las lneas RB7-RB4 pueden programarse para que generen una interrupcin si alguna de ellas cambia de valor (en ese caso se indicara en el RBIF). Las lneas RB7 y RB6 tambin se utilizan para la grabacin en serie de la memoria de programa (Ver apartado 4). Figura 3.7. A la izquierda el conexionado de las puertas RB7-RB4. A la derecha para las puertas RB3RB0. - Temporizadores: el TMR0 es un temporizador/contador de 8 bits. Puede utilizarse como contador, representado por los impulsos que se aplican a la patilla RA4/T0CKI (de FF pasa a 00, activndose un sealizador o una interrupcin), y como temporizador, cargando un registro con un valor inicial (al desbordarse har lo mismo que el anterior). Para programarlo de una u otra forma se usa el registro OPTION que veremos ms adelante. El TMR0 puede ser ledo y escrito (direccin 1, banco 0) en cualquier momento al estar conectado al bus de datos. Cuando acta como temporizador se carga con el valor de los impulsos que se quiere temporizar, pero expresados en complemento a 2; as, al llegar al nmero de impulsos deseado se desborda y activa el sealizador TOIF y/o se produce la interrupcin. Otro temporizador importante es el perro guardin (WDT). Se trata de un contador interno de 8 bits que origina un reset cuando se desborda. Su control de tiempos es independiente del TMR0 y est basado en una red R-C interna, por lo que no necesita ningn componente externo y contina funcionando incluso cuando el reloj del pic se para durante, por ejemplo, una instruccin SLEEP. Se programa desde el registro OPTION. Se puede desactivar en la palabra de configuracin (ms adelante).
DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

La temporizacin nominal del WDT es de 18 msg, pero puede llegar a 2,3 segundos utilizando el llamado divisor de frecuencia. Este divisor puede utilizarse con el WDT o con el TMR0. Con el TMR0 acta como Pre-divisor, es decir, los impulsos pasan primero por el divisor y luego se aplican al TMR0. Con el WDT acta como Post-divisor. Una frmula prctica para calcular los tiempos a controlar con el TMR0 puede ser esta: Valor a cargar en TMR0 = Temporizacin / 4 * Toscilacin * Rango del divisor

- Registro OPTION (direccin 81): la misin principal de este registro es controlar el TMR0 y el divisor de
frecuencia. Ocupa la direccin 81H de la memoria de datos (equivale a la direccin 1 del banco 1). En la figura 3.8 se puede ver la estructura de este registro. Figura 3.8. Distribucin de los bits del registro OPTION

Los bits 0, 1 y 2 o PS0, PS1 y PS2 son los encargados de definir el valor con el que acta el divisor de frecuencia. En la tabla 3.2 se pueden ver los distintos valores que puede tomar el divisor. PS2 0 0 0 0 1 1 1 1 PS1 PS0 Divisin del TMR0 Divisin del WDT 0 0 1:2 1:1 0 1 1:4 1:2 1 0 1:8 1:4 1 1 1:16 1:8 0 0 1:32 1:16 0 1 1:64 1:32 1 0 1:128 1:64 1 1 1:256 1:128 Tabla 3.2. Programacin de los bits PS2, PS1 y PS0

El bit 3 o PSA (Prescaler assignment) asigna el divisor de frecuencia al WDT (1) o al TMR0 (0). El bit 4 o RTE (Timer 0 signal edge) hace que el TMR0 se incremente cada flanco ascendente (0) o descendente (1). El bit 5 o RTS (Timer 0 signal source) a 0 indica que el temporizador utilizar el reloj interno. Si est a 1 utilizar la seal aplicada en la patilla RA0/T0CKI. El bit 6 o INTEDG (Interrupt edge) define el sentido del flanco que provocar una interrupcin a travs de la patilla RB0/INT. Un 1 activa un flanco de subida y un 0 de bajada. El bit 7 o RBPU (RB pull up enable) activa las resistencias pull-up (0) o las desactiva (1).

- LA PALABRA DE CONFIGURACIN:

se trata de una posicin reservada de la memoria de programa (2007H) y accesible nicamente durante la grabacin del pic.

Figura 3.9. Distribucin de los bits de la palabra de configuracin Los bits CP son bits de proteccin de la memoria de cdigo. A 1 indican que no est protegida, a 0 el programa no se puede leer ni sobreescribir. A 0 tambin evita que pueda accederse a la EEPROM de datos, borrndose esta si el bit es modificado (si pasa de 0 a 1). El bit PWRTE activa (con un 0) el temporizador llamado power-up, que retrasa en 72 msg la puesta en marcha al conectar la alimentacin, garantizndose as la estabilidad de la tensin aplicada. El bit WDTE activa (1) o desactiva (0) el perro guardin. Los bits FOSC1-FOSC0 seleccionan el oscilador utilizado: RC (11), HS (10), XT (01) y LP (00). Las posiciones de memoria 2000H-2003H tambin estn reservadas para las llamadas palabras de configuracin (ID). En estas solo se usan los 4 bits de menos peso para grabar nmeros de serie, cdigos de identificacin, numeraciones secuenciales, etc.

- Memoria EEPROM de datos:

el PIC tiene 64 bytes de memoria donde se pueden almacenar datos y variables que interesa que no se pierdan cuando se desconecta la alimentacin al sistema. En el registro EEADR (direccin 9 del banco 0) se carga la direccin a acceder de la EEPROM de datos. En el registro EEDATA (direccin 8 del banco 0) se depositan los datos que se leen o se escriben. El EECON1 (direccin 8 del banco 1) tiene la misin de controlar las operaciones en la EEPROM (Figura 3.10).
DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

Figura 3.10. Distribucin de los bits del registro EECON1

El bit RD se pone a 1 cuando se va a realizar un ciclo de lectura de la EEPROM. Luego pasa a cero automticamente. El bit WR se pone a 1 cuando se va a realizar un ciclo de escritura de la EEPROM. Luego pasa a cero automticamente. El bit WREN da permiso para escribir cuando est a 1 y prohibe la escritura a 0. El bit WRERR se pone a 1 cuando una operacin de escritura ha terminado prematuramente y a 0 cuando ha finalizado correctamente. El bit EEIF se pone a 1 si la operacin de escritura se completa con xito y a 0 si no se ha completado. Un ciclo de escritura tiene una duracin de 10 msg. El registro EECON2 no est implementado fsicamente y se usa nicamente como dispositivo de seguridad durante la escritura en la EEPROM. Para leer la EEPROM basta con colocar la direccin a leer en EEADR y poner a 1 el bit RD. El dato ledo estar disponible en el registro EEDATA. Para escribir en la EEPROM se sigue una secuencia de instrucciones en las que interviene el EECON2. Este registro solo asume funciones de seguridad, cargndose con dos valores concretos: 55H y AAH. El ciclo de escritura comienza cargando en EEADR la direccin de la posicin a escribir, en el registro EEDATA el valor a grabar y activado el bit WR. Al acabar la escritura, el bit WR se pone a 0 automticamente y el sealizador EEIF a 1 (habr que ponerlo a 0 para volver a escribir). Para verificar la correcta escritura, se resta el valor contenido en EEDATA con el dato escrito y se comprueba que el bit Z pase a valer 1.

4. Programacin:
La programacin en serie del PIC requiere 5 lneas, dos de las cuales se destinan a soportar el reloj de la transmisin (RB6) y los bits de datos serie (RB7), mientras que las otras tres soportan Vdd, tierra y la tensin de programacin. El PIC pasa al modo de programacin/verificacin poniendo a nivel bajo las lneas RB6 y RB7 y aplicando la tensin de programacin Vpp (12V 14V). A partir de ese momento por RB6 se transmiten los impulsos de reloj y por RB7 los bits de datos. Figura 4.1. Esquema de conexionado de un 16F84 para su grabacin del programa en serie 5. Instrucciones del pic: Como ya se ha visto, los pic responden a la arquitectura RISC. Esta arquitectura contiene pocas instrucciones (35 en nuestro caso) simples y rpidas (la mayora se ejecutan en un ciclo de instruccin); las instrucciones son ortogonales (las instrucciones pueden usar cualquier operando) y tienen una longitud constante (14 bits). En la tabla 5.1, podemos ver las 35 instrucciones diferentes que se pueden usar en la programacin del pic 16F84. En la columna de sintaxis aparecen las siguientes letras: - f: es el registro de la direccin (7 bits). - d: si vale 1, el resultado de la instruccin se almacena en f. Si vale 0, va al acumulador (W). - b: indica el numero de un bit dentro de un registro. - k: es un valor inmediato (8 bits). - x: indica que es un valor indeterminado. En las ltimas dos columnas, se indica el formato de la instruccin (14 bits) y los sealizadores que activa esta (Bits). Para localizar mejor las instrucciones, se ha separado la tabla para distribuir las instrucciones segn su funcin (si manejan bits, registros, etc). La columna C indican la duracin en ciclos de instruccin (en nuestro caso un ciclo dura 1 microsegundo) que tarda en ejecutarse una instruccin.

DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

SINTAXIS ADDWF f, d ANDWF f, d CLRF f CLRW COMF f, d DECF f, d INCF f, d IORWF f, d MOVF f, d MOVWF f NOP RLF f, d RRF f, d SUBWF f, d SWAPF f, d XORWF f, d SINTAXIS BCF f, b BSF f, b SINTAXIS BTFSC f, d BTFSS f, d DECFSZ f, d INCFSZ f, d SINTAXIS ADDLW k ANDLW k IORLW k MOVLW k SUBLW k XORLW k SINTAXIS CALL k CLRWDT GOTO k RETFIE RETLW k RETURN SLEEP

INSTRUCCIONES QUE MANEJAN REGISTROS OPERACIN C FORMATO (14 bits) W+f 1 00 0111 dfff ffff W AND f 1 00 0101 dfff ffff Borra f 1 00 0001 1fff ffff Borra W 1 00 0001 0xxx xxxx Invierte f 1 00 1001 dfff ffff Decrementa f 1 00 0011 dfff ffff Incrementa f 1 00 1010 dfff ffff W OR f 1 00 0100 dfff ffff Mueve f 1 00 1000 dfff ffff Mueve W y f 1 00 0000 1fff ffff No operacin 1 00 0000 0xx0 0000 Rota f a la izquierda 1 00 1101 dfff ffff Rota f a la derecha 1 00 1100 dfff ffff FW 1 00 0010 dfff ffff Intercambia bits 1 00 1110 dfff ffff W XOR f 1 00 0110 dfff ffff INSTRUCCIONES QUE MANEJAN BITS OPERACIN C FORMATO (14 bits) Borra bit b de f 1 01 00bb bfff ffff Pone a 1 bit b de f 1 01 01bb bfff ffff INSTRUCCIONES DE BRINCO OPERACIN C FORMATO (14 bits) Explora bit d de f y salta si es 0 1,2 01 10bb bfff ffff Explora bit d de f y salta si es 1 1,2 01 11bb bfff ffff Decrementa f y si es 0 salta 1,2 00 1011 dfff ffff Incrementa f y si es 1 salta 1,2 00 1111 dfff ffff INSTRUCCIONES QUE MANEJAN OPERANDOS INMEDIATOS OPERACIN C FORMATO (14 bits) W+k 1 11 111x kkkk kkkk W AND k 1 11 1001 kkkk kkkk W OR k 1 11 1000 kkkk kkkk Mueve a W el valor k 1 11 00xx kkkk kkkk kW 1 11 110x kkkk kkkk W XOR k 1 11 1010 kkkk kkkk INSTRUCCIONES DE CONTROL Y ESPECIALES OPERACIN C FORMATO (14 bits) Llamada a subrutina 2 10 0kkk kkkk kkkk Borra o refresca el perro guardin 1 00 0000 0110 0100 Salto incondicional a k 2 10 1kkk kkkk kkkk Retorno de interrupcin 2 00 0000 0000 1001 Retorno de subrutina y W=k 2 11 01xx kkkk kkkk Retorno de subrutina 2 00 0000 0000 1000 Pasa al modo de reposo 1 00 0000 0110 0011 Tabla 5.1. Juego de instrucciones del PIC16F84

Bits C,DC,Z Z Z Z Z Z Z Z Z

C C C,DC,Z Z Bits

Bits

Bits C,DC,Z Z Z C,DC,Z

Bits TO,PD

TO,PD

Por ltimo vamos ha ver ms detenidamente el funcionamiento de las instrucciones representadas en la tabla anterior. - ADDLW k: aade el contenido de W al literal k y almacena el resultado en W. Esta instruccin activa los bits C, DC y Z del registro de estado. Se ejecuta en un ciclo de instruccin (todas se ejecutan en el mismo tiempo a menos que se especifique otro valor). - ADDWF f, d: aade el contenido de W al de f, y almacena el resultado en W si d=0, y en f si d=1. Activa los mismos sealizadores que la anterior. - ANDLW k: efecta un AND lgico entre el contenido de W y el literal k, y almacena el resultado en W. Si el resultado es nulo, activa el bit Z. - ANDWF f, d: efecta un AND lgico entre el contenido de W y el de f y coloca el resultado en W (d=0) o en f (d=1). - BCF f,b: pone a cero el bit nmero b de f. - BSF f,b: pone a uno el bit nmero b de f.
DOCENTE: Ing. Luis Pacheco Cribillero

UNIVERSIDAD TECNOLOGICA DEL PER

FACULTAD DE INGENIERA ELECTRNICA

CIRCUITOS DIGITALES II

- BTFSC f, d: si el bit nmero b de f es nulo, la instruccin que sigue a sta se ignora y se trata como un nop. En este caso (solo en este caso), la instruccin precisa de dos ciclos para ejecutarse. - BTFSC f, d: si el bit nmero b de f es 1, la instruccin que sigue a sta se ignora y se trata como un nop. En este caso (solo en este caso), la instruccin precisa de dos ciclos para ejecutarse. - CALL k: salvaguarda la direccin de vuelta en la pila y despus llama a la subrutina situada en la direccin cargada en el PC. Los pasos que sigue para su ejecucin son: PC + 1 pila, k PC (0 10), PCLATH (3,4) PC (11,12) - CLRF f: pone el contenido de f a cero y activa el bit Z. - CLRW: pone el registro W a cero y activa el bit Z. - CLRWDT: pone a cero el registro contador del temporizador watchdog (WDT), as como el predivisor. Pone a 1 los bits TO y PD. - COMF f, d: hace el complementario de f bit a bit. El resultado se almacena de nuevo en f si d=1 y en W si d=0 (en este caso, f no vara). Si el resultado es nulo, activa Z. - DECF f, d: decrementa el contenido de f en una unidad. El resultado lo almacena de nuevo en f (d=1) o en W (d=0), no variando f en este ltimo caso. Tambin activa Z si el resultado es nulo. - DECFSZ f, d: decrementa el contenido de f en una unidad. El resultado se almacena segn el valor de d. Si el resultado es nulo, se ignora la siguiente instruccin y, en ese caso, esta instruccin dura dos ciclos. - GOTO k: llama a la subrutina situada en la direccin cargada en el PC. La ejecucin de la instruccin sera: k PC (0-10), PCLATH (3,4) PC (11,12) - INCF f, d: incrementa el contenido de f en una unidad. El resultado se almacena de nuevo en f o W (en este caso f no vara). Activa Z si el resultado es nulo. - INCFSZ f, d: incrementa el contenido de f en una unidad. El resultado se almacena en f (d=1) o W (d=0 y f no vara). Si el resultado es nulo, se ignora la siguiente instruccin y, en este caso, esta instruccin dura dos ciclos. - IORLW k: efecta un OR lgico inclusivo entre el contenido de W y el literal k, y almacena el resultado en W. Si la operacin da cero, se activa el bit Z. - IORWF f, d: efecta un OR lgico inclusivo entre el contenido de W y el contenido de f, y almacena el resultado en W (d=0) o en f. Si la operacin da cero, se activa el bit Z. - MOVF f, d: desplaza el contenido de f a f si d=1 a W si d=0. El desplazamiento de f a f permite comprobar el contenido de f con respecto a cero, ya que esta instruccin acta sobre el bit Z. - MOVLW k: carga W con el literal k. - MOVWF f: carga f con el contenido de W. - NOP: slo consume tiempo de mquina, un ciclo en este caso. - RETFIE: carga el PC con el valor que se encuentra en la parte superior de la pila, asegurando as la vuelta de la interrupcin. Pone a 1 el bit GIE con el fin de autorizar de nuevo que se tengan en cuenta las interrupciones. - RETLW k: carga W con el literal k, y despus carga el PC con el valor que se encuentra en la parte superior de la pila, efectuando as un retorno de subrutina. - RETURN: carga el PC con el valor que se encuentra en la parte superior de la pila, efectuando as una vuelta de subrutina. Es como la anterior pero simplificada. - RLF f, d: rotacin de un bit a la izquierda del contenido de f, pasando por el bit de acarreo C (ver figura 5.1). Si d=1 el resultado se almacena en f, si es 0 se almacena en W. Figura 5.1. Desplazamiento a la izquierda - RRF f, d: rotacin de un bit a la derecha del contenido de f, pasando por el bit de acarreo C (es como en la figura 5.1 pero con las flechas hacia la derecha). Si d=1 el resultado se almacena en f, si es 0 se almacena en W. - SUBLW k: sustrae el contenido de W del literal k (k W) y almacena el resultado en W. La sustraccin se realiza en complemento a dos. - SUBWF f, d: sustrae el contenido de W del contenido de f (f W) y almacena el resultado en W o f (segn valor de d). La sustraccin se realiza en complemento a 2. Tanto esta como la anterior activan los bits C, DC, y Z segn el caso. - SWAPF f, d: intercambia los cuatro bits de mayor peso con los cuatro de menor peso de f y almacena el resultado en f o W (segn d). - XORLW k: efecta un OR lgico exclusivo entre el contenido de W y el literal k, y almacena el resultado en W. - XORLW f, d: efecta un OR lgico exclusivo entre el contenido de W y el contenido de f, y almacena el resultado en f o W (segn d). Tanto esta como la anterior activa el bit Z si se da el caso. - SLEEP: pone el circuito en modo SLEEP y para el oscilador. El procesador queda congelado, no ejecutando instrucciones y manteniendo el mismo valor en la puertas de E/S. Pone a cero el WDT (aunque sigue funcionando), el predivisor y PD; tambin pone a 1 el bit TO. Para que el micro salga del modo SLEEP, se tiene que dar una de estas situaciones: que la patilla MCLR se active externamente (reset), que se desborde el WDT(en caso de que estuviera activado al entrar en el modo reposo) y que se de una interrupcin (como TMR0 est desactivado, solo podr producirse una de los otros tipos).

DOCENTE: Ing. Luis Pacheco Cribillero

Anda mungkin juga menyukai