P. 1
Tutorial PIC16F877A

Tutorial PIC16F877A

|Views: 8|Likes:
Publicado porJesus Montes

More info:

Published by: Jesus Montes on Oct 11, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

09/06/2015

pdf

text

original

INTRODUCCIÓN.

El siguiente trabajo va dedicado a todos aquellos que se inician en el mundo de los microcontroladores así como aquellos que les gustaría dar un repaso a lo aprendido. Cuando empecé con esto de los pics me dedique a recopilar información de la red y de algunos libros en el trayecto conocí a colegas en foros de electrónica y la escuela que tenían la misma inquietud por eso y otras cosas mas la razón de plasmar tales conocimientos aquí, bueno esto es la primera parte del tutorial notaran que le he dado el enfoque hacia un PIC en especial el 16F877 ya que es uno de los que esta en boga y además esta tomando aceptación entre las escuelas, y pienso que el 16F84 ya esta muy conocido pero no deja de ser poderoso, Pero recuerden las bases son las mismas. Para comentarios, correcciones o dudas pueden contactarme por e-mail espero les agrade y sea motivo de mejoras. Empezare por El diagrama de un sistema microcontrolado que sería algo así:

Los dispositivos de entrada pueden ser un teclado, un interruptor, un sensor, etc. Los dispositivos de salida pueden ser LED's, pequeños parlantes, zumbadores, interruptores de potencia (tiristores, optoacopladores), u otros dispositivos como relés, luces, un secador de pelo, en fin... lo que se desee. Aquí tienes una representación en bloques del microcontrolador, se puede ver que lo adaptamos tal y cual es un ordenador, con su fuente de alimentación, un circuito de reloj y el chip Microcontrolador, el cual dispone de su CPU, sus memorias, y por supuesto, sus puertos de comunicación listos para conectarse al mundo exterior

Enseguida describire algunos aspectos básicos que tienen que ver con todos lo microcontroladores PIC de Microchip para su utilización, Primero veamos que es un Microcontrolador: Digamos que es una especie de ordenador en miniatura que podemos programar, algunos autores denominan al microcontrolador como un dispositivo programable capaz de realizar diferentes actividades que requieran del procesamiento de datos digitales y del control y comunicación digital de diferentes dispositivos. En su interior posee un microprocesador, una memoria RAM (volátil) donde guardaremos las variables, una memoria EEPROM (no volátil) donde guardaremos nuestro Programa, un Timer o contador que nos facilitará algunas tareas, y algunas otras cosas más que irán variando dependiendo de que PIC utilicemos. Eso no es todo, algunos traen funciones especiales, ya hablaremos de ellas. Microcontroladores PIC16CXX/FXX de Microchip Estos micros pertenecen a la gama media y disponen de un set de 35 instrucciones, por eso lo llaman de tipo RISC (Reduced Instruction Set Computer) en español sería "Computador con Set de Instrucciones Reducido" pocas instrucciones pero muy poderosas, otras son de tipo CISC (Complex Instruction Set Computer - Computador con Set de Instrucciones Complejo), demasiadas instrucciones, y lo peor, difíciles de recordar. Esta familia de microcontroladores se divide en tres rangos según la capacidad de los microcontroladores. El más bajo lo compone la familia 16C5X. El rango medio lo componen las familias 16C6X/ 7X/ 8X, algunos con conversores A/D, comparadores, interrupciones, etc. La familia de rango superior lo componen los 17CXX. Estas son las funciones especiales de las cuales disponen algunos micros...  Conversores análogo a digital (A/D) en caso de que se requiera medir señales analógicas, por ejemplo temperatura, voltaje, luminosidad, etc.

(ésta me gustó) Cuando una señal externa activa una línea de interrupción. etc. Cuando se necesita establecer comunicación con otro microcontrolador o con un computador. 4MHz. Se le puede encontrar en un tipo de encapsulado de 40 pines (ò patas) PDIP el cual es el mas utilizado para su utilización didáctica en proyectos escolares.0 a 5. el microcontrolador deja de lado la tarea que está ejecutando. y luego continúa con lo que estaba haciendo. . Posee Rango amplio de tensiones de funcionamiento: • • Comercial: 2.0 a 5.5 volts Consumo muy bajo: • • • < 2 mA típico a 5 volt. Disponen de interrupciones y una pila de 8 niveles que permite el anidamiento de subrutinas.  Técnica llamada de "Interrupciones". existen microcontroladores que pueden ofrecer varias de ellas. Temporizadores programables (Timer's) Si se requiere medir períodos de tiempo entre eventos. de 14 bits cada una (Todas las instrucciones son de un solo ciclo con excepción de las ramificaciones del programa que son de dos ciclos). atiende dicha interrupción. generar temporizaciones o salidas con frecuencia específica. De acuerdo al número de instrucciones que el microcontrolador maneja se le denomina de arquitectura RISC (reducido) o CISC (complejo). que es un tipo de memoria ROM que se puede programar o borrar eléctricamente sin necesidad de circuitos especiales. EL Pic16F877 pertenece a la gama media de Microcontroladores donde encontraremos modelos desde 18 hasta 68 Pines su repertorio de instrucciones es de 35. 32KHz.5 volts Industrial: 2.5 µA típico de corriente en reposo a 2 volts. 15 µA típico a 2 volt.  Memoria EEPROM Para desarrollar una aplicación donde los datos no se alteren a pesar de quitar la alimentación. >0. Los microcontroladores se programan en Lenguaje Enzamblador y cada microcontrolador varía su conjunto de instrucciones de acuerdo a su fabricante y modelo. Cuenta con una arquitectura Harvard en la que son independientes la memoria de instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el acceso.  Interfaz serial RS-232.  salidas PWM (modulación por ancho de pulso) Para quienes requieren el control de motores DC o cargas resistivas.

 Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH de 8K.  Set de instrucciones reducido (tipo RISC).Características que lo hacen destacarse por su popularidad en el mundo de la electrónica:  Soporta modo de comunicación serial. pero con las instrucciones necesarias para facilitar su manejo.  Modulo Comparador con un voltaje de referencia.D. Sus características más importantes son: CARACTERÍSTICAS 16F877A Frecuencia máxima Memoria de programa flash palabra de 14 bits Posiciones RAM de datos Posiciones EEPROM de datos Puertos E/S Número de pines Interrupciones DX-20MHz 8KB 368 256 A.C. PSP.  En su arquitectura además incorporan:  3 temporizadores  4 puertos I/O.E 40 15 .  Bus 12C  Modulo Convertidor analógico a digital A/D. posee dos pines para ello.  Amplia memoria para datos y programa.B.  Comunicación serie y paralela: USART. este tipo de memoria se puede borrar electrónicamente (esto corresponde a la “F” en el modelo).

Timers Módulos CCP Comunicaciones Serie Comunicaciones paralelo Modulo Analógico a Digital de 10 bit 3 2 MSSP. USART PSP 8 canales de entrada 35 Instrucciones 14 bits Harvard Risc 2 Juego de instrucciones Longitud de la instrucción Arquitectura CPU Módulos Comparador/comparador/Pwm .

EL ENCAPSULADO. .

DIAGRAMA DE BLOQUES DE SU ARQUITECTURA INTERNA. .

Aquí muestro una tabla en la cual describo cada Pin o patilla del Microcontrolador. .

Reloj de programación serial PORTC es un puerto I/O bidireccional RCO puede ser la salida del RA0/AN0 RA1/AN1 RA2/AN2/ VrefRA3/AN3/Vref + RA4/T0CKI RA5/SS/AN4 2 3 4 5 6 7 I/O I/O I/O I/O I/O I/O TTL TTL TTL TTL ST TTL RBO/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 I/O I/O I/O I/O I/O I/O I/O I/O TTL/ST TTL TTL TTL TTL TTL TTL/ST TTL/ST RCO/T1OSO/T1 CKI 15 I/O ST . RB3: puede ser la entada de programación de bajo voltaje Pin de interrupción Pin de interrupción Pin de interrupción. Puede ser programado todo como entradas RB0 pude ser pin de interrupción externo.NOMBRE DEL PIN OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV PI N 13 14 1 TIPO TIPO DE BUFFER I O I/P ST/MOS ST DESCRIPCIÓN Entrada del oscilador de cristal / Entrada de señal de reloj externa Salida del oscilador de cristal Entrada del Master clear (Reset) o entrada de voltaje de programación o modo de control high voltaje test PORTA es un puerto I/O bidireccional RAO: puede ser salida analógica 0 RA1: puede ser salida analógica 1 RA2: puede ser salida analógica 2 o referencia negativa de voltaje RA3: puede ser salida analógica 3 o referencia positiva de voltaje RA4: puede ser entrada de reloj el timer0. PORTB es un puerto I/O bidireccional. RA5: puede ser salida analógica 4 o el esclavo seleccionado por el puerto serial síncrono.

RC7 puede ser el receptor asíncrono USART o datos síncronos PORTD es un puerto bidireccional paralelo RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 19 20 21 22 27 28 29 30 I/O I/O I/O I/O I/O I/O I/O I/O ST/TTL ST/TTL ST/TTL ST/TTL ST/TTL ST/TTL ST/TTL ST/TTL .RC1/T1OS1/CC P2 RC2/CCP1 16 17 18 I/O I/O I/O I/O I/O I/O I/O ST ST ST ST ST ST ST RC3/SCK/SCL 23 RC4/SD1/SDA RC5/SD0 RC6/Tx/CK RC7/RX/DT 24 25 26 oscilador timer1 o la entrada de reloj del timer1 RC1 puede ser la entrada del oscilador timer1 o salida PMW 2 RC2 puede ser una entrada de captura y comparación o salida PWN RC3 puede ser la entrada o salida serial de reloj síncrono para modos SPI e I2C RC4 puede ser la entrada de datos SPI y modo I2C RC5 puede ser la salida de datos SPI RC6 puede ser el transmisor asíncrono USART o el reloj síncrono.

32 - P P - - Referencia de tierra pines lógicos y de I/O para los Fuente positiva para los pines lógicos y de I/O No está conectado internamente Descripción de los puertos: Puerto A: • Puerto de e/s de 6 pines • RA0 è RA0 y AN0 • RA1 è RA1 y AN1 • RA2 è RA2. T1OSO (Timer1 salida oscilador) y T1CKI (Entrada de reloj del modulo Timer1).REO/RD/AN5 RE1/WR/AN RE2/CS/AN7 8 9 10 I/O I/O I/O ST/TTL ST/TTL ST/TTL PORTE es un puerto I/O bidireccional REO: puede ser control de lectura para el puerto esclavo paralelo o entrada analógica 5 RE1: puede ser escritura de control para el puerto paralelo esclavo o entrada analógica 6 RE2: puede ser el selector de control para el puerto paralelo esclavo o la entrada analógica 7. • RC1-RC2 è PWM/COMP/CAPT • RC1 è T1OSI (entrada osc timer1) • RC3-4 è IIC . Vss Vdd NC 12. 31 11. AN3 y Vref+ • RA4 è RA4 (Salida en colector abierto) y T0CKI(Entrada de reloj del modulo Timer0) • RA5 è RA5. AN4 y SS (Selección esclavo para el puerto serie síncrono) Puerto B: • Puerto e/s 8 pines • Resistencias pull-up programables • RB0 è Interrupción externa • RB4-7 èInterrupcion por cambio de flanco • RB5-RB7 y RB3 è programacion y debugger in circuit Puerto C: • Puerto e/s de 8 pines • RC0 è RC0. AN2 y Vref• RA3 è RA3.

 USART/SCI (Universal Syncheronus Asynchronous Receiver Transmitter) con 9 bit. Cuando su tensión es la de VDD el PIC funciona normalmente.).  Timer2: Temporizador-contador de 8 bits con preescaler y postescaler. PWM (Modulación de Anchura de Impulsos).• RC3-5 è SPI • RC6-7 è USART Puerto D: • Puerto e/s de 8 pines • Bus de datos en PPS (Puerto paralelo esclavo) • Puerto E: • Puerto de e/s de 3 pines • RE0 è RE0 y AN5 y Read de PPS • RE1 è RE1 y AN6 y Write de PPS • RE2 è RE2 y AN7 y CS de PPS Dispositivos periféricos:  Timer0: Temporizador-contador de 8 bits con preescaler de 8 bits  Timer1: Temporizador-contador de 16 bits con preescaler que puede incrementarse en modo sleep de forma externa por un cristal/clock. (MCLR / Vpp): Es una pata de múltiples aplicaciones. es la entrada de Reset (master clear) si está a nivel bajo y también es la habilitación de la tensión de programación cuando se está programando el dispositivo. Además de que nos puede servir por si el micro en algún momento no nos responde nunca esta demás aquí muestro el conexionado del botón que hará dicha función. por eso siempre la usaremos.  Conversor A/D de 1 0 bits... . Comparación. Esto hace que al encender el sistema el microcontrolador quede en estado de reset por un tiempo mientras se estabilizan todas las señales del circuito (lo cual es bastante bueno. EL RESET: EL PIC16F877 posee internamente un circuito temporizador conectado al pin de reset que funciona cuando se da alimentación al micro.  Puerta Paralela Esclava (PSP) solo en encapsulados con 40 pines. se puede entonces conectar el pin de MCLR a la fuente de alimentación.  Puerto Serie Síncrono Master (MSSP) con SPI e I2C (Master/Slave).  Dos módulos de Captura.

Internamente esta frecuencia es dividida por cuatro. que se conoce como oscilador o reloj. La tensión de alimentación de un PIC está comprendida entre 2V y 6V aunque se recomienda no sobrepasar los 5. Cristal para baja frecuencia y bajo consumo de potencia. LP. Este circuito. XT.5V (OSC1/CLKIN y OSC2/CLKOUT): Corresponden a los pines de la entrada externa de reloj y salida de oscilador a cristal respectivamente. El P1C16F877 puede utilizar cuatro tipos de reloj diferentes. Estos tipos son: RC. Por el momento yo he utilizado UNO 4 MHz. Cristal de alta velocidad. Oscilador con resistencia y condensador. El oscilador externo: Es un circuito externo que le indica al micro la velocidad a la que debe trabajar. es muy simple pero de vital importancia para el buen funcionamiento del sistema. HS. En el PIC16F877 se puede admitir un oscilador de cristal desde 4 a 20 MHz. lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz. Cristal.(VSS y VDD): Son respectivamente las patas de masa y alimentación. porque garantiza mayor precisión y un buen arranque del microcontrolador. Esto se hace a través de unos Fusibles llamados "fusibles de configuración" o fuses. El cristal debe ir acompañado de dos condensadores y el modo de conexión es el Siguiente: . por lo que cada instrucción se ejecuta en un microsegundo. En el momento de programar o "quemar" el microcontrolador se debe Especificar que tipo de oscilador se usa.

al apagar el pic esta memoria se borra. No se tratará aquí por ser una Memoria más difícil de emplear. . Según las recomendaciones de Microchip (R) puede tomar valores entre 5k y 100k. y C superior a 20pf. es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos Conservar aunque se apague el pic. podemos utilizar una Resistencia y un condensador.  Tres: la memoria EEPROM para datos. Al apagar el pic esta memoria no se borra.  Dos: la memoria RAM en cuyos registros se irán almacenando los Valores de las variables que nosotros queramos y cuando nosotros Queramos (por programa). esta memoria solo podrá ser leída por el pic (el pic va Leyendo las instrucciones del programa almacenado en esta memoria Y las va ejecutando). En primer lugar tenemos que distinguir claramente entre tres tipos de Memoria:  Una: la memoria EEPROM donde almacenaremos el programa que Haremos. Donde OSC2 Queda libre entregando una señal cuya frecuencia es la del OSC/4.Si se requiere de mucha precisión en el oscilador. Organización de la memoria. como se muestra en la figura.

"PC" y los "Stack Level" son empleado por el pic y nosotros no tenemos acceso . desde 0000h hasta la 1FFFh. "Reset Vector" es la primera dirección a la que se dirige el pic al encenderlo o al Resetearlo.La memoria EEPROM ò memoria de Programa. El espacio marcado como “User memory Space” es el espacio de memoria donde ira nuestro programa.

Tabla de selección de bancos.a ellos. CONFIGURACIÓN DE LOS PUERTOS DEL PIC Llegó el momento de ver como configurar los puertos del PIC. cambiar del banco de memoria entre otras cosas. Los registros importantes en la configuración de los puertos son: STATUS dirección 03h PORTA dirección 05h PORTB dirección 06h PORTC dirección 07h PORTD dirección 08h PORTE dirección 09h TRISA dirección 85h TRISB dirección 86h TRISC dirección 87h TRISD dirección 88h TRISE dirección 89h NOTA: Como verán solo incluyo los registros de los bancos 0 y 1 ya que para los dos restantes es similar su configuración y así no me tardo en explicarlos. Antes de acceder a un registro de esta memoria tenemos que preguntarnos en que banco estamos. Podemos observar en la imagen que esta memoria esta dividida en 4 Bancos (banco 0. BANCO 3. La selección del banco de memoria se hace por medio de los bits RP1 y RP0 del registro STATUS (6. BANCO 2. Para poder Hacerlo es necesario conocer la tabla de registros de la memoria de datos. consultar los resultados de las operaciones de la ALU (unidad aritmética lógica). 3). LA MEMORIA RAM La memoria RAM no solo se usa para almacenar nuestras variables. Por defecto el PIC tendrá todos los I/O Port's (es decir los . también se almacenan una serie de registros que configuran y controlan el PIC. está dividida en el BANCO 0. BANCO 1.1. 2.5). Estos registros se usan para controlar los pines del PIC. la cual como dijimos. generalmente se trabaja en el banco 0 cada banco contiene sus registros que sirven para la configuración y control de la memoria RAM.

. Al configurar los puertos deberás tener en cuenta que: Si asignas un CERO (0) a un pin. TRISD para los pines del PUERTO D. TRISE para los pines del PUERTO E. colocados como entrada de datos. como TRISA y TRISB Están en el BANCO 1 no queda otra.puertos RA. sirve para ver el dato de la dirección a la que apunta el registro FSR (dir. Si le asignas un UNO (1). STATUS es un Registro de 8 bits u 8 casillas. RD. Aquí se puede ver el valor en Tiempo real del Timer/contador. TRISC para los pines del PUERTO C. éste quedará como salida y.. RB. TRISB para los pines del PUERTO B. SI TRISB es igual a 00000001 todos sus pines serán salidas salvo RB0 que esta como entrada. RE). quedará como entrada. Esto se logra a través del Registro STATUS. 04h). y si queremos cambiarlos habrá que configurarlos. Como lo muestro con la figura que se vio en la sección de la LA MEMORIA RAM (Tabla de selección de bancos). deberemos cambiar de banco. Cuando el PIC arranca se encuentra en el BANCO 0. RC. . en el cual la Nº 5 ( RP0) y la Nº 6 (RP1) definen la posición del banco en donde nos encontramos. Por ejemplo si TRISE es igual a 110 todos sus pines serán entradas salvo RE0 que esta como salida. También se puede introducir un valor y alterar así el conteo. Esta asignación se hace en: TRISA para los pines del PUERTO A. INDF (direccionamiento indirecto): Dirección 00h. Este conteo puede ser interno (cuenta ciclos de Reloj) o externo (cuenta impulsos introducidos por RA4). TMR0 (Timer/contador): Dirección 01h. DESCRIPCION DE ALGUNOS DE LOS REGISTROS INTERNOS DEL BANCO 0.

Se puede usar para saber si un número es mayor que otro (restándolos. Dirección STATUS. Dirección STATUS. Dirección STATUS.6: Como el PIC16F84 solo tiene dos bancos de memoria el RP1 no se usa para nada. Dirección STATUS. CLRWDT* o SLEEP* o después de un power-up*. y si está a "1" nos encontramos en el banco 1.2 (bit 2): Se pone a "1" si la operación anterior ha sido cero. se pone a "1" después de ejecutar la instrucción CLRWDT* o después de un power-up*.3 (bit3): se pone a "0" después de ejecutar la instrucción SLEEP*.5). • DC (digit carry).1 (bit 1): lo mismo que el anterior pero esta vez nos avisa si el número no cabe en cuatro bits. si sumo dos números y el resultado no cabe en 8 bit el CARRY se pone a "1". Por ejemplo.5 y STATUS. Se usa para comprobar la igualdad entre dos números (restándolos. Una vez que este bit se pone a "1" no se baja • Solo (a"0"). si hay acarreo es que el segundo era mayor que el primero). • RP0 y RP1 (selección de banco). este contador de programa es el que señala al pic en que dirección (de EEPROM) tiene que leer la siguiente instrucción. • TO (Timer Up).PCL (Parte baja del contador de programa): Dirección 02h. • Z (zero). Este bit se pone a "1" cuando la operación anterior ha rebasado la capacidad de un byte. 0 (bit 0): bit de desbordamiento. Pasa lo mismo cuando resto dos números y el resultado es un número • Negativo. si el resultado es cero ambos números son iguales) • PD (Power . si está a "0" nos encontramos en el banco 0. Esto se utiliza mucho para consultar tablas.4 (bit4): se pone a "0" cuando se acaba el tiempo del WATCHDOG*. Dirección STATUS. Y pasa a "0" si la operación anterior no ha sido cero. Modificando este registro se modifica el contador de programa. Dirección STATUS. la selección del banco se hace mediante RP0 (STATUS. STATUS: Dirección 03h.Down bit). Se pone a "1" después de ejecutar las instrucciones. este es uno de los registros mas importantes Y el que más vas a utilizar. Hay que analizar el funcionamiento de Este registro bit a bit: • CARRY. hay que hacerlo por programa si queremos volverlo • a utilizar. .

• TMROIF (Flag de interrupción por desbordamiento de TMR0) Dirección INTCON. • INTE (Habilita la interrupción por RB0) Dirección INTCON. D y E.3: Si está a "1" las interrupciones por cambio de PORTB son posibles. PORTA (Puerto A). el contador de programa se compone de 13 bits. • RBIE (Habilita la interrupción por cambio de PORTB) Dirección INTCON. Dirección 05h: Con este registro se puede ver o modificar el estado de los pines del puerto A (RA0 – RA7). Una vez que está a "1" no pasa a "0" por si mismo: hay que ponerlo a cero por programa. 02h) y los 5 bits de mayor peso se pueden modificar con PCLATH. 00h): se carga la dirección del registro que queremos leer indirectamente en FSR y se lee el contenido de dicho registro en INDF. Dirección STATUS. Este bit es una copia de RB0. si está a "0" es que dicha interrupción no ha ocurrido.2: Cuando TMR0 se desborda este Flag avisa poniendose a "1". El que un pin esté a "1" quiere decir que su tensión es de 5V. RB5. FSR (Puntero). En este PIC no se usa para nada. C.4: Si lo ponemos a "1" la interrupción por RB0 es posible.0 (bit0): se pone a "1" cuando alguno de los pines RB4. Así sucede también para PORTB. si está a "0" su tensión es 0V. Dirección 0Bh: Se estudia bit a bit: • RBIF (Flag de interrupción por cambio de PORTB) Dirección INTCON. . Poner a "0" por programa. Dirección 0Ah: Modifica la parte alta del contador de programa (PC). los 8 bits de menor peso se pueden modificar con PCL (dir. INTCON (controla las interrupciones). • INTF (Flag de interrupción de RB0) Dirección INTCON. PCLATH. Dirección 04h. Si un bit de este registro está a "1" también lo estará el pin correspondiente a ese bit. o RB7 cambia su estado.• IRP. se usa para direccionamiento indirecto en combinación con el registro INDF (dir.1: Si está a "1" es que ha ocurrido una interrupción por RB0. RB6.7.

MAPA DE MEMORIA RAM Y REGISTROS.7: Este bit permite que cualquier interrupción de las anteriores sea posible.• TMROIE (Habilita la interrupción por desbordamiento de TMR0) Dirección INTCON. • GIE (Habilita las interrupciones globalmente) Dirección INTCON. Para usar alguna de las interrupciones anteriores hay que habilitarlas globalmente e individualmente.5: Si este bit esta a "1" la interrupción por desbordamiento de TMR0 es posible. • PEIE (Habilita la interrupción de periféricos Dirección INTCON. .6: Cuando este bit está a "1" habilita todas las interrupciones de periférico enmascarables.

SET DE INSTRUCCIONES PARA PIC16F87X: .

Para entender mejor cada instrucción se explica a continuación el significado de algunos parámetros: .

Por ejemplo.  CLRF f Borra el registro f (pone todos sus bits a cero). si es "0" el resultado se guarda en el acumulador (W) y si es "1" se guarda en el registro f al que afecta la instrucción.  ANDWF f. Resultado según d.d Calcula el complementario del registro f (los bits que estan a "0" los pone a "1" y viceversa.d Suma W y el registro f.d Incrementa f en uno (le suma uno).  MOVF f. Resultado según d. el Resultado lo guarda según d.  MOVWF f mueve el valor de W a f. Resultado según d.  DECFSZ f. el resultado lo guarda según d (si d=0 se guarda en W y si d=1 se guarda en f).d Decrementa f y se salta la siguiente instrucción si el resultado es cero.  CLRW . Resultado según d. si queremos copiar el valor del registro "REG1" al registro "REG2" (ya veremos como ponerles nombres a los registros) escribiremos: . Resultado según d.  COMF f.Borra el acumulador.d Mueve el contenido del registro f a W si d=0 (si d=1 lo vuelve a poner en el mismo registro).     f: Registro al que afecta la instrucción W: Acumulador (Working register) b: Número de bit (hay instrucciones que afectan a un solo bit) k: constante (un número) d: selección de destino del resultado de la instrucción.d Realiza la operación lógica OR entre W y f. puede ser "0" o "1".d Decrementa f en uno (le resta uno). Instrucciones orientadas a registros:  ADDWF f.  DECF f.d Realiza la operación AND lógica entre W y f.d Incrementa f y se salta la siguiente instrucción si el resultado es cero (cuando se desborda un registro vuelve al valor 00h).  INCFSZ f.  IORWF f.  INCF f. Resultado según d.

0 .W). mueve el valor de REG1 a W MOVWF REG2 .b Pone a "1" el bit b del registro f  BTFSC f.  SWAPF f.MOVF REG1. Resultado según d. Resultado según d. Resultado según d.d Realiza la operación lógica XOR (OR exclusiva) entre W y f. son comentarios  NOP .  SUBWF f.d Resta f y W (f . Resultado según d. Instrucciones orientadas a bits:  BCF f. mueve el valor de W a REG2 Lo que va después del.b Se salta la siguiente instrucción si el bit b del registro f es "1" Instrucciones orientadas a constantes y de control:  ADDLW k Le suma el valor k al acumulador (W).b Pone a "0" el bit b del registro f  BSF f. solo pierde el tiempo durante un ciclo.  RLF f. .d Rota el registro f hacia la izquierda a través del bit CARRY (todos los bits se mueven un lugar hacia la izquierda.Borra el registro Watchdog  GOTO k Salta a la dirección k de programa. el bit 7 de f pasa al CARRY y el bit CARRY pasa al bit 0 de f).d Lo mismo que RLF pero hacia la derecha.  ANDLW k Operación lógica AND entre W y el valor k (resultado en W).  CALL k Llamada a subrutina cuyo inicio esta en la dirección k  CLRWDT .  XORWF f.b Se salta la siguiente instrucción si el bit b del registro f es "0"  BTFSS f.No hace nada.d intercambia los 4 primeros bit de f por los otros cuatro.  RRF f.

 Snakewather. miembros www.  SLEEP . Por ejemplo. EL PIC16F877 por Marco Antonio Márquez Suárez Además agradezco la información prestada de los colegas:  Luis Rueda de San Salvador de Jujuy República Argentina. Danny Herrera de REPUBLICA BOLIVARIANA DE VENEZUELA de la UNIVERSIDAD NACIONAL EXPERIMENTAL DE LA FUERZA ARMADA DEPARTAMENTO DE ELECTRONICA.electron. Vallejo 6. Club Saber electrónica “microcontroladores PIC Programación y desarrollo” N0 24. miembros de la CUM México.forosdeelectronica.Instrucción para volver de la interrupción  RETLW k carga el valor k en W y vuelve de la interrupción  RETURN . 4. Dolphin. carga el acumulador con el valor 2Ah MOVWF REG1.  Br.vg 3.vuelve de una subrutina. Horacio D. . si queremos cargar el valor 2Ah en el registro "REG1" escribiremos: MOVLW 2AH.es. Ed Quark Ing. Picpower y unevox.com Dedicado: a mis padres y mi hermano que siempre están conmigo (gracias por todo su apoyo). Programación del PIC16F84. Horacio D. mueve el valor de W a "REG1"  RETFIE . IORLW k Operación lógica OR entre W y el valor k (resultado en W)  MOVLW k carga el acumulador con el valor k. BIBLIOGRAFIA: 1. Hoja de datos del PIC16F87xA de Microchip. 2. Ed Quark Ing. Aníbal Hernández y Br. por Carlos Díaz www. Club Saber electrónica “curso de pics para estudiantes y aficionados” N0 20. Vallejo 5.El pic pasa a modo de Standby.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->