Você está na página 1de 59

TEMA

2
2.1 Conjunto de Instrucciones 2.2 Modos de direccionamiento 2.3 Registros de trabajo

2.1 Conjunto de Instrucciones


Clasificacin de instrucciones Formato general Ciclo de instruccin Modos de direccin Instrucciones orientadas a byte Instrucciones orientadas a bit Instrucciones con literales y de control
M I C R O C O N T R O L A D O R E S

Clasificacin de las Instrucciones


El conjunto de instrucciones es altamente ortogonal y estn agrupadas en tres categoras bsicas. 1- Instrucciones orientadas a byte. 2- Instrucciones orientadas a bit. 3- Instrucciones de literales y de control
M I C R O C O N T R O L A D O R E S

Detalle de las 35 Instrucciones


Este conjunto de 35 instrucciones es aplicable a toda la gama media de los microcontroladores de Microchip a la que pertenece el P16F887. La razn para que solo se utilizan 35 instrucciones en la programacin es que los PIC son microcontroladores RISC, y estas instrucciones estn bien optimizadas para tener una mayor velocidad de trabajo, una arquitectura mas simple y un cdigo mas compacto. Antes de continuar se definen las abreviaturas usadas para explicar las instrucciones: f: cualquier registro del microcontrolador W: registro de trabajo b: posicin de un bit en el registro f d: destino, puede ser f (d=1) o W (d=0) etiqueta: grupo de caracteres que marcan el inicio de una parte del programa []: opcional : posicin de un bit dentro de un registro
M I C R O C O N T R O L A D O R E S

Conjunto de 35 instrucciones Para PICS de gama media

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE de registros ADDWF: Suma W y f Suma el contenido del registro W y el registro f. Si d es 0, el resultado se almacena en el registro W. Si d es 1 el resultado se almacena en el registro f. Sintaxis: [etiqueta] ADDWF f,d Operacin: (W) + (f) > (destino) Flags afectados: C, DC, Z Ejemplo: ADDWF REG,1 Antes de la instruccin: W=003, REG=004 Despus de la instruccin: W=003, REG=007 ANDWF: W AND f Realiza la operacin lgica AND entre el registro W y el registro f. Si d es 0 el resultado se almacena en el registro W. Si d es 1, el resultado se almacena en el registro f. Sintaxis: [etiqueta] ANDWF f,d Operacin: (W) AND (f) > (destino) Flags afectados: Z Ejemplo: ANDWF REG,1 Antes de la instruccin: W=017, REG= 0xC2 Despus de la instruccin: W=017, REG= 002

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros


CLRF: Borra un registro Borra el contenido del registro f y se activa el flag Z. Sintaxis: [etiqueta] CLRF f Flags afectados: Z Ejemplo: CLRF REG Antes de la instruccin: REG=054 Despus de la instruccin: REG=000, Z=1 CLRW: Borra el registro de trabajo W Borra el contenido del registro W y se activa el flag Z. Esta instruccion no tiene operandos. Sintaxis: [etiqueta] CLRW Flags afectados: Z Ejemplo: CLRW Antes de la instruccin: W=054 Despus de la instruccin: W=000, Z=1

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros COMF: Complementa el registro f El contenido del registro f se complementa. Si d=0 el resultado se almacena en el registro W. Si d=1 el resultado se almacena en el registro f. Sintaxis: [etiqueta] COMF f,d Flags afectados: Z Ejemplo: COMF REG,0 Antes de la instruccion: REG=013 Despus de la instruccin: REG=013, W=0xEC DECF: Decrementa f en 1 De decrementa en uno el contenido del registro f. Si d=0, el resultado se almacena en W. Si d=1, el resultado se almacena en f. Sintaxis: [etiqueta] DECF f,d Flags afectados: Z Ejemplo: DEC CONT, 1 Antes de la instruccin: CONT=001, Z=0 Despus de la instruccin: CONT=000, Z=1

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros DECFSZ: Decrementa en 1 y salta si el resultado es 0 El contenido del registro f se decrementa. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado se coloca en el registro f. Si el resultado es 0, se salta la siguiente instruccin y se contina con la ejecucin. Sintaxis: [etiqueta] DECFSZ f,d Flags afectados: Ninguno INCF: Incrementa el registro f Incrementa en uno el contenido del registro f. Si d=0, el resultado se almacena en W. Si d=1, el resultado se almacena en f. Sintaxis: [label] INCF f,d Flags afectados: Z Ejemplo: INCF CONT,1 Antes de la instruccin: CONT=0xFF, Z=0 Despus de la instruccin: CONT=000, Z=1

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros INCFSZ: Incrementa en 1 y salta si el resultado es 0 El contenido del registro f se incrementa. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado se coloca en el registro f. Si el resultado es 0, se salta la siguiente instruccin y se contina con la ejecucin. Sintaxis: [etiqueta] DECFSZ f,d Flags afectados: Ninguno IORWF: W OR f Realiza la operacin lgica OR entre el registro W y el registro f. Si d=0 el resultado se almacena en el registro W. Si d=1, el resultado se almacen en el registro f. Sintaxis: [etiqueta] IORWF f,d Flags afectados: Z Ejemplo: IORWF REG,0 Antes de la instruccin: REG=013, W=091 Despus de la instruccin: REG=013, W=093

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros MOVF: Mover el registro f El contenido del registro f se mueve al destino d. Si d=0, el destino es el registro W. Si d=1, el destino es el propio registro f. Sintaxis: [etiqueta] MOVF f,d Flags afectados: Z Ejemplo: MOVF REG,0 Despus de la instruccin: W=REG RLF: Rota el registro f a la izquierda El contenido del registro f se rota una posicin a la izquierda. El bit de ms peso pasa al carry y el carry se introduce por el bit de menos peso de f. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro f. Sintaxis: [etiqueta] RLF f,d Flags afectados: C Ejemplo: RLF REG,1 Antes de la instruccin: REG=b11100110, C=0 Despus de la instruccin: REG=b11001100, C=1

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros RRF: Rota el registro f a la derecha El contenido del registro f se rota una posicin a la derecha. El bit de menos peso pasa al carry y el carry se introduce por el bit de ms peso de f. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro f. Sintaxis: [etiqueta] RLF f,d Flags afectados: C Ejemplo: RLF REG,1 Antes de la instruccin: REG=b11100110, C=0 Despus de la instruccin: REG=b01110011, C=0 SUBWF: Resta f W Resta el contenido del registro f menos el contenido del registro W. Si d=0, el resultado se almacena en el registro W. Si d=1, el resultado se almacena en el registro f. Sintaxis: [etiqueta] SUBWF f,d Flags afectados: C, DC, Z Ejemplo: SUBWF REG,1 Antes de la instruccin: REG=001, W=002 Despus de la instruccin: REG=0xFF, W=002

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros SWAPF: Intercambio de f El nibble bajo del registro f se intercambia con el nibble alto del mismo. Si d=0, el resultado se coloca en el registro W. Si d=1, el resultado queda en el registro f. Sintaxis: [etiqueta] SWAPF f,d Flags afectados: Ninguno Ejemplo: SWAPF REG,1 Antes de la instruccin: REG=054 Despus de la instruccin: REG=045 XORWF: W XOR f Realiza la funcin lgica OR exclusiva entre el contenido del registro W y el registro f. Si d=0, el resultado se almacena en el registro W. Si d=1 el resultado se almacena en el registro f. Sintaxis: [etiqueta] XORWF f,d Flags afectados: Z Ejemplo: XORWF REG,1 Antes de la instruccin: REG=0xAF, W=0xB5 Despus de la instruccin: REG=0x1A, W=0xB5 NOP: No operacion No realiza ninguna operacion, solo consume un ciclo de reloj Sintaxis: [etiqueta] NOP

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BIT


M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BIT BCF: Borra un bit Borra el bit bdel registro f Sintaxis: [etiqueta] BCF f,b Ejemplo: BCF REG,0 Antes de la instruccin: REG=b01101101 Despus de la instruccin: REG=b01101100 BSF: Activa un bit Activa el bit b del registro f Sintaxis: [etiqueta] BSF f,b Ejemplo: BSF REG,2 Antes de la instruccin: REG=b01001001 Despus de la instruccin: REG=b01001011 BTFSC: Checa un bit y salta si es 0 Si el bit b del registro f es 0, se salta una instruccin y se contina con la ejecucin. Sintaxis: [etiqueta] BTFSC f,b BTFSS: Checa un bit y salta si es 1 Si el bit b del registro f es 1, se salta una instruccin y se contina con la ejecucin. Sintaxis: [etiqueta] BTFSS f,b

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a literales y control

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a constantes y de control

ANDLW: W AND literal Realiza la operacin lgica AND entre el registro W y la constante k. El resultado se almacena en el registro W. Sintaxis: [label] ANDWL k Flags afectados: Z Ejemplo: ANDLW 0x5F Antes de la instruccin: W=0xA3 Despus de la instruccin: W=003 CALL: Llamada a subrutina Llamada y salto a subrutina. La direccin de retorno se guarda en el stack. La constante k de 8 bits forma la direccin de salto y se carga en los bits del PC. Los bits del PC se cargan con los bits del registro STATUS. PC se pone a 0. Sintaxis: [etiqueta] CALL k Ejemplo: INICIO CALL DESTINO Antes de la instruccin: PC=INICIO Despus de la instruccin: PC=DESTINO

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a constantes y de control

CLRWDT: Borra el watchdog timer Esta instruccin borra tanto el watchdog como el prescaler. Los bits TO y PD del registro de estado se ponen a 1. Sintaxis: [label] CLRWDT Flags afectados: TO, PD GOTO: Salto incondicional Se trata de un salto incondicional. Los 9 bits de la constante k que forman la instruccin, se cargan en los bits del PC y forman la direccin de salto. Los bits del PC se cargan con los bits del registro de estado. Sintaxis: [etiqueta] GOTO k Ejemplo: INICIO GOTO DESTINO Antes de la instruccin: PC=0 Despus de la instruccin: PC=DESTINO

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a constantes y de control IORLW: W OR literal Se realiza la funcin lgica OR entre el registro W y la contante k. El resultado se almacena en el registro W. Sintaxis: [etiqueta] IORLW k Flags afectados: Z Ejemplo: IORLW Ox35 Antes de la instruccin: W=0x9A Despus de la instruccin: W=0xBF MOVLW: Carga un literal en W El registro W se carga con el valor de 8 bits expresado mediante la literal k. Sintaxis: [etiqueta] MOVLW k Ejemplo: MOVLW 0x5A Despus de la instruccin: W=0x5A RETURN: Regresa de una subrutina El programa regresa de la subrutina y ejecuta la instruccion que sigue a CALL Sintaxis: [etiqueta] RETURN

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a constantes y de control RETLW: Regresa de una subrutina y carga el valor K en W El programa regresa de la subrutina y carga el valor de 8 bits del registro k en el registro W Sintaxis: [etiqueta] RETLW,k Ejemplo: RETLW,045 Antes de la instruccion: W=xx Despues de la instruccion: W=045 RETFIE: Regresa de la rutina de servicio Sintaxis: [etiqueta] RETFIE SLEEP: Entra en estado de reposo Al salir, activa el bit de estado TO y borra el PD. El WDT y el prescaler se borran.Al entrar en el modo SLEEP, se detiene el oscilador. Sintaxis: [etiqueta] SLEEP Flags afectados: TO, PD, GPWUF

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a constantes y de control XORLW: W XOR literal Realiza la funcin lgica OR exclusiva entre el contenido del registro W y la constante k de 8 bits. El resultado se almacena en el registro W. Sintaxis: [etiqueta] XORLW k Flags afectados: Z Ejemplo: XORLW 0xAF Antes de la instruccin: W = 0xB5 Despus de la instruccin: W = 0x1A SUBLW: Resta L W A una constante k de 8 bits se le resta el registro W. El resultado es guardado en el mismo registro W. Sintaxis: [etiqueta] SUBLW k Flags afectados: C,DC,Z

M I C R O C O N T R O L A D O R E S

Formato general: instrucciones de byte


13
8 7 6 0

Cdigo de operacin

f (direccin)

si d=0 el destino es W
si d=1 el destino es f f es la direccin de 7 bits del registro El formato de todas las instrucciones consiste de una palabra de 14 bits dividida en un cdigo de operacin que especifica el tipo de instruccin de uno o ms operandos. En esta pgina y las siguientes se muestra los tres formatos generales que las instrucciones pueden tener.

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BYTE registros

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a byte: Ejemplo


MOVF f, d cdigo: 00 1000 dfff ffff
0peracin: f destino, actualiza bandera Z
M I C R O C O N T R O L A D O R E S

si d=0 entonces: f w si d=1 entonces: f f, en este caso se utiliza para saber si el contenido de f es cero. En estas instrucciones f representa un registro SFR (ej: PORTA) o el nombre de una variable RAM (TEMP1), que sirve como operando fuente o destino. d representa al operando destino: si d=0 el destino es el registro W, si d=1 el destino es el file f especificado en la instruccin.

Formato general: instrucciones de bit


13 10 9 8 7 6 0

Cdigo de operacin b9b8b7

f (direccin)

bbb es el nmero en binario del bit f es la direccin de 7 bits del registro

M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a BIT


M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a bit: Ejemplo


BSF f, b cdigo: 01 01bb bfff ffff operacin: 1 bit (bbb) de f
M I C R O C O N T R O L A D O R E S

As: BSF f, 5 realiza 1 f5. En estas instrucciones b representa un campo de 3 bits que selecciona el nmero de bit afectado en la operacin, mientras que f representa el registro en el cual el bit est localizado.

Formato general: instrucciones de literales


13 8 7 0

Cdigo de operacin

Literal k

k es un valor inmediato o constante de 8 bits En la mayora de las instrucciones k representa un dato de 8 bits.

M I C R O C O N T R O L A D O R E S

Formato general: instrucciones de control


Instrucciones CALL y GOTO solamente: k es un valor inmediato o constante de 11 bits.
13 11 10 0
M I C R O C O N T R O L A D O R E S

Cdigo de operacin

Literal k (11 bits)

Instrucciones de literales y de control


En estas instrucciones k representa una constante de 8 u 11 bits, llamada literal. XORLW k cdigo: 11 1010 kkkk kkkk operacin: W kkkkkkkk W As: XORLW 32, entonces W 00100000 W En la mayora de estas instrucciones como XORLW k, donde k es un byte, ste es un dato. GOTO k cdigo: 101kkk kkkk kkkk operacin: PC12PC11 kkkkkkkkkkk PC En las instrucciones de control como GOTO k, el literal k de 11 bits se usa para hallar una direccin.
M I C R O C O N T R O L A D O R E S

Instrucciones orientadas a literales y control

M I C R O C O N T R O L A D O R E S

Ciclo de instruccin
Como ya se ha dicho debido a la tubera y al solapamiento de la fase de ejecucin de una instruccin con la fase de bsqueda de la siguiente, la mayora de las instrucciones de los PIC demoran un ciclo de instruccin. La excepcin son las instrucciones de salto o ramificacin, donde al no poder solapar su ejecucin con la bsqueda de la siguiente, son necesarios los dos ciclos de instruccin.
M I C R O C O N T R O L A D O R E S

Ciclo de Instruccin de los PIC


M I C R O C O N T R O L A D O R E S

Ciclo de Instruccin de los PIC


El ciclo de instruccin demora cuatro ciclos de reloj que de acuerdo al grfico anterior siendo Q1=Q2=Q3=Q4 se obtiene: CI=Ciclo de Instruccin=4Q=4Tosc Donde: Tosc = 1/fosc EJEMPLOS: PARA fosc= 4 MHz: CI =4Q= 4Tosc = 4(1/4MHz) = 1 seg Para fosc = 20 MHz
M I C R O C O N T R O L A D O R E S

CI = 4Q=4Tosc = 4x 1/20MHz = 0.2 useg = 200 ns

Instrucciones por Grupos


Para su mejor estudio vamos a dividirlas en los grupos siguientes:
1- Limpiar/mover 2- Incremento/decremento/complemento 3- Suma/Resta 4- Lgicas 5- Manipulacin de un solo bit y saltos condicionales 6- goto/call/return/return from interrupt 7- Miscelnea
M I C R O C O N T R O L A D O R E S

Instrucciones Limpiar/mover
CLRW CLRF MOVLW MOVWF MOVF MOVF SWAPF SWAPF
TEMP1 D 10 TEMP1 TEMP1, W TEMP1, F TEMP1, F TEMP1, W
M I C R O C O N T R O L A D O R E S

Incremento/Decremento/Complemento
INCF INCF DECF DECF COMF COMF TEMP1, F TEMP1, W TEMP1, F TEMP1, W TEMP1, F TEMP1, W
M I C R O C O N T R O L A D O R E S

Suma/Resta
ADDLW ADDWF ADDWF SUBLW SUBWF SUBWF 5 TEMP1, F TEMP1, W 5 TEMP1, F TEMP1, W
M I C R O C O N T R O L A D O R E S

;W 5 - W ; TEMP1 TEMP1-W ; W TEMP1 - W

Instrucciones Lgicas
ANDLW ANDWF ANDWF IORLW IORWF IORWF XORLW XORWF XORWF RLF RLF RRF RRF B 00000111 TEMP1, F TEMP1, W B 00000111 TEMP1, F TEMP1, W B 00000111 TEMP1, F TEMP1, W TEMP1, F TEMP1, W TEMP1, F TEMP1, W
M I C R O C O N T R O L A D O R E S

Manipulacin de un solo bit / saltos condicionales


BCF BSF BCF BTFSC BTFSS DECFSZ DECFSZ INCFSZ INCFSZ PORTB, 0 STATUS, C TEMP1, 5 TEMP1, 3 TEMP1, 3 TEMP1, F TEMP1, W TEMP1, F TEMP1, W
M I C R O C O N T R O L A D O R E S

GOTO-CALL-RETURNRETURN FROM INTERRUPT


GOTO CALL RETURN RETLW ALLI ; salto a una etiqueta TAREA1 ; llamado a una subrutina ; para retornar de una subrutina 5 ; carga el literal 5 en w retornando del ; llamado a una subrutina ; sirve para retornar de una ; interrupcin
M I C R O C O N T R O L A D O R E S

RETFIE

Miscelnea
CLRWDT ;Si el watchdog timer est habilitado, esta ;instruccin lo pone encera para impedir su ;desbordamiento. ;Detiene el reloj (reduce potencia) y ;espera por watchdog timer o por seal externa. ;no hace nada consume un ciclo de instruccin
M I C R O C O N T R O L A D O R E S

SLEEP

NOP

2.2 Modos de direccionamiento de datos


La memoria de datos se puede acceder de tres modos que se conocen como: 1- Direccionamiento inmediato 2- Direccionamiento directo 3- Direccionamiento indirecto
M I C R O C O N T R O L A D O R E S

Direccionamiento inmediato Ocurre en instrucciones con literales que forman parte de la instruccin. Es decir que el dato se encuentra en la misma instruccin. En el cdigo de mquina est embebido el dato.

Direccionamiento directo
Ocurre en las instrucciones que contienen la direccin del dato requerido. En el cdigo de mquina est embebido la direccin del dato. Direccionamiento indirecto Ocurre cuando en la instruccin se tiene una operacin con el registro INDF, lo cual indica que el valor del dato se encuentra en la direccin guardada en el registro FSR (7-BITS menos significativos).

M I C R O C O N T R O L A D O R E S

Direccionamiento Directo e Indirecto


M I C R O C O N T R O L A D O R E S

Ejemplo de instrucciones con Direccionamiento Directo


Con el direccionamiento directo el cual es lgico y claro por s mismo, es suficiente direccionar un registro para leerlo.
M I C R O C O N T R O L A D O R E S

Direccionamiento Indirecto
El microcontrolador 16F887 es adems capaz de direccionamiento indirecto por medio de los registros INDF y FSR. Algunas veces el direccionamiento indirecto simplifica considerablemente la escritura de un programa. El direccionamiento indirecto emplea el registro INDF, el cual, no es un registro verdadero (fsicamente no existe), solamente especifica el registro apuntado por el registro FSR. Debido a esto la lectura/escritura sobre el registro INDF significa la lectura/escritura del registro apuntado por el registro FSR. En otras palabras en el registro FSR se especifican las direcciones de los registros apuntados y en INDF se colocan sus valores.
M I C R O C O N T R O L A D O R E S

Las diferencias entre direccionamiento directo e indirecto se especifican en la siguiente diapositiva.

Ejemplo de instrucciones con INDF


MOVWF INDF Antes: (W)=2A (FSR)=14 ((FSR))=? Despus (W)=2A (FSR)=14 ((FSR))=2 MOVF INDF, W Antes: (W)=? (FSR)=14 ((FSR))=B2 Despus (W)=B2 (FSR)=14 ((FSR))=B2
M I C R O C O N T R O L A D O R E S

Ejemplo de Direccionamiento Indirecto


Programa que limpia las localidades de la RAM desde la posicin 20H hasta 2FH. BCF MOVLW MOVWF CLRF INCF BTFSS GOTO XXXX STATUS, IRP 0X20 FSR INDF FSR, F FSR, 4 NEXT
M I C R O C O N T R O L A D O R E S

NEXT

CONTINUE XXXX

Diferencias entre Direccionamiento Directo y Direccionamiento Indirecto

M I C R O C O N T R O L A D O R E S

2.3 Registros de Trabajo


Los registros de trabajo o de control se encuentran en los registros SFR . Por ahora se estudiarn los registros:
STATUS OPTION REG PCON PC = PCLATH & PCL
M I C R O C O N T R O L A D O R E S

R(W R (0) (1)

Bit de lectura/escritura Bit de lectura solamente Despus de un RESET, se hace cero Despus de un RESET, se hace uno

IRP - Bit que selecciona bancos de registros. Se lo usa en direccionamiento indirecto 1 - Banks 0 and 1 activos (00h-FFh) 0 - Banks 2 and 3 activos (100h-1FFh) RP1,RP0 - Bits para seleccionar los bancos de registros. Usados en direccionamiento directo.
RP1 RP0 00 01 10 11 Banco activo Bank0 Bank1 Bank2 Bank3

TO Bit de Time-out. 1 Despus de encender el microcontrolador o despus de ejecutar la instruccin CLRWDT que resetea el WDT o la instruccin SLEEP (modo de bajo consumo de energa). 0 Cuando se desborda el perro guardin.

M I C R O C O N T R O L A D O R E S

PD Bit de Power-down. 1 Despus de encender el microcontrolador o despus de ejecutar la instruccin CLRWDT que resetea el WDT . 0 Al ejecutar la instruccin SLEEP que permite entrar en el modo de bajo consumo. Z - Bit de Zero 1 Cuando el resultado de una operacin aritmtica o lgica es cero. 0 Cuando el resultado de una operacin aritmtica o lgica es diferente de cero. DC - Bit de carry/borrow este bit cambia durante las operaciones de adicin y sustraccin si ocurre un desbordamiento (overflow) o prstamo (borrow). 1 Cuando ocurre un desbordamiento del cuarto bit. 0 Cuando no ocurre un desbordamiento del cuarto bit. C - Bit de Carry/Borrow cambia durante las operaciones de adicin o sustraccin si ocurre un desbordamiento (overflow) o prstamo (borrow), i.e. si el resultado es mayor a 255 or menor que 0. 1 Cuando ocurre un desbordamiento del bit ms significativo. 0 Cuando no ocurre un desbordamiento del bit ms significativo.

M I C R O C O N T R O L A D O R E S

RBPU - Port B Pull up 1 - PortB pull-ups deshabilitados 0 - PortB pull-ups habilitados

INTEDG Seleccin del Flanco de Interruptcin 1 Interrupcin con el flanco de subida del bit RB0/INT. 0 - Interrupcin con el flanco de bajada del bit RB0/INT.

T0CS Selecciona el origen del reloj del TMR0 1 Como contador de pulsos del pin TOCKI. 0 Reloj de insrucciones interno (Fosc/4). T0SE Seleccin del flanco de conteo del TMR0 desde TOCK1 1 Incrementa en flanco de bajada del pin RA4/TOC1. 0 - Incrementa en flanco de subida del pin RA4/TOC1.

M I C R O C O N T R O L A D O R E S

PSA Asignacin del preescalador al WDT o al TMR0 1 Pre-escalador se asigna al WDT. 0 Pre-escalador se asigna al TMR0. PS2, PS1, PS0 Bits de seleccin del Pre-escalador La divisin del Pre-escalador es seleccionada mediante tres bits y se lo asigna al (TMR0) o al perro guardin (WDT) de acuerdo a la siguiente tabla:

M I C R O C O N T R O L A D O R E S

El registro PCON contiene dos banderas para diferenciar entre: POR,BOR,MCLR y WDT reset. As como tambin un control para Ultra low power reset y un habilitador por software del BOR.

ULPWUE Bit habilitador de Ultra Low-Power Wake-up 1 Habilitador de Ultra low Power Power Wake-up. 0 - Deshabilitador de Ultra low Power Power Wake-up. SBOREN - Bit habilitador de Software BOR Enable 1 - Habilitador de Brown-out Reset. 0 - Deshabilitador de Brown-out Reset. POR Bit de Power-on Reset 1 Cuando no ha ocurrido POR 0 - Cuando ha ocurrido POR. Este bit tiene que ser seteado por software BOR - Bit de Brown-out Reset 1 - Cuando no ha ocurrido un Brown-out Reset 0 - Cuando ha ocurrido un Brown-out Reset . Este bit debe de ser seteado por software luego de un BOR,

M I C R O C O N T R O L A D O R E S

Contador de Programa PC: Compuesto por los Registros PCL y PCLATH

El tamao de la memoria ROM del microcontrolador es de 8K. Es decir 8.192 posiciones para almacenar programas. Por esta razn el contador de programa debe ser de 13 bits de ancho (2^13 = 8192), conformado por 8 bits del registro PCL y 5 bits del registro PCLATH. El contador del programa cuenta normalmente hasta 2K por esta razn la memoria ROM se divide en cuatro pginas de 2K. Para saltar entre pginas es necesario programar los bits 4 y 5 de PCLATH (que son los indicadores de pgina). En llamadas a subrutinas o ejecuciones de saltos (instrucciones CALL y GOTO), el microcontrolador es capaz de proveer solo 11-bits de direccionamiento. Por esta razn en forma similar a la memoria RAM dividida en bancos, la memoria ROM se divide en cuatro pginas de 2K cada una. Las instrucciones ejecutadas dentro de una pgina no tienen problema pero para saltar entre pginas es necesario programar los bits 4 y 3 de PCLATH (que son los indicadores de pgina) como se observa en la prxima diapositiva. Cuando las subrutinas alcanzan las instrucciones RETURN, RETLW o RETFIE retornan al programa principal y el microcontrolador simplemente contina con la ejecucin del programa a partir de la direccin almacenada en la PILA o STACK

M I C R O C O N T R O L A D O R E S

M I C R O C O N T R O L A D O R E S

Você também pode gostar