Instrucciones para Programar El PIC16F877A

September 2, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Instrucciones para Programar El PIC16F877A...

Description

 

 

Instrucciones para programar el PIC16F877A El microcontrolador posee varios elementos en forma interna: el procesador, memoria de programa, memoria de datos, periféricos, contadores. contadores. La operación de configuración de los puertos en general implica la siguiente secuencia: • Ingresar al banco 1 • Configurar los puertos (registros TRISA, TRISB, TRISC, TRISD y TRISE) • Regresar al banco 0 • Escribir o leer datos desde los puertos. (registr os (registr os PORTA, PORTB, PORTC, PORTD y PORTE ). Los programas están compuestos por instrucciones. El PIC16F877 cuenta con 35 instrucciones, cada instrucción está representada por 14 bits. Los 14 bits a su vez se dividen en: • Código de operación (OPCODE), (OPCODE), que específica cual es la instrucción a la que hacemos referencia, por ende cada instrucción tiene un código en particular. • Operadores, cada instrucción es aplicada sobre determinados operadores, parte de los 14 bits están destinados a especificar quienes son los registros o valores que se verán afectados como resultado de la aplicación de la instrucción.

Las instrucciones están divididas en tres tr es clases: Orientadas a byte: byte: Las instrucciones orientadas a byte reservan los 7 bits de menor peso para indicar la dirección del registro que será operado. Una vez que se lleva a efecto la operación usamos el bit d para indicar donde será almacenado el resultado. Si d es 0 el resultado se almacena en el registro de trabajo W, si d es 1 el resultado será guardado guardado en el mismo registro (o file) que se operó. Orientadas a bit: bit: Las operaciones orientas a bit buscan escribir o leer una posición (bit) dentro de un file o registro. Una vez más los 7 bits inferiores son destinados para indicar la dirección de registro o file que vamos a trabajar y los siguientes tres bit especifican el bit dentro del registro.

Literales o de control Con formato: formato: Las instrucciones de control son las que ayudan a formar bucles dentro de los programas así como sirven para llamar a rutinas o procedimientos (instrucciones CALL o GOTO). En este caso en particular se emplea los 11 bits inferiores para enviar la dirección a la cual el contador de programa (PC) saltará. Los bits superiores de la instrucción sirven para identificar a la instrucción. En ocasiones es necesario cargar constantes a los registros del microcontrolador, las instrucciones literales nos sirven para mover las constantes a un registro en particular, en este caso empleamos los 8 bits inferiores para definir la constante que deseamos almacenar, en tanto que los bits restantes sirven para identificar la instrucción. instrucción.

 

 

Primeramente se debe tipiar la instrucción: LIST P=16F877A INCLUDE “P16f877A.INC”  “P16f877A.INC” 

; Indica el tipo de microprocesador utilizado ; Fichero del microcontrolador, aquí están las etiquetas de los registros y el valor que les corresponde.

 __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON _PW RTE_ON & _BOREN_OFF & _LVP_OFF& _CPD_OFF&  _WRT_OFF & _CP_OFF ; Nos ayuda a compilar el programa y grabarlo directamente a nuestro microcontrolador. FOSC_XT Auxiliador externo de cristal

Serie de instrucciones o códigos que se deben grabar en la memoria de programa. Si d = 0 el resultado re sultado de la operación se almacen almacena a en el registro W Si d = 1 el resultado se almacena en el registro utilizado Operaciones orientadas a registros Nemotécnico  

 ADDWF f,d  ANDWF f,d f,d CLRF f CLRW COMF f,d DECF f,d DECFSZ f,d INCF f,d INCFSZ 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

Operación

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 operación  Rotar a la izquierda a través del carry Rotar a la derecha a través del carry Restar W de f Intercambiar OR exclusiva nibbles entre Wde y ff

Cód. de operación (14 bits)

00 011 0111 1 dfff ffff 00 0101 dfff ffff 00 0001 1fff ffff 00 0001 0XXX XXXX 00 1001 dfff ffff 00 0011 dfff ffff 00 1011 dfff 00 1010 dfff 00 1111 1111 dfff 00 0100 dfff 00 1000 dfff 00 0000 1fff 00 0000 0XX0

ffff ffff ffff ffff ffff ffff 0000

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

Operaciones con constantes y de control

C,DC,Z

Z Z Z  Z  Z 



Z Z 



00 1101 dfff

ffff

00 1100 dfff 00 0010 dfff

ffff ffff

C,DC,Z 

00 0110 1110 dfff dfff 00

ffff ffff



01 00bb bfff 01 01bb bfff

ffff ffff

01 10bb bfff

ffff

01 11bb bfff

ffff

Operaciones orientadas a bits BCF f,b BSF f,b BTFSC f,b

Estados afectados  

C

 

   ADDLW k  ANDLW k CALL k CLRWDT GOTO k IORLW k MOVLW k RETFIE RETLW k

Sumar literal k a W  AND entre k y W Llamar subrutina Limpiar WDT Salta a dirección k OR entre k y W Cargar a W con literal k Retornar de interrupción Retornar y cargar a W con k

11 111X kkkk kkkk 11 1001 kkkk kkkk 10 0kkk kkkk kkkk 00 0000 0110 0100 10 1kkk kkkk kkkk 11 1000 kkkk kkkk 11 00XX kkkk kkkk 00 0000 0000 1001 11 01XX kkkk kkkk

C,DC,Z

RETURN SLEEP SUBLW k XORLW k

Retornar Ir al modode desubrutina bajo consumo Restarle k a W OR exclusiva entre k y W

00 0000 0011 1000 00 0000 0000 0110 11 110X kkkk kkkk 11 1010 kkkk kkkk

T0,PD C,DC,Z

Instrucción ADDLW:

Sintaxis: Operación: Ejemplo :

Sintaxis : Operación : Ejemplo:

T0,PD

Z

Z

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

ADDLW k (W) + k ADDLW d’15’    Antes de la instrucción Después de la instrucción

Instrucción ANDLW:

Z

registro W = d’10’ registro W = d’25’  

Operación lógica AND entre una constante k y el registro W, la operación se hace bit a bit, el resultado queda en el registro W.

ANDLW k (W) AND (k) ANDLW b’10101010’    Antes de la instrucción Después de la instrucción

registro W = b’11110000’   registro W = b’10100000 b’10100000’  ’  

Instrucción ANDWF:

Operación lógica AND entre un registro f y el registr registro o W, el resultado se guarda guarda en el registro registro escogido según el valor del bit d.

Sintaxis :

ANDWF f,d

Ejemplo : ANDWF FSR,1  Antes de la instrucción Después de la instrucción

registro W = b’00010111’   registro W = b’00010111’  

Instrucción BCF:

Pone en cero el bit b del registro f.

Sintaxis :

BCF

Ejemplo :

registro FSR = b’11000010’ registro FSR = b’00000010’  

f,b

BCF regis,7  Antes de la instrucción Después de la instrucción

regis = b’11111111’   regis = b’01111111’  

 

 

Instrucción BSF:

Pone en uno el bit b del registro f.

Sintaxis :

BSF

Ejemplo :

f,b

BSF regis,2  Antes de la instrucción Después de la instrucción

regis = b’00000000’   regis = b’00000100’  

Instrucción BTFSC: Pregunta por el bit b del registro f, si dicho bit está en cero el programa se salta una línea y ejecuta la instrucción que allí se encuentre, si el bit estaba en uno no salta una línea sino que ejecuta la instrucción inmediatamente inmediatamente siguiente. Sintaxis : Operación :

BTFSC f,b salta si (f) = 0

Instrucción CALL: Sintaxis : Operación :

Llama una subrutina que está ubicada en la posición de memoria o etiqueta “k”.  “k”.  CALL k carga el apuntador de programa con la dirección “K”  

Instrucción CLRF:

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

Sintaxis :

CLRF

Instrucción CLRW:

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

Sintaxis:

f

CLRW

Instrucción CLRWDT:

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

Instrucción COMF:

Complementa el contenido del registro “f” (cambia unos por ceros ceros   y viceversa), el resultado se guarda en el registro escogido según el valor del bit d.

Sintaxis:

COMF f,d

Instrucción DECF:

Sintaxis: Sintax is:

Decrementa en uno el contenido del registro “f”, “f ”, el resultado resultado   se guarda en el registro escogido según el valor del bit d.

DECF f,d

Instrucción GOTO:El GOTO: El contador contador de programa salta a la dirección “k”  

 

 

Instrucción INCF: Incrementa en uno el contenido del registro “f”, el resultado se guarda en el registro escogido según el valor del bit d. Sintaxis: Operación: Operaci ón: Ejemplo :

INCF

INCF f,d (f) + 1 regis,1

 Antes de la instrucción instrucción Después de la instrucción

regis = d’24’ regis = d’25’  

Instrucción IORLW:

Operación lógica OR entre el contenido del registro W y la constante k, el resultado queda en el el registro W.

Sintaxis: Operación: Ejemplo:

IORLW (W) OR (k) IORLW  Antes de la instrucción Después de la instrucción

Instrucción MOVLW: Sintaxis: Operación:

k b’10101100’   registro W = b’00001111’ registro W = b’10101111’  

Carga el registro W con el valor constante k.

MOVLW k (W) se carga con el valor k

Instrucción NOP:

No hace nada.

Sintaxis: NOP Ciclos de instrucción: 1 Bits del registro de estados que se afectan: Ninguno

Instrucción RETURN: Sintaxis: Operación:

Retorno desde una subrutina.

RETURN carga el contador de programa con la dirección donde debe regresar luego de ejecutar la subrutina, subrutina, la cual estaba estaba guardada en la pila o stack. Ciclos de instrucción: 2 Bits del registro de estados que se se afectan: Ninguno Ejemplo : RETURN Después de la interrupción, contador de programa = dato de la pila

 

  DESCRIPCION

Sintaxis

Ciclos de Instrucción 

Instruccioness de carga Instruccione

CLRF f

Borra el contenido del registro f



CLRW

Borra el contenido del registro W



MOVF f ,d

Mueve el contenido del registro f



MOVWF f

Mueve el contenido del registro W al registro f



MOVLW k Guarda en el registro W el valor k Instruccioness de bit Instruccione

1

 

BCF f, b

Pone en "0" el bit b del registro f



BSF f, b

Pone en "1" el bit b del registro f



Instruccioness aritméticas Instruccione

ADDLW k

Suma el valor k al registro W



ADDWF f, d

Suma el contenido del registro W con el de f



DECF f, d

Decrementa en una unidad el contenido del registro f



INCF f, d

Incrementa en una unidad el contenido del registro f



SUBLW k

Resta el valor k al registro W



SUBWF f, d

Resta el contenido del registro W al registro f



Instruccioness lógicas Instruccione

ANDLW k

Realiza la operación lógica AND entre el valor k y el registro W



ANDWF f, d

Realiza la operación lógica AND entre el contenido del registro W y el de f



COMF f, d

Niega el valor del registro f



IORLW k

Realiza la operación lógica OR entre el valor k y el registro W



IORWF f, d

Realiza la operación lógica OR entre el contenido del registro W y el de f



RLF f, d

Rota el contenido del registro f hacia la izquierda a través del carry bit



RRF f, d

Rota el contenido del registro f hacia la derecha a través del carry bit



SWAPF f, d

Intercambia los cuatro primeros bits con los cuatro últimos del registro f



XORLW

Realiza la operación lógica XOR entre el valor k y el registro W



XORWF f, d

Realiza la operación lógica XOR entre el contenido del registro W con el de f



Instruccioness de salto Instruccione

BTFSC f, b

Lee el bit b del registro f y salta la instrucción siguiente si está en “0”  

1 (2 si salta)

BTFSS f, b

Lee el bit b del registro f y salta la instrucción siguiente si está en “1”  “1” 

1 (2 si salta)

DECFSZ f, d

Decrementa en una unidad el contenido del registro f y salta la instrucció instrucción n siguiente si es cero

1 (2 si salta)

INCFSZ f, d

Incrementa en una unidad el contenido del registro f y salta la instrucción siguiente si es cero

1 (2 si salta)

GOTO k

Salto incondicional a la etiqueta k



Instruccioness de manejo de subrutinas Instruccione

CALL k

Llamada a la subrutina k



RETFIE

Retorno de una interrupción



RETLW

Retorno de una subrutina con el valor k en el registro W



RETURN

Retorno de una subrutina



 

 

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF