Está en la página 1de 15

Instrucciones para programar el PIC16F877

Instrucciones para programar el PIC16F877

Instrucciones para programar el PIC16F877

Estos microcontroladores responden a una serie de instrucciones o cdigos que se deben grabar en su memoria de programa, en total son 35. A continuacin se encuentra una tabla con la lista completa y despus una descripcin de cada una de ellas con el fin de facilitar su aprendizaje.
Si d = 0 el resultado de la operacin se almacena en el registro W Si d = 1 el resultado se almacena en el registro utilizado
Operaciones orientadas a registros Nemotcnico Operacin ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ f,d f,d f f,d f,d f,d Sumar W y f AND entre W y f Limpiar f Limpiar w Complementar f Decrementar f Decrementar f, saltar si cero Incrementar f Incrementar f, saltar si cero OR entre W y f Mover f Mover W a f No operacin Rotar a la izquierda a travs del carry Rotar a la derecha a travs del carry Restar W de f Intercambiar nibbles de f OR exclusiva entre W y f Cd. de operacin (14 bits) 00 00 00 00 00 00 0111 0101 0001 0001 1001 0011 dfff ffff dfff ffff 1fff ffff 0XXX XXXX dfff ffff dfff ffff ffff ffff Estados afectados C,DC,Z Z Z Z Z Z Z Z Z C C C,DC,Z Z

INCF f,d INCFSZ f,d IORWF f,d MOVF f,d MOVWF f NOP RLF f,d RRF f,d

00 1011 dfff 00 1010 dfff 00 00 00 00 00 1111 0100 1000 0000 0000

dfff ffff dfff ffff dfff ffff 1fff ffff 0XX0 0000 ffff ffff ffff ffff ffff

00 1101 dfff 00 00 00 00 1100 0010 1110 0110 dfff dfff dfff dfff

SUBWF f,d SWAPF f,d XORWF f,d

Operaciones orientadas a bits BCF f,b BSF f,b BTFSC f,b BTFSS f,b Limpiar bit b de f Activar bit b de f Probar bit b de f, saltar si es cero Probar bit b de f, saltar si es uno 01 00bb bfff 01 01bb bfff 01 10bb bfff 01 11bb bfff ffff ffff ffff ffff

Operaciones con constantes y de control ADDLW k ANDLW k CALL k CLRWDT GOTO k IORLW k MOVLW k RETFIE RETLW k RETURN SLEEP SUBLW k XORLW k Sumar literal k a W AND entre k y W Llamar subrutina Limpiar WDT Salta a direccin k OR entre k y W Cargar a W con literal k Retornar de interrupcin Retornar y cargar a W con k Retornar de subrutina Ir al modo de bajo consumo Restarle k a W OR exclusiva entre k y W 11 11 10 00 10 11 11 00 11 00 00 11 11 111X kkkk 1001 kkkk 0kkk kkkk 0000 0110 1kkk kkkk 1000 kkkk 00XX kkkk 0000 0000 01XX kkkk 0000 0000 0000 0110 110X kkkk 1010 kkkk kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk 1000 0011 kkkk kkkk C,DC,Z Z T0,PD Z

T0,PD C,DC,Z Z

Instrucciones para programar el PIC16F877

Instruccin ADDLW:

Suma un valor constante k al contenido del registro W, el resultado se guarda en el registro W.

Sintaxis: ADDLW k Operacin: (W) + k Ciclos de instruccin: 1 Bits del registro de estados que se afectan: C, DC, Z Ejemplo : ADDLW d15 Antes de la instruccin Despus de la instruccin registro W = d10 registro W = d25

Instruccin ADDWF:

Suma el contenido de un registro f al contenido del registro W, el resultado se guarda en el registro escogido segn el valor del bit d.

Sintaxis: ADDWF f,d Operacin: (W) + (f) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: C, DC, Z Ejemplo: ADDWF 15h,0 Antes de la instruccin Despus de la instruccin registro W = 17h registro W = 0D9h registro 15h = 0C2h registro 15h = 0C2h

Instruccin ANDLW:

Operacin lgica AND entre una constante k y el registro W, la operacin se hace bit a bit, el resultado queda en el registro W.

Sintaxis : ANDLW k Operacin : (W) AND (k) Ciclos de instruccin : 1 Bits del registro de estados que se afectan: Z Ejemplo: ANDLW b10101010 Antes de la instruccin Despus de la instruccin registro W = b11110000 registro W = b10100000

Instruccin ANDWF: Sintaxis : Operacin : Ciclos de instruccin :


4

Operacin lgica AND entre un registro f y el registro W, el resultado se guarda en el registro escogido segn el valor del bit d. ANDWF f,d (W) AND (f) 1

Instrucciones para programar el PIC16F877

Bits del registro de estados que se afectan: Z Ejemplo : ANDWF FSR,1 Antes de la instruccin Despus de la instruccin registro W = b00010111 registro W = b00010111 registro FSR = b11000010 registro FSR = b00000010

Instruccin BCF:

Pone en cero el bit b del registro f.

Sintaxis : BCF f,b Operacin : 0 (f<b>) Ciclos de instruccin : 1 Bits del registro de estados que se afectan: Ninguno Ejemplo : BCF regis,7 Antes de la instruccin Despus de la instruccin regis = b11111111 regis = b01111111

Instruccin BSF:

Pone en uno el bit b del registro f.

Sintaxis : BSF f,b Operacin : 1 (f<b>) Ciclos de instruccin : 1 Bits del registro de estados que se afectan: Ninguno Ejemplo : BSF regis,2 Antes de la instruccin Despus de la instruccin regis = b00000000 regis = b00000100

Instruccin BTFSC: Pregunta por el bit b del registro f, si dicho bit est en cero el programa se salta una lnea y ejecuta la instruccin que all se encuentre, si el bit estaba en uno no salta una lnea sino que ejecuta la instruccin inmediatamente siguiente. Sintaxis : BTFSC f,b Operacin : salta si (f<b>) = 0 Ciclos de instruccin : 12 Bits del registro de estados que se afectan: Ninguno Ejemplo : lnea 1 Lnea 2 Lnea 3 BTFSC regis,0 GOTO inicio ..........

Instrucciones para programar el PIC16F877

Antes de la instruccin Despus de la instruccin

apuntador de programa = lnea 1 si el bit 0 del registro regis = 0 apuntador de programa = lnea 3 si el bit 0 del registro regis = 1 apuntador de programa = lnea 2

Instruccin BTFSS: Pregunta por el bit b del registro f, si dicho bit est en uno el programa se salta una lnea y ejecuta la instruccin que all se encuentre, si el bit estaba en cero no salta una lnea sino que ejecuta la instruccin inmediatamente siguiente. Sintaxis : BTFSS f,b Operacin : salta si (f<b>) = 1 Ciclos de instruccin : 12 Bits del registro de estados que se afectan: Ninguno Ejemplo : lnea 1 lnea 2 lnea 3 BTFSS regis,0 GOTO inicio .......... apuntador de programa = lnea 1 si el bit 0 del registro regis = 1 apuntador de programa = lnea 3 si el bit 0 del registro regis = 0 apuntador de programa = lnea 2

Antes de la instruccin Despus de la instruccin

Instruccin CALL:

Llama una subrutina que est ubicada en la posicin de memoria o etiqueta k.

Sintaxis : CALL k Operacin : carga el apuntador de programa con la direccin K Ciclos de instruccin : 2 Bits del registro de estados que se afectan: Ninguno Ejemplo : aqu CALL rutina contador de programa = aqu contador de programa = rutina En la pila se guarda la direccin aqu para regresar

Antes de la instruccin Despus de la instruccin

Instrucciones para programar el PIC16F877

Instruccin CLRF:

Borra el contenido del registro f, lo carga con 00.

Sintaxis : CLRF f Operacin : borra el contenido del registro f (lo carga con 00) Ciclos de instruccin : 1 Bits del registro de estados que se afectan: Z Ejemplo : CLRF regis regis = 5Ah regis = 00

Antes de la instruccin Despus de la instruccin

Instruccin CLRW:

Borra el contenido del registro W (lo carga con 00)

Sintaxis: CLRW Operacin: Registro W = 00 Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Ninguno Ejemplo : CLRW registro W = 5Ah registro W = 00

Antes de la instruccin Despus de la instruccin Instruccin CLRWDT:

Reinicia en cero el conteo del temporizador interno Watchdog Timer, para que no sea reseteado el microcontrolador.

Sintaxis: CLRWDT Operacin: contador del temporizador watchdog timer = 00 Ciclos de instruccin : 1 Bits del registro de estados que se afectan: TO, PD Ejemplo : CLRWDT Antes de la instruccin Contador WDT = ? Despus de la instruccin Contador WDT = 00 Bits del registro de estados: TO = 1, PD = 1 Complementa el contenido del registro f (cambia unos por ceros y viceversa), el resultado se guarda en el registro escogido segn el valor del bit d.

Instruccin COMF:

Sintaxis: COMF f,d Operacin: (complementar registro f) Ciclos de instruccin: 1

Instrucciones para programar el PIC16F877

Bits del registro de estados que se afectan: Z Ejemplo : COMF regis,0 Antes de la instruccin Despus de la instruccin regis = b00101100, W = ? regis = b00101100, W = b11010011

Instruccin DECF:

Decrementa en uno el contenido del registro f, el resultado se guarda en el registro escogido segn el valor del bit d.

Sintaxis: DECF f,d Operacin: (f) - 1 Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Z Ejemplo: DECF regis,1 Antes de la instruccin Despus de la instruccin regis = d13 regis = d12

Instruccin DECFSZ:

Decrementa en uno el contenido del registro f, si el contenido queda en 00 el micro salta una lnea del programa, el resultado obtenido se guarda en el registro escogido segn el valor del bit d.

Sintaxis: DECFSZ f,d Operacin : (f) - 1 , salta una lnea si el resultado es cero Ciclos de instruccin : 1 (2) Bits del registro de estados que se afectan: Ninguno Ejemplo : aqu DECFSZ regis, 1 GOTO ciclo contina ..... contador de programa = aqu regis = regis - 1 si regis = 0, entonces contador de programa = continua si regis no es 0, entonces contador de programa = aqu + 1 (ejecuta GOTO ciclo)

Antes de la instruccin Despus de la instruccin

Instruccin GOTO:

El contador de programa salta a la direccin k

Sintaxis: GOTO k Operacin: El contador de programa salta a la direccin k Ciclos de instruccin: 2 Bits del registro de estados que se afectan: Ninguno
8

Instrucciones para programar el PIC16F877

Ejemplo:

GOTO ciclo Antes de la instruccin Despus de la instruccin

contador de programa = ? contador de programa = ciclo

Instruccin INCF: Incrementa en uno el contenido del registro f, el resultado se guarda en el registro escogido segn el valor del bit d. Sintaxis: INCF f,d Operacin: (f) + 1 Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Z Ejemplo : INCF regis,1 regis = d24 regis = d25

Antes de la instruccin Despus de la instruccin Instruccin INCFSZ:

Incrementa en uno el contenido del registro f, si el contenido de f queda en 00 el micro salta una lnea del programa, el resultado se guarda en el registro escogido segn el valor del bit d.

Sintaxis: INCFSZ f,d Operacin: (f) + 1 , salta si el resultado es cero Ciclos de instruccin: 1 (2) Bits del registro de estados que se afectan: Ninguno Ejemplo: aqu DECFSZ GOTO contina..... regis, 1 ciclo contador de programa = aqu regis = regis + 1 si regis = 0, entonces contador de programa = continua si regis no es 0, entonces contador de programa = aqu + 1 (ejecuta GOTO ciclo)

Antes de la instruccin Despus de la instruccin

Instruccin IORLW:

Operacin lgica OR entre el contenido del registro W y la constante k, el resultado queda en el registro W.

Sintaxis: IORLW k Operacin: (W) OR (k) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Z

Instrucciones para programar el PIC16F877

Ejemplo:

IORLW

b10101100 registro W = b00001111 registro W = b10101111

Antes de la instruccin Despus de la instruccin Instruccin IORWF:

Operacin lgica OR entre el registro W y el registro f, el resultado se guarda en el registro escogido segn el valor del bit d.

Sintaxis: IORWF f,d Operacin: (W) OR (f) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Z Ejemplo: IORWF regis,0 regis = b00110011 , W = b11110000 regis =b00110011 , W = b11110011

Antes de la instruccin Despus de la instruccin Instruccin MOVLW:

Carga el registro W con el valor constante k.

Sintaxis: MOVLW k Operacin: (W) se carga con el valor k Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Ninguno Ejemplo: MOVLW 5Ah W=? W = 5Ah

Antes de la instruccin Despus de la instruccin

Instruccin MOVF:

Mueve el contenido del registro f hacia el registro W.

Sintaxis: MOVF f Operacin: (W) se carga con (f) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Z Ejemplo : MOVF regis,0 Antes de la instruccin Despus de la instruccin Instruccin MOVWF:
10

registro W = ?, regis = d32 registro W = d32

Mueve el contenido del registro W al registro f.

Instrucciones para programar el PIC16F877

Sintaxis: MOVWF f Operacin: (W) se mueve al registro (f) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Ninguno Ejemplo: MOVWF 20h registro 20h = ? , registro W = d48 registro 20h = d48, registro W = d48

Antes de la instruccin Despus de la instruccin Instruccin NOP:

No hace nada.

Sintaxis: NOP Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Ninguno

Instruccin RETURN: Sintaxis: Operacin:

Retorno desde una subrutina.

RETURN carga el contador de programa con la direccin donde debe regresar luego de ejecutar la subrutina, la cual estaba guardada en la pila o stack. Ciclos de instruccin: 2 Bits del registro de estados que se afectan: Ninguno Ejemplo : RETURN Despus de la interrupcin, contador de programa = dato de la pila Retorno desde una subrutina y adicionalmente carga el registro W con el valor constante k.

Instruccin RETLW:

Sintaxis: RETLW k Operacin: contador de programa se carga con el valor de la pila, adems (W) = k Ciclos de instruccin: 2 Bits del registro de estados que se afectan: Ninguno Ejemplo : CALL . . tabla NOP NOP RETLW Antes de la instruccin tabla

k1 registro W = ?

11

Instrucciones para programar el PIC16F877

Despus de la instruccin Instruccin RETFIE:

registro W = k1, contador de programa = dato de la pila

Retorna al programa luego de ejecutar una interrupcin.

Sintaxis: RETFIE Operacin: pila k contador de programa , 1 k intcon,gie Ciclos de instruccin: 2 Bits del registro de estados que se afectan: Ninguno Ejemplo : RETFIE Antes de la instruccin Despus de la instruccin contador de programa = ? contador de programa = dato de la pila, las interrupciones se habilitan nuevamente

Instruccin RLF:

Rotar el contenido del registro f un bit a la izquierda, usando el carry como bit intermedio, el resultado se guarda en el registro escogido segn el valor del bit d.

Sintaxis: RLF f,d Operacin: Rota el contenido del registro f a la izquierda a travs del carry Ciclos de instruccin: 1 Bits del registro de estados que se afectan: C Ejemplo : RLF regis,0 Antes de la instruccin Despus de la instruccin bit carry = 0, regis = 1110 0110, W=? bit carry = 1, regis = 1110 0110 W = 11001100

Instruccin RRF:

Rotar el contenido del registro f un bit a la derecha, usando el carry como bit intermedio, el resultado se guarda en el registro escogido segn el valor del bit d.

Sintaxis: RRF f,d Operacin: Rota el contenido del registro f a la derecha a travs del carry Ciclos de instruccin: 1 Bits del registro de estados que se afectan: C Ejemplo : RRF regis,0 Antes de la instruccin Despus de la instruccin bit carry = 0, regis = 1110 0101, W=? bit carry = 1, regis = 1110 0101 W = 0111 0010

12

Instrucciones para programar el PIC16F877

Instruccin SLEEP:

El micro entra en un estado de standby (dormido), de ese modo solamente sale si ocurre una interrupcin.

Sintaxis: SLEEP Operacin: bit TO = 1, bit PD = 0 Ciclos de instruccin: 1 Bits del registro de estados que se afectan: TO, PD Ejemplo : SLEEP Resta el contenido del registro W de la constante k usando el mtodo de complemento a dos, el resultado se guarda en el registro W, el bit de carry indica el signo de la respuesta.

Instruccin SUBLW:

Sintaxis: SUBLW k Operacin: k - (W) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: C, DC, Z Ejemplo 1: SUBLW 5h Antes de la instruccin Despus de la instruccin SUBLW 5h Antes de la instruccin Despus de la instruccin SUBLW 5h Antes de la instruccin Despus de la instruccin W = 1h, bit de carry = ? W = 4h, bit de carry = 1 (positivo) W = 5h, bit de carry = ? W = 0, bit de carry = 1 (positivo) W = 6h, bit de carry = ? W = 0FFh , bit de carry = 0 (negativo)

Ejemplo 2:

Ejemplo 3:

Instruccin SUBWF:

Resta el contenido del registro W del registro f usando el mtodo de complemento a dos, el bit de carry indica el signo de la respuesta, el resultado se guarda en el registro escogido segn el valor del bit d.

Sintaxis: SUBWF f,d Operacin: (f) - (W) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: C, DC, Z Ejemplo 1: SUBWF regis,1 Antes de la instruccin regis = 5h, W = 2h, bit de carry = ?

13

Instrucciones para programar el PIC16F877

Despus de la instruccin Ejemplo 2: SUBWF regis,1 Antes de la instruccin Despus de la instruccin SUBWF regis,1 Antes de la instruccin Despus de la instruccin

regis = 3h, W = 2h, bit de carry = 1 (positivo) regis = 2h, W = 2h, bit de carry = ? regis = 0, W = 2h, bit de carry = 1 (positivo) regis = 5h, W = 6h, bit de carry = ? regis = 0FFh, W = 6h, bit de carry = 0 (negativo)

Ejemplo 3:

Instruccin SWAPF:

Intercambia los cuatro bits altos y los cuatro bits bajos del registro f, el nuevo dato obtenido se guarda en el registro seleccionado segn el valor del bit d.

Sintaxis: SWAPF f,d Operacin: los bits f<3:0> se intercambian de posicin con los bits f<7:4> Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Ninguno Ejemplo 1: SWAPF regis,0 regis = b10101100, W = ? regis = b10101100, W = b11001010

Antes de la instruccin Despus de la instruccin

Instruccin XORLW:

Operacin lgica XOR entre el registro W y la constante k, el resultado se guarda en el registro W.

Sintaxis: XORLW k Operacin: (W) XOR (k) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Z Ejemplo: XORLW b10101100 registro W = b11110000 registro W = b01011100

Antes de la instruccin Despus de la instruccin

Instruccin XORWF:

Operacin lgica XOR entre el registro W y el registro f, el resultado obtenido se guarda en el registro seleccionado segn el bit d. f,d

Sintaxis:
14

XORWF

Instrucciones para programar el PIC16F877

Operacin: (W) XOR (f) Ciclos de instruccin: 1 Bits del registro de estados que se afectan: Z Ejemplo: XORWF regis,1 regis = b11110000, W = b10101010 regis = b01011010, W = b10101010

Antes de la instruccin Despus de la instruccin

15

También podría gustarte