You are on page 1of 94

MICROCONTROLADORES PIC

MANUAL DE MICROCONTROLADORES PIC

CURSO DE INSTRUCTORES

TCNICOS INDUSTRIALES

1 /112

MICROCONTROLADORES PIC

CONTENIDO SINTETICO
Arquitectura interna de los PIC. Manejo del ensamblador MPLAB .- Programacin de PIC. Manejo de temporizadores TMR0. Control de interfaces externos por medio de los puertos de entrada y salida Interrupciones, reset y recursos auxiliares. Practica de Laboratorio Practica de Taller - aplicaciones.

TCNICOS INDUSTRIALES

2 /112

MICROCONTROLADORES PIC

LOS MICROCONTROLADORES
INTRODUCCION A LOS MICROCONTROLADORES. Un microcontrolador es un Computador completo, pero de limitadas prestaciones, que est contenido en un solo chip y se destina a gobernar una tarea especfica. Los PIC de la familia 16Fxx son C de 8 bit. Los microcontroladores estn conquistando el mundo. Estn presentes en nuestro trabajo, en nuestra casa y en nuestra vida, en general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados de los computadores, en los telfonos, en los hornos microondas y los televisores de nuestro hogar. Pero la invasin acaba de comenzar y el nacimiento del siglo XXI ser testigo de la conquista masiva de estos diminutos computadores, que gobernarn la mayor parte de los aparatos que fabricaremos y usamos los humanos Arquitectura Harvard La arquitectura tradicional: La arquitectura tradicional de computadoras y microprocesadores se basa en el esquema propuesto por John Von Neumann, en el cual la unidad central de proceso, o CPU, esta conectada a una memoria nica que contiene las instrucciones del programa y los datos (figura 1.1.1). El tamao de la unidad de datos o instrucciones esta fijado por el ancho del bus de la memoria. Es decir que un microprocesador de 8 bits, que tiene adems un bus de 8 bits que lo conecta con la memoria, deber manejar datos e instrucciones de una o ms unidades de 8 bits (bytes) de longitud. Cuando deba acceder a una instruccin o dato de ms de un byte de longitud, deber realizar ms de un acceso a la memoria. Por otro lado este bus nico limita la velocidad de operacin del microprocesador, ya que no se puede buscar de memoria una nueva instruccin, antes de que finalicen las transferencias de datos que pudieran resultar de la instruccin anterior. Es decir que las dos principales limitaciones de esta arquitectura tradicional son : a) que la longitud de las instrucciones esta limitada por la unidad de longitud de los datos, por lo tanto el microprocesador debe hacer varios accesos a memoria para buscar instrucciones complejas, b) que la velocidad de operacin (o ancho de banda de operacin) esta limitada por el efecto de cuello de botella que significa un bus nico para datos e instrucciones que impide superponer ambos tiempos de acceso. La arquitectura von Neumann permite el diseo de programas con cdigo automodificable, prctica bastante usada en las antiguas computadoras que solo tenan acumulador y pocos modos de direccionamiento, pero innecesaria, en las computadoras modernas.

FIG. Arquitectura Von Newmann

TCNICOS INDUSTRIALES

3 /112

MICROCONTROLADORES PIC

Arquitectura interna
Los microcontroladores PIC utilizan la arquitectura Harvard, la cual separa la memoria de programa de la memoria de datos. Esto hace que el dispositivo tenga un bus de datos y un bus de memoria de programa, hecho que permite acceder a ambos simultneamente. En el caso de la memoria de programa es interna, ya que se encuentra en forma de EPROM o FLASH dentro del propio PIC. Otra caracterstica reseable es que las instrucciones en los PIC son de 14 bits y no de 8, permitiendo instrucciones de palabra nica con operacin y operando en la misma palabra. Esta estructura, acompaada de un pipeline, permite que las instrucciones se ejecuten en un slo ciclo de reloj, salvo en el caso de saltos/rupturas de programa. Lo que se hace internamente es que mientras se ejecuta la instruccin actual se carga la siguiente instruccin en el pipeline, con lo que se alcanza una alta velocidad de ejecucin. En cuanto a los registros los PIC pueden direccionarse tanto directa como indirectamente. Todos los registros de funcin especial, incluyendo el contador de programa, estn accesibles en la memoria de datos y pueden ser operados de cualquier forma y empleando cualquier modo de direccionamiento (ortogonalizacin).Igualmente, todos los elementos del sistema (temporizadores, puertos de e/s, etc) estn implementados como registros.

La arquitectura Harvard y sus ventajas: La arquitectura conocida como Harvard, consiste simplemente en un esquema en el que el CPU esta conectado a dos memorias por intermedio de dos buses separados. Una de las memorias contiene solamente las instrucciones del programa, y es llamada Memoria de Programa. La otra memoria solo almacena los datos y es llamada Memoria de Datos (figura 1.1.2). Ambos buses son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instruccin Set Computer), el set de instrucciones y el bus de la memoria de programa pueden disearse de manera tal que todas las instrucciones tengan una sola posicin de memoria de programa de longitud. Adems, como los buses son independientes, el CPU puede estar accediendo a los datos para completar la ejecucin de una instruccin, y al mismo tiempo estar leyendo la prxima instruccin a ejecutar. Se puede observar claramente que las principales ventajas de esta arquitectura son: a) que el tamao de las instrucciones no esta relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instruccin ocupe una sola posicin de memoria de programa, logrando as mayor velocidad y menor longitud de programa, b) que el tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad de operacin. Una pequea desventaja de los procesadores con arquitectura Harvard, es que deben poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran fsicamente en la memoria de programa (por ejemplo en la EPROM de un microprocesador).

Arquitectura Harvard
TCNICOS INDUSTRIALES 4 /112

MICROCONTROLADORES PIC

Diagrama de la estructura interna

Diagrama de bloques de los microcontroladores PIC16F628A

Mapas de memoria Memoria Interna (RAM) El pic16f628a es un microcontrolador de 8 bit, posee una arquitectura RISC avanzada as como un juego reducido de 35 instrucciones. Este microcontrolador es el remplazo del obsoleto pic16f84a, los pines del pic16f628a son compatibles con el pic16f84a, as se podran actualizar proyectos que hemos utilizado con el pic16f84a.

TCNICOS INDUSTRIALES

5 /112

MICROCONTROLADORES PIC

PIC16F628A

Caractersticas del PIC16F628A:


Datos relevantes: Caracterstica Memoria de programa Memoria SRAM Memoria EEPROM Pines de E/S Entradas analgicas (ADC) Salidas PWM SPI I2C USART Temporizadores de 8 Bits Temporizadores de 16 Bits Comparadores Oscilador Nmero de pines Encapsulado Propiedad 2 KBytes) 224 Bytes 128 Bytes 16 No 2 No No Si 2 1 2 Frecuencia mxima: 20 MHz Oscilador interno de 4 MHz. 18 PDIP, SOIC, SSOP, QFN

TCNICOS INDUSTRIALES

6 /112

MICROCONTROLADORES PIC

OTRAS CARACTERSTICAS DEL PIC 16F628A CPU De alto rendimiento RISC: velocidades de operacin de DC - 20 MHz Capacidad de interrupcin pila de 8 niveles Modos de direccionamiento directos, indirectos y relativo 35 simples instrucciones de palabra: - Todas las instrucciones de ciclo nico, excepto las de salto Caractersticas Especial microcontrolador: opciones de oscilador externo e interno: - Precisin de fbrica del oscilador interno de 4 MHz calibrada a 1% - oscilador de 48 kHz De bajo consumo interno Modo de ahorro de energa en modo sueo resistencias programable pul-ups del PORTB Multiplexado del pin reset / Entrada-pin Temporizador Watchdog con oscilador independiente para un funcionamiento fiable Baja tensin de programacin In-Circuit Serial (a travs de dos pines) Proteccin de cdigo programable

Brown-out reset Power-on Reset Power-up Timer y el oscilador de puesta en marcha del temporizador Amplio rango de funcionamiento de tensin (2.0-5.5V) Industrial y amplia gama de temperaturas extendidas Alta durabilidad de la memoria Flash /EEPROM: - 100.000 ciclos de escritura Flash - 1.000.000 ciclos de escritura EEPROM - 40 aos de retencin de datos De baja potencia Caractersticas: Corriente en espera: - 100 nA@2.0V, tpico Corriente de funcionamiento: - 12A @ 32 kHz, 2,0 V, tpica - 120A @ 1 MHz, 2,0 V, tpica Temporizador Watchdog actual: - 1A@2.0V, tpico Timer1 oscilador actual: - 1.2A @ 32 kHz, 2,0 V, tpica Doble velocidad del oscilador interno: - Tiempo de ejecucin seleccionable entre 4 MHz y de 48 kHz - 4s despertar de un sueo, 3.0V, tpico En la siguiente figura se muestran los microcontroladores que componen esta serie

TCNICOS INDUSTRIALES

7 /112

MICROCONTROLADORES PIC

TIPOS DE MEMORIA DEL PIC16F628A Memoria flash: esta memoria es de tipo no voltil en esta memoria ira nuestro programa que realicemos. El pic16f628a tiene una capacidad de 2048 words seto se podra traducir a 2048 lneas de cdigo que podemos escribir en lenguaje assembler para este microcontrolador. Memoria RAM: esta memoria sirve para guardar datos y variables, esta memoria es de tipo voltil, es decir perder la informacin cuando desaparezca la alimentacin. La memoria ram que posee el microcontrolador pic16f628a es de 224 bytes Memoria eeprom: en una memoria de tipo no voltil de poca capacidad sirve para guardar datos, aun cuando deje de recibir alimentacin la informacin no se perder. La memoria eeprom que posee el pic16f628a es de 128 bytes

Tipos de osciladores El PIC16F627A/628A/648A puede ser operado en ocho diferentes modos de oscilador. RC, Oscilador con resistencia y condensador (2 modos) XT, Cristal de cuarzo. HS, Cristal de alta velocidad LP, Cristal de baja frecuencia y bajo consumo de potencia. INTOSC, oscilador interno de precisin de 4mhz (2 modos) EC, seal externa de entrada de reloj En la siguiente figura el diagrama de bloques del oscilador

TCNICOS INDUSTRIALES

8 /112

MICROCONTROLADORES PIC

En la siguiente tabla se muestra los valores de los cristales y sus respectivos condensadores de filtro para el oscilador externo

Al momento de programar un micro se debe especificar que tipo de oscilador se usa. Internamente la frecuencia del oscilador es dividida por 4, as que si temeos un oscilador de 4 MHz, la frecuencia de trabajo es de 1 MHz, por lo que cada instruccin se ejecuta cada 1 us.

Mapa de memoria del pic16f628a Como vemos en la siguiente figura el mapa de memoria se encuentra dividida en 4 bancos en estos bancos se encuentra los registros de control as como tambin la memoria RAM.

TCNICOS INDUSTRIALES

9 /112

MICROCONTROLADORES PIC

Memoria de Programa
La memoria de programa est organizada en palabras de 14 bits y es del tipo FLASH. Esta memoria es de slo lectura y nicamente se ejecutar el cdigo contenido en ella. El vector de reset se encuentra en la posicin 0000h y el de interrupciones en la 0004h, por lo que la memoria de usuario se extiende desde la direccin 0005h.

REGISTROS DE FUNCIONES ESPECIALES.-CAMINO DE LOS DATOS Y REGISTRO W La figura representa un diagrama simplificado de la arquitectura interna del camino de los datos en el CPU de los microcontroladores PIC. Este diagrama puede no representar con exactitud el circuito interno de estos microcontroladores, pero es exacto y claro desde la ptica del programador. La figura 1.4.1 representa el mismo diagrama para un microprocesador ficticio de
TCNICOS INDUSTRIALES 10 /112

MICROCONTROLADORES PIC

arquitectura tradicional. Se puede observar que la principal diferencia entre ambos radica en la ubicacin del registro de trabajo, que para los PICs se denomina W (Working Register), y para los tradicionales es el Acumulador (A).

En los microcontroladores tradicionales todas las operaciones se realizan sobre el acumulador. La salida del acumulador esta conectada a una de las entradas de la Unidad Aritmtica y Lgica (ALU), y por lo tanto ste es siempre uno de los dos operandos de cualquier instruccin. Por convencin, las instrucciones de simple operando (borrar, incrementar, decrementar, complementar), actan sobre el acumulador. La salida de la ALU va solamente a la entrada del acumulador, por lo tanto el resultado de cualquier operacin siempre quedara en este registro. Para operar sobre un dato de memoria, luego realizar la operacin siempre hay que mover el acumulador a la memoria con una instruccin adicional. En los microcontroladores PIC, la salida de la ALU va al registro W y tambin a la memoria de datos, por lo tanto el resultado puede guardarse en cualquiera de los dos destinos. En las instrucciones de doble operando, uno de los dos datos siempre debe estar en el registro W, como ocurra en el modelo tradicional con el acumulador. En las instrucciones de simple operando el dato en este caso se toma de la memoria (tambin por convencin). La gran ventaja de esta arquitectura es que permite un gran ahorro de instrucciones ya que el resultado de cualquier instruccin que opere con la memoria, ya sea de simple o doble operando, puede dejarse en la misma posicin de memoria o en el registro W, segn se seleccione con un bit de la misma instruccin. Las operaciones con constantes provenientes de la memoria de programa (literales) se realizan solo sobre el registro W. En la memoria de datos de los PICs se encuentran ubicados casi todos los registros de control del microprocesador y sus perifricos autocontenidos, y tambin las posiciones de memoria de usos generales. En el caso de los 16C5X, algunos registros especiales de solo escritura (TRIS y OPTION) no estn accesibles dentro del bloque de memoria de datos, sino que solo se pueden cargar desde el registro W por medio de instrucciones especiales.

PIC 16F628A

TCNICOS INDUSTRIALES

11 /112

MICROCONTROLADORES PIC

N Nombre pin 16 15 OSC1/CLKIN

Tipo Tipo de (E/S/A) buffer E ST/CMOS (3) -

Descripcin entrada del cristal oscilador / entrada externa de reloj Salida del cristal oscilador. En el modo de oscilacin por cristal se conecta al cristal o resonador. En modo RC OSC2 proporciona CLKOUT (salida de reloj), que posee 1/4 de la frecuencia de OSC1, y representa el ciclo de instruccin. Entrada de reset / entrada de voltaje de programacin. Este pin es un reset activo a nivel lgico bajo del dispositivo. PORTA es un puerto de E/S bidireccional Puede ser seleccionado tambin para ser la entrada de reloj al contador/temporizador TMR0. La salida es de colector abierto. PORTB es un puerto de E/S bidireccional que puede ser programado para levantar internamente todas las entradas. RB0/INT puede ser seleccionado como un pin de interrupcin externa RB4 a RB7 son pines de interrupcin por cambio de estado. RB6 es la entrada de reloj de programacin y RB7 la entrada de programacin serie. Referencia de tierra (masa) para todos los pines lgicos de E/S. Alimentacin positiva para todos los pines lgicos de E/S.

OSC2/CLKOUT S

4 17 18 1 2 3 6 7 8 9 10 11 12 13

MCLR' RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

E/A E/S E/S E/S E/S E/S E/S E/S E/S E/S E/S E/S E/S E/S

ST TTL TTL TTL TTL ST TTL/ST (1) TTL TTL TTL TTL TTL TTL/ST (2) TTL/ST (2)

5 14

Vss Vdd

A A

Leyenda y notas: E=entrada S=salida E/S=entrada/salida TTL=entrada TTL ST=entrada Schmitt

A=alimentacin

(1) (2) (3)

Este buffer es una entrada Schmitt cuando se configura como interrupcin externa Este buffer es una entrada Schmitt cuando se emplea en el modo de programacin serie Este buffer es una entrada Schmitt cuando se configura en el modo de oscilacin RC y como entrada CMOS

TCNICOS INDUSTRIALES

12 /112

MICROCONTROLADORES PIC

MODULO DE ENTRADAS

TEMPORIZANDO El uso de la temporizacin se usa en casi todas las aplicaciones, semforos, alarmas, acceso con clave, ascensores, comunicacin, etc Recordando nuestro programa de encendido de Led o foquito, mencione que este se apagaba por 2 microsegundos pero que era imposible detectarlo, pues bien en las siguientes sesiones vamos a temporizar para que el tiempo de apagado sea 1 segundo y de esta manera apreciar la temporizacin Al igual que teniamos dos registros TRISA y TRISB que configuraban los pines de los puertos como entradas o salidas. En la temporizacin tenemos el registro OPTION en el banco 1, que me configurar el registro TMR0 del banco 0, ya sea como temporizador o contador

OPTION RPBU# INTEDG TOCS TOSE PSA PS2 PS1 PS0

La medida de tiempo en un micro, est sujeta a tres temas:


Oscilador externo Registro TMR0


13 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

Divisor de Fecuencia El oscilador externo creo que ya saben pero hago recordar, es el que me define la velocidad del ciclo de instruccin, y cuando usamos un oscilador de cristal de cuarzo (XT) de 4Mhz, tenemos 1 microsegundo de ciclo de instruccin El registro TMR0 esta implementado fsicamente en el pin RA4 del PORTA, este registro de 8 bits se configura como temporizador para determinar intervalos concretos de tiempo o como contador de impulsos externos . EL divisor de Frecuencia, como su nombre lo dice divide la frecuencia de reloj, que es lo mismo decir que aumenta la duracin de los impulsos de reloj. La combinacin binaria de los bits PS0, PS1 y PS2, del registro OPTION me definen el rango del divisor de frecuencias.

PS2 PS0 000 001 010 011 100 101 110 111

Divisin TMR0 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256

Divisin WDT 1:1 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128

Frmula para calcular el tiempo T = CI x TMR0 x DF CI = Ciclo de instruccin TMR0 = Valor cargado en este registro. DF = Rango escogido en el divisor de frecuencia El valor cargado en el TMR0, es aquel valor que le falta a este registro para que llegue a 255 (valor mximo para un registro de 8 bits) EJEMPLO: Si por software cargo un valor de 125 en el registro TMR0, entonces el valor que interviene en la frmula es 130, valor que falta para que se desborde (llegue a 255) el registro TMR0.

TCNICOS INDUSTRIALES

14 /112

MICROCONTROLADORES PIC

Definicin de bits del registro OPTION


Ya hemos defnido los 3 primeros bits PS0, PS1 y PS2 ahora seguimos con el resto: PSA Bit de asignamiento del predivisor de frecuencia: 0 = Predivisor asignado a TMR0 1 = Predivisor asigando a Watchdog (WDT) TOSE Bit de seleccin de flanco activo cuando TMR0 es configurado como Contador 0 = Contaje se incrementa cada flanco ascendente 1 = Contaje se incrementa cada flanco descendente TOCS Bit de selecin de la fuente del clock: 0 = Configura TMR0 como Temporizador 1 = Configura TMR0 como Contador INTEDG Bit de selecin de flanco activo de interrupcin externa: 0 = flanco descendente 1 = flanco ascendente RPBU# Resistencias pull - up de la puerta B: 0 = Activadas 1 = Desactivadas Si ponemos al mximo los valores de la frmula, rango de divisor de 256, TMR0 con 255 y un oscilador de 4 Mhz, obtenemos un valor mximo de temporizacin de 65.28 milisegundos, el cual es un valor evidentemente insuficiente si quiero que mi pulso dure varios segundos o minutos, tiempo necesario para la mayora de aplicaciones, como pueden ser, relojes digitales, semforos, etc. la solucin sencilla es crear un archivo en la RAM y usarlo como archivo auxiliar para lograr la temporizacin deseada. Tenemos dos alternativas para alargar tiempos, crear bucles anidados de retardo, en este caso no se usa el registro TMR0, y la otra alternativa es usando este registro. La ventaja de usar este registro es que se pueden generar condiciones de interrupcin, habilitano el tipo de interrupcin por desbordamiento de registro TMR0. La habilitacin de este tipo de interrupcin, se hace mediante el registro INTCON y sus respectivos bits. Interrupciones Los 16CXX agregan la posibilidad de contar con sistema de interrupciones. Este sistema consiste en un mecanismo por el cual un evento interno o externo, asincrnico respecto del programa, puede interrumpir la ejecucin de ste produciendo automticamente un salto a una

subrutina de atencin, de manera que pueda atender inmediatamente el evento, y retomar luego la ejecucin del programa exactamente en donde estaba al momento de ser interrumpido. Este mecanismo es muy til por ejemplo para el manejo de timers o rutinas que deben repetirse peridicamente (refresh de display, antirebote de teclado, etc.), deteccin de pulsos externos, recepcin de datos, etc. Existen de tres a doce eventos que pueden generar interrupciones en los PIC16FXX existentes hasta el momento, pero nada impide que puedan agregarse ms en versiones futuras. Funcionamiento En los 16FXX las interrupciones se comportan casi exactamente igual que las subrutinas. Desde el punto de vista del control del programa, al producirse una interrupcin se produce el mismo efecto que ocurrira si el programa tuviese un CALL 0004h en el punto en que se produjo la interrupcin. En uno de los registros de control del sistema de interrupciones existe un bit de
TCNICOS INDUSTRIALES 15 /112

MICROCONTROLADORES PIC

habilitacin general de interrupciones GIE, que debe ser programado en 1 para que las interrupciones puedan actuar. Al producirse una interrupcin, este bit se borra automticamente para evitar nuevas interrupciones. La instruccin RETFIE que se utiliza al final de la rutina de interrupcin, es idntica a un retorno de subrutina, salvo que adems coloca en uno automticamente el bit GIE volviendo a habilitar las interrupciones. Dentro de la rutina de interrupcin, el programa deber probar el estado de los flags de interrupcin de cada una de las fuentes habilitadas, para detectar cual fue la que causo la interrupcin y as decidir que accin tomar.

Lgica de interrupciones para los controladores PIC16F8X

MPLAB
El MPLAB, es un entorno integral de desarrollo, provisto por la misma firma Microchip, en el cual se puede desarrollar un proyecto en asembler y su simulacin. Incorporando herramientas de software y/o hardware permite que en el mismo entorno se puedan emular un microcontrolador, programar con lenguaje C y/o grabarlo al PIC con el proyecto que se realiz. EL MPLAB le permite a Usted escribir, depurar y optimizar los programas (firmware) de sus diseos con PIC 16/17. EL MPLAB incluye un editor de texto, un simulador y un organizador de proyectos. Adems, el MPLAB soporta el emulador PICMASTER y a otras herramientas de desarrollo de Microchip como el PICSTART - Plus.

De que forma le ayuda el MPLAB ? Con el MPLAB Usted puede:


Depurar sus programas fuente. Detectar errores automticamente en sus programas fuente para editarlos. Depurar los programas utilizando puntos de corte (breakpoints) mediante valores de los registros internos. Observar el flujo del programa con el simulador MPLAB -SIM, seguirlo en tiempo real utilizando el emulador PICMASTER. Realizar medidas de tiempo utilizando un cronmetro.
16 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

Mirar variables en las ventanas de observacin. Encontrar respuestas rpidas a sus preguntas, utilizando la Ayuda en lnea del MPLAB.

LAS HERRAMIENTAS DEL MPLAB El Organizador de Proyectos (Proyect Manager). El organizador de proyectos (Proyect Manager) es parte fundamental de MPLAB. Sin crear un proyecto Usted no puede realizar depuracin simblica. Con el Organizador de Proyectos (Proyect manager) puede utilizar las siguientes operaciones:

Crear un proyecto. Agregar un archivo de programa fuente de proyecto. Ensamblar o compilar programas fuente. Editar programas fuente. Reconstruir todos los archivos fuente, o compilar un solo archivo. Depurar su programa fuente.

Software ensamblador: El software ensamblador que presenta Microchip viene en dos presentaciones, una, para entorno DOS llamado MPASM.EXE y la otra, para entorno Windows llamado MPASMWIN.EXE Las dos presentaciones soportan a TODOS los microcontroladores de la familia PIC de Microchip. El conjunto de instrucciones de los microcontroladores PIC es en esencia la base del lenguaje ensamblador soportado por este software. Directivas de uso frecuente: Son instrucciones para el compilador. #DEFINE ej. #define <nombre> [<valor a remplazar>] explicacin: declara una cadena de texto como substituto de otra

END ej. end explicacin: indica fin de programa EQU ej. status equ 05 explicacin: define una constante de ensamble INCLUDE ej. include <PIC16F84.h> explicacin: incluye en el programa un archivo con cdigo fuente

TCNICOS INDUSTRIALES

17 /112

MICROCONTROLADORES PIC

ORG ej. org 0x100 explicacin: ensambla a partir de la direccin especificada

USO DEL MPLAB


GENERACIN DE UN PROYECTO Se describe a continuacin la cracin de un proyecto, hasta grabarlo al microcontrolador mediante un grabador propic o cualquier otro. Paso 1 Una vez abierto el PMLAB, se abre new file Paso 2 Una vez abierto new file, se abre save as y se guarda el archivo. Para esto se crea una carpeta en C , y se guarda con el nombre de la tarea en este caso led.asm

Paso 3 En la ventana Project se ingresa en project Wizard

TCNICOS INDUSTRIALES

18 /112

MICROCONTROLADORES PIC

Paso 4 Al presionar el boton OK de la pantalla Project Wizard se accedea al nuevo proyecto, entonces pulsar siguiente

Paso 5 Una vez mas se pulsa en siguiente y aparece un menu de tipos de pic, entonces elegir el pic que se requiera trabajar, en este caso el pic 16f84A. Otra vez sepulsa siguiente Paso 6 Una vez que ingresamos a Step Two, tener en cuenta que Active Toolsuite: debe estar en Microchip MPASM toolsuite, asi mismo Toolsuite Contents.

TCNICOS INDUSTRIALES

19 /112

MICROCONTROLADORES PIC

Paso 7 En el siguiente paso, colocar el nombre de la tarea, en este caso led. Pulsar Browse.

Paso 8 Pulsar Select

TCNICOS INDUSTRIALES

20 /112

MICROCONTROLADORES PIC

Paso 9 Pulsar siguiente, pulsar otra vez siguiente Seleccionar led.asm y pulsar Add. Una vez mas pulsar siguiente.- Pulsar finalizar

ESTRUCTURA DE UN PROGRAMA TIPICO Antes de intentar programar debes tener claro que todo programa desarrollado en PIC consta bsicamente de esta estructura:

Definir el Microcontrolador a usar. En esta directiva se especifica el tipo de microcontrolador que sera utilizado; esto se logra utilizando LIST=PIC16F84. Establecer las constantes a utilizar. Las constantes son tiles para referenciar direcciones de memoria, posiciones de los bits y valores que no cambiarn a lo largo de todo el programa. Esto se logra utilizando la directiva "EQU". Si se desea por ejemplo establecer un valor a una constante seria CONST EQU 1, lo cual le asigna el valor de "1" al registro CONST. Reservar los espacios en memoria de las variables. Se utiliza para reservar espacios en memorias para las variables utilizadas en el programa. Se logra utilizando la directiva denominada "RES". Muy til cuando un registro cambia su valor durante la ejecucion del programa. Configurar los puertos. Es necesario establecer si los Bits de cada puerto sern utilizados como entrada o como salida. Esto se logra utilizando los registros especiales TRISA y TRISB. Desarrollar el Programa. Es el verdadero corazn del trabajo que se realiza, puesto que ac se desarrollan las rutinas que seran ejecutadas por el microcontrolador.

EL REGISTRO STATUS:
TCNICOS INDUSTRIALES 21 /112

MICROCONTROLADORES PIC

Contiene el estado aritmtico de la ALU, el estado del Reset y los bits para seleccin de banco.
REGISTRO STATUS

IRP Estado de sus Bit's.


BIT's LE

RP1

RP0

TO

PD

DC

Reset

Descripcin

Bit 7-6: IRP-RP1 Bit 5: RP0 Bank Select Bit 4: TO Time-Out Bit 3: PD Power Down Bit 2: Z Zero Bit 1: DC Digit Carry Bit 0: C Carry

L/E L/E L L L/E L/E L/E

0 0 1 1 x x x

No implementado: 0 1 0 1 0 1 0 1 0 1 0 1 0 = = = = = = = = = = = = Banco 1 Banco 0 Recin encendido, tras CLRWDT, o SLEEP. Ocurri un time-out en el WDT Luego de un Rset, de una instruccin CLRWDT Tras ejecutar una instruccin SLEEP El resultado de una operacin lgica o aritmtica es 0. El resultado es distinto de 0 Acarreo en la suma y no en la resta (4 bit) Acarreo en la resta y no en la suma (4 bit) Acarreo en la suma y no en la resta (8 bit) Acarreo en la resta y no en la suma (8 bit)

Uno de los registros mas importantes es el registro STATUS, que tiene una longitud de 8 Bits. Cada uno de los ocho Bits esta destinado para una funcin especifica. Por ahora explicaremos bsicamente solo algunos de los bits pertenecientes al registro STATUS. Si usted observa la siguiente imagen, podr notar claramente que el Bit No. "0" es utilizado para almacenar la informacin del CARRY, el Bit No.1 es utilizado para la bandera de acarreo de dgito "DC", el Bit No. 2 es utilizado para la bandera de estado cero "Z"; estas son las banderas que hemos explicado anteriormente. El Bit No. 7, Bit No. 6, Bit No. 4 y el Bit No. 3 seran explicados posteriormente ya que haremos incapie al Bit No. 5 del registro STATUS denominado RP0. Ya sabemos que dependiendo de alguna operacin como la suma, las banderas "C" , "DC" y "Z" son afectadas automticamente segn sea el caso; pero el Bit numero 5 del registro STATUS lo manipularemos a nuestra voluntad con la finalidad de decirle al microcontrolador si queremos trabajar en el banco numero "0" o en el banco numero "1". La operacin normal del microcontrolador se efecta en el banco "0"; pero cuando nos cambiamos del banco "0" hacia el banco "1" es para efectuar ciertos cambios que definen como estarn configurados los puertos del microcontrolador. En la siguiente imagen se podr observar el registro STATUS y la asignacin que tienen cada uno de sus ocho Bits. Ahora volvemos a retomar la Figura 4-2 del mapa de registro del PIC16F84 y observe que existen algunas diferencias entre el banco "0" y el banco "1"; por ejemplo tenemos el los registros denominados TRISA, TRISB, EECON1, EECON2, OPTION. Por ahora lo que queremos que usted pueda observar estas diferencias entre ambos bancos, entonces si usted necesita accesar al registro TRISA que solamente se encuentra en el banco "1", obligatoriamente tendra que cambiarse del banco 0 al banco 1 por medio de las instrucciones del microcontrolador. Ahora, usted deber saber que debemos accesar al banco 1 solamente para accesar a los registros que no se encuentran en el banco 0. Una vez accesados
TCNICOS INDUSTRIALES 22 /112

MICROCONTROLADORES PIC

esos registros y a su vez modificados, tendremos que regresar inmediatamente al banco 0 para que el microcontrolador siga con su tarea asignada en la memoria del programa.

EDITOR DE TEXTOS: LUGAR DONDE ESCRIBIMOS NUESTROS PROGRAMAS Los programas para el microcontrolador debern escribirse en el editor de textos
del MS-DOS o tambin pueden escribirse en el BLOCK DE NOTAS de Windows indiferentemente. Usted podra localizar este block de notas en INICIO > Accesorios > Block de Notas.

Dentro del editor de TEXTOS, el programa debera excribise en cuatro


colunnas las cuales cada una de ellas estar destinada para una tarea especfica ya que cada columna cunple una tarea especfica. Cada una de estas colunnas tienen siguientes nombres asignados:
No. De la Columna Columna 1 Columna 2 Columna 3 Columna 4 Nombre de la Columna Etiqueta Operacion Operandos Comentario.

TCNICOS INDUSTRIALES

23 /112

MICROCONTROLADORES PIC

Antes de todo queremos establecer o definir la palabra colunma dentro del


editor de textos ya que esta tiene dos significados diferentes y puede prestarse a

confuciones. Primero, la palabra columna puede ser interpretada como la posicin del caracter; por ejemplo si el cursor de su pantalla se encuentra totalmente a la izquierda, se encuentra en la primera columna del editor de textos. Si usted presiona la barra espaciadora de su teclado, el cursor se desplaza un caracter hacia la derecha y automaticamente se encontrar en la segunda columna. NO SE CONFUNDA, ya que esta columna no ser la Columna de Operacin que se seala en la tabla anterior. Para entenderlo mejor, usted podr definir su primera columna en la posicin del caracter No. 1, la segunda columna podr ser 10 posiciones a la derecha y no presisamente en la posicin de caracter No. 2, la tercera columna podr ser 10 posiciones mas a la derecha y asi sucesivamente. La idea es organizar cuatro columnas independientes con una separacin mnima de un caracter entre una columna y la otra.

Los programadores utilizan la tecla de tabulacion para desplazarse a travs de


las cuatro culumnas. Lo mas prctico es utilizar el tabulador para establecer las posiciones de las columnas. Si usted se ubica totalmente a la derecha, se encontrar en la columna No. 1 del editor la cual representa la columna de las etiquetas, usted podra presionar la tecla de tabulador dos veces y desde ah definir la columna de
TCNICOS INDUSTRIALES 24 /112

MICROCONTROLADORES PIC

operacin. El ensamblador de programa la cual estar encargado de interpretar los comandos escritos en el block de notas, sabra reconocer facilmente la columnas que usted defini.

Cada una de las columnas tienen su reglas generales, a continuacin


mencionamos y explicaremos cada una de ellas. LAS ETIQUETAS: Las etiquetas tienen algunas reglas obligatorias que deberan cumplirse:

Debe comenzar exactamente en la columna 1 del editor de textos. La etiqueta no podr tener mas de 31 caracteres. La etiqueta podr estar conformada por caracteres alfa numricos.

OPERACION: En esta columna se escriben cualquiera de las 35 instrucciones del microcontrolador PIC16F84. OPERANDOS: Los operandos son los registros en donde se realizan las operaciones y los registros son los espacios de memoria donde se almacenarn los resultados de las operaciones. Este registro puede ser una memoria de datos o un registro constante que hemos denominado en el CAPITULO II como un literal. COMENTARIOS: En esta columna se escriben los comentarios que explican la idea de lo que esta haciendo el programa; El ensamblador ignora esta linea en el momento de generar los codigos necesarios para el microcontrolador PIC16F84. Tambien se podran agregar comentarios al programa desde la columna No. 1 del editor de textos; pero deberan comenzar con el smbolo " ; "

TCNICOS INDUSTRIALES

25 /112

MICROCONTROLADORES PIC

Puertos de entrada / salida Los microprocesadores PIC16C5X tienen dos o tres puertos de entrada/salida paralelo de usos generales llamados Puerto A, Puerto B y Puerto C. El Puerto A es de cuatro bits y los dems son de 8 bits cada uno. El Puerto C solamente esta disponible en el 16C55 y el 16C57. Circuito equivalente .-El circuito equivalente de un bit cualquiera de un puerto de entrada salida es el siguiente

Circuito equivalente de puerto I/O El latch L1 corresponde a un bit del registro de datos del puerto, mientras que L2 es un bit del registro de control de tristate del mismo. B1 es el buffer tristate de salida que tiene capacidad de entregar 20 mA y drenar 25 mA. B1 es controlado por L2. Si L2 tiene cargado un 1, B1 se encuentra en tri-state, es decir con la salida desconectada (en alta impedancia), y el puerto puede ser usado como entrada. Si L2 tiene cargado un 0, la salida de B1 esta conectada (baja impedancia) y el puerto esta en modo de salida. B2 es el buffer de entrada, es decir el que pone los datos en el bus interno del microcontrolador cuando se lee el registro de datos del puerto. Puede verse que el dato ledo es directamente

TCNICOS INDUSTRIALES

26 /112

MICROCONTROLADORES PIC

Lgica de interrupciones para los controladores PIC16F8X Fuentes La seal que produce la interrupcin es en realidad una sola, que resulta de la combinacin de todas las fuentes posibles y de los bits de habilitacin. Existen dos grupos de fuentes, unas que se habilitan con solo colocar en uno el bit GIE, y otras que adems necesitan que este puesto a uno el bit PEIE. En algunas versiones de los 16CXX solo existe el primer grupo. Adems, cada fuente de interrupciones tiene su respectivo bit de habilitacin individual. Las fuentes de interrupcin varan con cada versin, y pueden ser por ejemplo: Interrupcin externa por pin RB0/INT Desborde del Timer 0 o RTCC Cambio en el estado de los bits 4 a 7 del puerto B Desborde del timer 1 Desborde del timer 2 Interrupcin del capture/compare 1 Interrupcin del capture/compare 2 transmisin o recepcin de un caracter por la interface serie sincrnica transmisin o recepcin de un caracter por la interface serie asincrnica Fin de conversin A/D Lectura/escritura del puerto paralelo de comunicacin con otros microprocesadores Escritura de EEPROM finalizada Programa fuente: El programa fuente esta compuesto por una sucesin de lneas de programa. Cada lnea de programa esta compuesta por 4 campos separados por uno o ms espacios o tabulaciones. Estos campos son: [Etiqueta] Comando [Operando(s)] [;Comentario]

La etiqueta es opcional. El comando puede ser un mnemnico del conjunto de instrucciones. El operando esta asociado al comando, si no hay comando no hay operando, e inclusive algunos comandos no llevan operando. El comentario es opcional para el compilador aunque es buena prctica considerarlo obligatorio para el programador. La etiqueta, es el campo que empieza en la primer posicin de la lnea. No se pueden insertar espacios o tabulaciones antes de la etiqueta sino ser considerado comando. Identifica la lnea de programa haciendo que el compilador le asigne un valor automticamente. Si se trata de una lnea cuyo comando es una instruccin de programa del microcontrolador, se le asigna el valor de la direccin de memoria correspondiente a dicha instruccin (location counter). En otros casos se le asigna un valor de una constante, o la direccin de una variable, o ser el nombre de una macroinstruccin, etc. El comando puede ser un cdigo mnemnico de instruccin del microcontrolador, o una directiva o pseudoinstruccin para el compilador. En el primer caso ser directamente traducido a cdigo de maquina, en el segundo caso ser interpretado por el compilador y realizara alguna accin en tiempo de compilacin como ser asignar un valor a una etiqueta, etc. El campo de parmetros puede contener uno o ms parmetros separados por comas. Los parmetros dependen de la instruccin o directiva. Pueden ser nmeros o literales que representen constantes o direcciones. El campo de comentario debe comenzar con un caracter punto y coma. El compilador ignora todo el texto que contenga la lnea despus de un caracter punto y coma

TCNICOS INDUSTRIALES

27 /112

MICROCONTROLADORES PIC

NOTACIONES
.: NOTACION PARA NUMEROS

Decimal : D'100' .100 Hexadecimal : H'64' 0x64 64 Octal : O'144' Binario : B'01101100' ASCII : A'C' 'C'

.: NOTACION PARA REGISTROS Y LITERALES


w : Registro W, similar al acumulador, es el registro de trabajo. f : Campo de 5 bits (fffff), contiene la direccin del banco de registros, que ocupa el banco 0 del rea de datos. Direcciona uno de esos registros. k : Representa una constante de 8 bits. d : Bit del cdigo OP de la instruccin. Selecciona el destino donde se guarda el resultado de una operacin. Si d=0, el destino es W, y si d=1 el destino es f. b : Determina la posicin de un bit dentro de un registro de 8 bits, (o sea, tomar valores entre 0 y 7)

.: SIMBOLOS

[] : Opciones. () : Contenido. => : Se asigna a ... <> : Campo de bits de un registro. E : Pertenece al conjunto ... Label : Nombre de la etiqueta. TOS : Cima de la pila con 8 niveles en la gama media. PC : Contador de programa que direcciona la memoria de instrucciones

.: FLAGS

Los Flags o banderas son marcadores, representados por bits dentro del registro STATUS, y son:

Z : Flag de cero, se pone a 1 cuando una operacin lgica o aritmtica da 0 (cero)como resultado. En cualquier otro caso se pone a 0. C : Flag de Carry, se pone a 1 cuando la operacin que le afecta sobrepasa el nivel de representacin del procesador, en nuestro caso es de 8 BIT's , de esta manera si sumamos a 0b11111111 un 0b00000011 el resultado sera 0b00000010 y el BIT de Carry pasara a 1.
28 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

DC : Flag de carry del nibble inferior, este se comporta igual que el BIT de Carry, solo que el lmite de representacin son los 4 bits inferiores, de esta manera si tenemos 0b00001111 y sumamos 0b00000111, el resultado ser 0b00010110 y el BIT de DC se pone a 1, el BIT de Carry estar a 0 al no superarse los 8 bits y el de Z a 0 al ser el nmero diferente de 0.

CONJUNTO DE INSTRUCCIONES DEL PIC16F628A: El microcontrolador PIC16F628A, dispone de un total de 35 instrucciones de


una sola palabra que usted podr aprenderse muy fcilmente. Nuestro curso va orientado a entender y programar el PIC16F628A de una manera sencilla y rpida por lo que explicaremos a continuacin el conjunto de instrucciones, su significado, modo de operacin y traduccin. Las instrucciones tienen algunas letras que van relacionadas y que tienen cierta interpretacin. Por ejemplo la letra "W" es el registro mas importante que tiene el microcontrolador y es denominado ACUMULADOR. En este registro todas las operaciones pasan a travs de el. No. Instruccin 1 ADDWF f,d Descripcin Observacin Esta instruccin suma el contenido de un registro Sumar W + especfico al contenido del registro de "W" donde f "f" puede ser un registro cualquiera con un determinado valor.

Por ejemplo: Si el contenido de "W" antes de ejecutar la instruccin tena un valor de 20 y el registro "f" tiene un valor de 5, en el momento que se ejecuta la instruccin el resultado obtenido es 25. Ahora aprovechamos en esta primera instruccin de explicar el significado que tiene la letra "d" en la instruccin (ADDWF f,d). Una vez finalizada la instruccin, el resultado podr ser almacenado directamente en el acumulador "W" o en el registro "f" para ello se utiliza la letra "d" en el cual podr escribirse "0" o "1"; si la letra d=0el resultado de la operacin se ubicar en el registro "W"; por otro lado si d=1 el resultado de la operacin se ubicar en "f". Hagamos un ejemplo sencillo y supongamos que W=4 y f = 3 antes de ejecutar la instruccin: Si escribimos la instruccin de la siguiente manera: ADDWF f,0 significa que el contenido del registro "f=3" se sumar con el contenido del registro "W=4" y el resultado se alojar en el acumulador "W" tomando el valor de "W=7"; el registro "f" mantendr su valor "f=3". Ahora si la instruccin esta escrita as: ADDWF f,1 significa que el contenido del registro "f=3" se sumar con el contenido del registro "W=4" y el resultado se alojar en el registro "f" tomando el valor de "f=7"; el acumulador mantendr su valor "W=4". Esta explicacin de la letra "d" ser valida de igual manera para todas las instrucciones que contengan este parmetro.

TCNICOS INDUSTRIALES

29 /112

MICROCONTROLADORES PIC

Otro punto importante esta referido a la letra "f" la cual puede ser cualquier nombre y no especficamente la letra "f"; por ejemplo ADDWF regist,1 donde regist es un registro de uso general de la memoria RAM. No. Instruccin 2 ANDWF f,d Descripcin Observacin Operacin Esta instruccin realiza una operacin lgica lgica AND "AND" entre el registro"W" y el registro "f".

El microcontrolador PIC16F84 puede realizar una operacin AND entre dos registros.

Para explicar mejor la operacin AND, supongamos que tenemos un bit A y un bit B que deseamos comparar; entonces tenemos las siguientes alternativas combinaciones entre los dos bits: ENTRADA A B 0 0 0 1 1 0 1 1 RESULTADO Y = A.B 0 0 0 1

Se puede observar claramente que solamente para la condicin de que A=1 Y B=1 tendremos 1 en el resultado; de all el nombre de la operacin AND donde dice: "Si A=1 y B=1 entonces la salida ser 1". Esta explicacin es vlida para cada uno de los Bits entre dos registros. Hagamos un ejemplo sencillo y supongamos que W= 00001111 y f = 11110000 antes de ejecutar la instruccin ANDWF f,d: ENTRADA Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 W 0 0 0 0 1 1 1 1 f 1 1 1 1 0 0 0 0 RESULTAD O W.f 0 0 0 0 0 0 0 0

El microcontrolador procede a comparar cada uno de los ocho bits que conforman a W y a f. Esta comparacin es realizada con cada bit perteneciente a su posicin; es decir, el bit No. 7 de"W" con el Bit No. 7 de "f" y as sucesivamente hasta llegar al Bit No 0. Se puede observar que en ninguno de los ocho Bits de los registros "W" y "f" se obtuvo la condicin de "1 Y 1" por lo que todos los bits resultantes fueron cero (0). En nuestro segundo ejemplo tenemos que W = 01110011 y f = 00101001 antes de ejecutar la instruccin ANDWF f,d tenemos: ENTRADA W f
TCNICOS INDUSTRIALES

RESULTADO W.f
30 /112

MICROCONTROLADORES PIC

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

0 1 1 1 0 0 1 1

0 0 1 0 1 0 0 1

0 0 1 0 0 0 0 1

Al igual que el caso anterior, el microcontrolador compara Bit a Bit el registro "W" y el registro "f" y podemos observar que tan solo el Bit No. 5 y el Bit No. 0 cumplen con la condicin AND; los dems Bits dan como resultado cero. No. Instruccin 3 ANDLW k Descripcin Observacin Operacin lgica AND entre un literal y W

Esta instruccin, al igual que la instruccin explicada anteriormente, ejecuta el mismo procedimiento pero con ciertas diferencias. La instruccin ANDLW k significa que el microcontrolador realiza una operacin lgica AND entre el registro "W" y el contenido del literal "k", donde "k" es un literal que puede contener cualquier valor entre 0 y 255 asignado por el programador. Otra diferencia con respecto a la instruccin anterior esta referido al resultado ya que este es colocado directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k". No. Instruccin 3 CLRF f Descripcin Observacin Borra Esta instruccin borra un registro especifico. registro

El microcontrolador puede borrar un registro "f" cargndolo con el valor "00". Supongamos que tenemos un registro denominado regist = 54 antes de ejecutar la instruccin. Despus de ejecutada la instruccin el valor de regist = 00. No. Instruccin 4 CLRW Descripcin Observacin Borra el Esta instruccin borra el registro "W" solamente registro W

Cuando se ejecuta esta instruccin, el microcontrolador borra el registro "W" cargndolo con "00". No. Instruccin 5 COMP f,d Descripcin Observacin Complemen ta el Esta instruccin complementa el registro "f" registro f

Desde el punto de vista de los nmeros binarios, supongamos que tenemos un registro "f" denominado regist = 00111011; cuando es aplicada la instruccin tenemos que los 0 cambian a valores 1 y los valores 1 cambian a 0 obtenindose un registro invertido. El resultado ser 11000100.. No. Instruccin 6 DECF f,d Descripcin Decrementa un registro f Observacin Esta instruccin decrementa en una sola unidad el registro "f".

Esta instruccin le decrementa en una sola unidad el registro "f". Por ejemplo si nuestro registro denominado regist = 5; cuando se aplica la instruccin DECF f,0 el
TCNICOS INDUSTRIALES 31 /112

MICROCONTROLADORES PIC

resultado ser W=4. Por el contrario, si aplicamos la instruccin DECF f,1 el resultado ser regist = 4.

No. Instruccin

Descripcin Observacin Decrementa y Esta instruccin decrementa en una sola unidad 7 DECFSZ f,d si es igual a el registro "f" en la cual si el registro "f" es igual cero salta. a cero entonces salta a una instruccin

Esta instruccin esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. Veamos el siguiente ejemplo: INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 DECFSZ f,d IR A OTRA DIRECCIN SUMAR DOS NMEROS

La instruccin DECFSZ f,d funciona de la siguiente manera: Primero decrementa en una sola unidad el registro "f"; de all pueden suceder dos condiciones. Si el resultado es "0" se ejecuta la instruccin numero 3; pero si el resultado es diferente de cero, se ejecuta la instruccin numero 2 No. Instruccin 8 INCF f,d Descripcin Observacin Incrementa el Esta instruccin incrementa en una sola unidad registro "f" en el registro "f". una unidad

Supongamos que el registro " f = 45 "; cuando se le aplica el comando INCF f,0 se incrementa en una unidad el numero 45 y el resultado es colocado en "W = 46 ". Si aplicamos el comando INCF f,1 se incrementa en una unidad el numero 45 y el resultado es colocado en el registro "f = 46"
No. Instruccin 9 INCFSZ f,d Descripcin Observacin incrementa y Esta instruccin incrementa en una sola unidad si es igual a el registro "f" en la cual si el registro "f" es igual cero salta. a cero entonces salta a una instruccin

Esta instruccin esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. Veamos el siguiente ejemplo: INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 INCFSZ f,d IR A OTRA DIRECCIN SUMAR DOS NMEROS

La instruccin INCFSZ f,d funciona de la siguiente manera: Primero incrementa en una sola unidad el registro "f"; de all pueden suceder dos condiciones. Si el resultado es "0" se ejecuta la instruccin nmero 3; pero si el resultado es diferente de cero, se ejecuta la instruccin nmero 2 No. Instruccin 10 IORWF f,d Descripcin Observacin Se aplica un Esta instruccin aplica una operacin lgica OR Inclusivo llamada OR INCLUSIVO entre dos registros.

El microcontrolador PIC16F84 puede realizar una operacin OR INCLUSIVO entre dos registros.

TCNICOS INDUSTRIALES

32 /112

MICROCONTROLADORES PIC

Para explicar mejor la operacin OR INCLUSIVO, supongamos que tenemos un bit A y un bit B que deseamos comparar; entonces tenemos las siguientes alternativas combinaciones entre los dos bits:

ENTRADA A B 0 0 0 1 1 0 1 1

RESULTADO Y=A+B 0 1 1 1

Se puede observar claramente si A=1 o B=1 independientemente, el resultado ser 1; lo cual quiere decir que solamente cualquiera de los dos registros podr tener valor 1 para que su resultado sea 1. Hagamos un ejemplo sencillo y supongamos que W= 00001111 y f = 11110000 antes de ejecutar la instruccin IORWF f,d: ENTRADA Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 W 0 0 0 0 1 1 1 1 f 1 1 1 1 0 0 0 0 RESULTAD O W+f 1 1 1 1 1 1 1 1

El microcontrolador procede a comparar cada uno de los ocho bits que conforman a W y a f. Esta comparacin es realizada con cada bit perteneciente a su posicin; es decir, el bit No. 7 de"W" con el Bit No. 7 de "f" y as sucesivamente hasta llegar al Bit No 0. Podemos observar claramente que el resultado en todos los Bits es 1 ya que cualquiera de los dos registros ( W o f ) contiene un 1 en nuestro segundo ejemplo tenemos que W = 01110011 y f = 00101001 antes de ejecutar la instruccin IORWF f,d tenemos:

ENTRADA W f Bit 7 0 0 Bit 6 1 0 Bit 5 1 1 Bit 4 1 0 Bit 3 0 1 Bit 2 0 0 Bit 1 1 0 Bit 0 1 1

RESULTADO W.f 0 1 1 1 1 0 1 1

Al igual que el caso anterior, el microcontrolador compara Bit a Bit el registro "W" y el registro "f" y podemos observar que tan solo el Bit No. 7 y el Bit No. 2 no cumplen con la condicin OR; los dems Bits dan como resultado 1.
TCNICOS INDUSTRIALES 33 /112

MICROCONTROLADORES PIC

No. Instruccin 27 IORLW k

Descripcin Operacion IOR

Observacin Operacin lgica entre el registro "W" y un literal "k"

Esta instruccin, al igual que la instruccin explicada anteriormente, ejecuta el mismo procedimiento pero con ciertas diferencias. La instruccin IORLW k significa que el microcontrolador realiza una operacin lgica OR entre el registro "W" y el contenido del literal "k", donde "k" es un literal que puede contener cualquier valor entre 0 y 255 asignado por el programador. Otra diferencia con respecto a la instruccin anterior esta referido al resultado ya que este es colocado directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k". No. Instruccin 11 MOVF f,d Descripcin Observacin Mueve el Esta instruccin mueve el contenido del registro contenido del "f" en el mismo registro "f" o en "W". registro "f"

Esta instruccin tiene la finalidad de mover el contenido del registro "f" en el mismo registro "f" o hacia el registro "W". Por ejemplo si aplicamos el comando MOVF f,0 tan solo mueve el contenido del registro que se encuentra en "f" hacia el acumulador "W"; por otro lado si aplicamos el comando MOVF f,1 se mueve en contenido del registro "f" en el mismo registro "f". En este ltimo punto, usted podra preguntarse para qu se necesita mover el contenido de un registro y volverlo a colocar dentro del mismo registro? La respuesta estriba en que cuando se ejecuta esta instruccin cambia una bandera dentro de la arquitectura del microcontrolador. Estas banderas sern explicadas posteriormente. No. Instruccin 12 NOP Descripcin No opera Observacin Esta instruccin no ejecuta ningn tipo de accin.

La instruccin NOP no ejecuta ninguna tarea especfica, pero consume 4 ciclos de reloj completos. Cierta utilidad que le hemos encontrado a esta instruccin especficamente esta referida a las rutinas de tiempo. Algunas veces hemos creado algunas rutinas de tiempo que requieren exactitud en la temporizacion y en algunos casos cuando estn siendo ejecutadas le suele faltar algunos ciclos de reloj adicionales para que sean exactas; es all en donde debemos agregar algunas instrucciones NOP. No. Instruccin 13 RLF f,d Descripcin Observacin Rotacin a la Esta instruccin rota a la izquierda todos los bits Izquierda de un registro "f".

Esta Instruccin esta muy relacionada con la bandera denominada Carry perteneciente al registro STATUS. La bandera Carry esta afectada directamente por varias instrucciones de las cuales podemos mencionar: Rotacin a la izquierda, Rotacin a la derecha, Suma, Resta, etc. Por ejemplo, supongamos que nuestro registro " f = 00001111 " y que la bandera CARRY tienen un 0; cuando se aplica el comando RLF f,0 todos los nmeros del
TCNICOS INDUSTRIALES 34 /112

MICROCONTROLADORES PIC

registro "f" se desplazan hacia la izquierda. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 0 y el Bit No. 7 es colocado en la

bandera CARRY. El resultado de nuestro ejemplo sera: f = 00011110. y CARRY seria 0. El orden lgico de los Bits lo tenemos definidos as: BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 0 0 0 0 1 1 1 1 Aplicamos la Instruccin RLF f,d 0 0 0 1 1 1 1 0 No. Instruccin Descripcin Observacin Rotacin a la Esta instruccin rota a la Derecha todos los bits 14 RRF f,d Derecha de un registro "f". Al igual que la instruccin anterior, esta muy relacionada con la bandera denominada Carry perteneciente al registro STATUS. La bandera Carry esta afectada directamente por varias instrucciones de las cuales podemos mencionar: Rotacin a la izquierda, Rotacin a la derecha, Suma, Resta, etc. Posteriormente explicaremos las banderas. Por ejemplo, supongamos que nuestro registro " f = 00001111 " y que la bandera CARRY tienen un 0; cuando se aplica el comando RRF f,0 todos los nmeros del registro "f" se desplazan hacia la derecha. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 7 y el Bit No. 0 es colocado en la bandera CARRY. El resultado de nuestro ejemplo sera: f = 00000111. y CARRY seria 1. El orden lgico de los Bits lo tenemos definidos as: BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 0 0 0 0 1 1 1 1 Aplicamos la Instruccin RLF f,d 0 0 0 0 0 1 1 1 No. Instruccin Descripcin Observacin Resta el contenido del registro "W" del registro 15 SUBWF f,d Resta W de f "f" El microcontrolador PIC16F84 puede restar el contenido del registro "W" del registro "f"; por ejemplo, supongamos que "W = 4 " y Dato1 = 6; cuando se aplica el comando SUBWF Dato1,0 se resta 6-4 y el resultado es almacenado en el acumulador "W". Por otro lado si se aplica el comando SUBWF Dato1,1 se resta 64 y el resultado es colocado en el registro Dato1. No. Instruccin 33 SUBLW k Descripcin Observacin Resta el contenido del registro "W" de un literal Resta W de k "k"

Al igual que la instruccin anterior, este resta el contenido del registro "W" de un literal "k" donde "k" es una palabra cualquiera con un valor entre 0 y 255. El resultado de la operacin es colocado directamente en el registro "W". No. Instruccin 16 SWAPF f,d Descripcin Intercambio de Bits Observacin Se intercambian los 4 bits mas altos con los 4 bits mas bajos

Este comando tan solo intercambia los cuatro bits mas altos con los cuatro bits mas bajos. Supongamos por ejemplo que tenemos el siguiente nmero binario almacenado en "f = 00001111"; cuando es aplicado el comando SWAPF f,0 el microcontrolador intercambia los bits altos por los bits bajos de la siguiente forma:
TCNICOS INDUSTRIALES 35 /112

MICROCONTROLADORES PIC

11110000; el resultado es colocado en el acumulador "W". Por otro lado cuando es aplicado el comando SWAPF f,1 el microcontrolador intercambia los bits altos por los bits bajos de la siguiente forma: 11110000; el resultado es colocado en el acumulador "f". No. Instruccin 17 XORWF f,d Descripcin Operacin lgica OR exclusivo Observacin Este comando aplica la operacin lgica de OR Exclusivo a dos registros.

El microcontrolador PIC16F84 puede realizar una operacin OR EXCLUSIVO entre dos registros. Para explicar mejor la operacin OR EXCLUSIVO, supongamos que tenemos un bit A y un bit B que deseamos comparar; entonces tenemos las siguientes alternativas combinaciones entre los dos bits: ENTRADA A B 0 0 0 1 1 0 1 1 RESULTADO Y = A xor B 0 1 1 0

Se puede observar claramente si ambos registros son iguales el resultado ser 0; pero si ambos registros son diferentes entonces el resultado ser 1. Hagamos un ejemplo sencillo y supongamos que W= 00001111 y f = 11110000 antes de ejecutar la instruccin XORWF f,d: ENTRADA Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 W 0 0 0 0 1 1 1 1 f 1 1 1 1 0 0 0 0 RESULTAD O W+f 1 1 1 1 1 1 1 1

El microcontrolador procede a comparar cada uno de los ocho bits que conforman a W y a f. Esta comparacin es realizada con cada bit perteneciente a su posicin; es decir, el bit No. 7 de"W" con el Bit No. 7 de "f" y as sucesivamente hasta llegar al Bit No 0. Podemos observar claramente que el resultado en todos los Bits es 1 ya que cualquiera de los dos registros ( W y f ) contienen Bits diferentes.

En nuestro segundo ejemplo tenemos que W = 01110011 y f = 00101001 antes de ejecutar la instruccin XORWF f,d tenemos:

TCNICOS INDUSTRIALES

36 /112

MICROCONTROLADORES PIC

ENTRADA W f Bit 7 0 0 Bit 6 1 0 Bit 5 1 1 Bit 4 1 0 Bit 3 0 1 Bit 2 0 0 Bit 1 1 0 Bit 0 1 1

RESULTADO W.f 0 1 1 1 1 0 1 0

Al igual que el caso anterior, el microcontrolador compara Bit a Bit el registro "W" y el registro "f" y podemos observar que tan solo el Bit No. 7, el Bit No. 2 y el Bit 0 cumplen con la condicin OR EXCLUSIVO; los dems Bits dan como resultado 1. No. Instruccin 34 XORLW k Descripcin Observacin Operacin lgica XOR entre el registro W y el literal "k"

Esta instruccin al igual que la instruccin explicada anteriormente ejecuta el mismo procedimiento pero con ciertas diferencias. La instruccin XORLW k significa que el microcontrolador realiza una operacin lgica OR EXCLUSIVO entre el registro "W" y el contenido del literal "k", donde "k" es un literal que puede contener cualquier valor entre 0 y 255 asignado por el programador. Otra diferencia con respecto a la instruccin anterior esta referido al resultado ya que este es colocado directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k". No. Instruccin 18 BCF f,b Descripcin Coloca en Cero un determinado Bit Observacin Este comando pone en Cero el Bit "b" del registro "f"

Para este tipo de instrucciones pensamos que el mejor ejemplo que podemos sealar esta basado visualmente en un nmero binario. Cuando se aplica el comando BCF f,b el microcontrolador pone en cero el Bit "b" del registro "f". Para entenderlo mejor observemos el siguiente ejemplo: Supongamos que tenemos un registro de ocho bits llamado Memory = 01010101. Si se aplica el comando BCF Memory,2 quiere decir que al registro Memory en la posicin del Bit No. 2 se le cargara un valor cero. Ejemplo 1 BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 0 1 0 1 0 1 0 1 Aplicamos la Instruccin BCF Memory,2 0 1 0 1 0 0 0 1

TCNICOS INDUSTRIALES

37 /112

MICROCONTROLADORES PIC

Ejemplo 2 BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 1 1 1 1 1 1 1 1 Aplicamos la Instruccin BCF Memory,2 1 1 1 1 1 0 1 1 No. Instruccin Descripcin Observacin Coloca en uno Este comando Pone en 1 el Bit "b" del registro 19 BSF f,b determinado "f" Bit Al igual que la instruccin anterior pensamos que el mejor ejemplo que podemos sealar esta basado visualmente en un nmero binario. Cuando se aplica el comando BSF f,b el microcontrolador pone en 1 el Bit "b" del registro "f". Para entenderlo mejor observemos el siguiente ejemplo: Supongamos que tenemos un registro de ocho bits llamado Memory = 01010101. Si se aplica el comando BSF Memory,3 quiere decir que al registro Memory en la posicin del Bit No. 3se le cargara un valor 1. Ejemplo 1 BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 0 1 0 1 0 1 0 1 Aplicamos la Instruccin BCF Memory,3 0 1 0 1 1 1 0 1 Ejemplo 2 BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 0 0 0 0 0 0 0 0 Aplicamos la Instruccin BCF Memory,3 0 0 0 0 1 0 0 0

No. Instruccin 20 BTFSC f,b

Descripcin Observacin Prueba el Bit Este comando prueba el Bit "b" del registro "f" y b del registro f salta una linea si esta en 0.

Esta instruccin esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. Veamos el siguiente ejemplo: INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 BTFSC f,b IR A OTRA DICRECCION SUMAR DOS NUMEROS

Supongamos que tenemos nuestro registro denominado Memory = 01010101; cuando se le aplica el comando BTFSC Memory,2 el microcontrolador prueba el Bit No. 2 del registro Memory para ver si es igual a cero. En esta comprobacin pueden suceder dos cosas: Si el Bit No. 2 es igual a 0 el microcontrolador ejecuta la instruccin nmero 3; pero en el caso de que el Bit No. 2 sea diferente de 0, el microcontrolador ejecuta la instruccin 2.

No. Instruccin 21 BTFSS f,b


TCNICOS INDUSTRIALES

Descripcin Observacin Prueba el Bit Este comando prueba el Bit "b" del registro "f" y b del registro f salta una linea si esta en 1.
38 /112

MICROCONTROLADORES PIC

Esta instruccin esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. Veamos el siguiente ejemplo: INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3 BTFSS f,b IR A OTRA DICRECCION SUMAR DOS NUMEROS

Supongamos que tenemos nuestro registro denominado Memory = 01010101; cuando se le aplica el comando BTFSS Memory,2 el microcontrolador prueba el Bit No. 2 del registro Memory para ver si es igual a 1. En esta comprobacin pueden suceder dos cosas: Si el Bit No. 2 es igual a 1 el microcontrolador ejecuta la Instruccin numero 3; pero en el caso de que el Bit No. 2 sea diferente de 1, el microcontrolador ejecuta la Instruccin 2 No. Instruccin 22 ADDLW k Descripcin Observacin Suma de dos Este comando suma un valor de un literal al nmeros contenido del registro "W"

Este comando es muy sencillo ya que tan solo cuando es aplicado, toma el contenido del registro y se lo suma al registro "W"; por ejemplo: Supongamos que W = 23 y que tenemos un literal k = 23; cuando se aplica el comando, el resultado es la suma del literal mas el contenido del registro "W", el resultado final queda almacenado en el registro "W". No. Instruccin 24 CALL k Descripcin Observacin Llamada de una Subrrutina con el nombre k

Para entender esta instruccin, primera debemos aclarar que es una Subrutina. La subrutina consiste en un grupo de instrucciones que se encuentran aisladas del programa principal y que se ejecutan cuando son llamadas por un nombre asignado por el programador. Las subrrutinas suelen ser pequeos programas, por ejemplo para obtener retardos de tiempo ( Subrrutina de tiempo ); pero principalmente podemos decir tambin que una Subrrutina es un pequeo programa que se utiliza muchas veces en cualquier parte del programa. Las ventajas que ofrecen las subrrutinas estan referida al ahorro considerable de la memoria de programa y su fcil mantenimiento. A la subrrutina se le podr asignar cualquier nombre, y este es el nombre utilizado en la Instruccin CALL como parmetro. La instruccin CALL k esta estrechamente relacionada con la instruccin denominada RETURN y RETLW ( Ver las siguientes dos Instrucciones ). No. Instruccin 31 RETURN Descripcin Observacin Retorno desde una subrrutina

La Instruccin RETURN es un comando que no podr estar separado cuando se crea una subrrutina. El procedimiento es prcticamente mecnico ya que usted deber crear la subrrutina y darle el nombre para poder ser llamada; al final de la subrrutina se debe escribir la instruccin denominada RETURN. Entonces podemos concluir que una subrrutina esta constituida por un conjunto de instrucciones demarcadas por un nombre que se encuentra al inicio y la instruccin RETURN que se encuentra al

final demarcando el final de la subrrutina. Por ejemplo: supongamos que nuestra Subrrutina se llama RUTINA, entonces tenemos: RUTINA INSTRUCCIN 1 INSTRUCCIN 2 INSTRUCCIN 3
39 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

INSTRUCCIN 4 RETURN Especficamente el comando RETURN le dice al microcontrolador que debe continuar ejecutando las instrucciones en el lugar desde donde la subrrutina fue llamada. Esta es la estructura bsica que conforma a una subrrutina. No. Instruccin 30 RETLW k Descripcin Observacin Retorno de subrrutina y carga a "W" con el contenido del literal "k"

El comando RETLW k se comporta igual al comando RETURN con la diferencia de que esta carga un Valor "k" en el registro "W" cuando finaliza la subrrutina. El rango de este valor "k" esta comprendido entre 0 y 255. No. Instruccin 25 CLRWDT Descripcin Observacin Borra el contenido del registro llamado Watchdog Timer.

Esta instruccin borra el contador del WATCHDOG TIMER (perro guardin), en realidad es un contador interno que va desde 0 hasta 255 y que podr ser activado o desactivado en la configuracin del sistema cuando el microcontrolador va a ser grabado. El tiempo de conteo para este contador tambin podr ser prolongado por un preescalador segn las necesidades del usuario. La instruccin CLRWDT borra el contenido del contador del perro guardin. Si usted activa el Watchdog Timer, usted deber asegurarse de ejecutar el comando CLRWDT antes de que el contador finalice el conteo para que el microcontrolador no se reinicialice automticamente. Existen casos en donde los microcontroladores se confunden y queda bloqueado dejando automticamente de hacer la tarea encomendada. Cuando sucede esto no existir el comando CLRWDT y en consecuencia se reinicializara el microcntrolador. Esta instruccin es muy ventajosa cuando se tienen instalados los sistemas en lugares muy remotos y no puede enviarse a una persona para reinicializar el microcontrolador. No. Instruccin 26 GOTO k Descripcin Observacin El contador de programa salta a una direccin con el nombre "k"

Esta es una de las instruccin mas fcil de entender y consiste tan solo en un salto a otra parte del programa. Cuando se ejecuta el comando GOTO k, el microcontrolador salta a la direccin "k", donde "k" es una etiqueta cualquiera; por ejemplo:

SALTO

INSTRUCCIN 1 GOTO SALTO INSTRUCCIN 3 INSTRUCCIN 4 INSTRUCCION 5

en en ejemplo anterior tenemos que primero se ejecuta la instruccin 1, seguidamente la instruccin de GOTO SALTO la cual le dice al microcontrolador que debe continuar en la instruccin 5.
TCNICOS INDUSTRIALES 40 /112

MICROCONTROLADORES PIC

No. Instruccin 28 MOVLW k

Descripcin

Observacin Se carga el registro "W" con el contenido del literal "k"

Esta instruccin le servir para tomar el contenido de un literal y cargarlo en el registro "W"; donde "k" en una palabra cualquiera que tiene asignado un valor entre 0 y 255. No. Instruccin 29 RETFIE Descripcin Observacin Retorno de llamado a interrupcin

Esta Instruccin es parecida a la Instruccin RETURN, pero a diferencia de esta, RETFIE es utilizada para volver de una subrrutina de interrupcin. No. Instruccin 32 SLEEP Descripcin Observacin Entra en modo de reposo.

Esta Instruccin le da la orden al microcontrolador de quedar en modo suspendido, en este modo el PIC no ejecuta ninguna instruccin hasta que sea nuevamente reinicializado (RESET) comenzando nuevamente el programa. En este modo el consumo de energa del PIC es mnimo. Durante este modo el contador del WATCHDOG TIMER sigue trabajando y si este esta activado el PIC se reseteara por este medio.

LAS BANDERAS Estas banderas se utilizan para dar informacin adicional cuando se realizan operaciones lgicas y aritmticas dentro del microcontrolador. Usted podr tomar decisiones segn el valor de cada una de las banderas. Existen diferentes tipos de banderas en un microcontrolador; entre ellas tenemos: LAS BANDERAS EN LA SUMA: Los registros bsicos del microcontrolador PIC16F628A tienen una longitud de 8 bits expresados en forma binaria, lo cual quiere decir que el nmero mximo expresado en forma decimal ser el 255. En la suma existen tres tipos de banderas que pueden proporcionarnos mayor informacin del resultado. Estas banderas son denominadas CARRY (C), Acarreo de Dgito (DC) y el Estado Cero (Z). Todas estas banderas son activadas segn sea el caso: Por ejemplo, en la suma, la bandera CARRY se coloca en "1" cuando el resultado supera el nmero 255 y permanecer en "0" indicando que no se present ningn sobreflujo; es decir que el resultado de la suma fue menor. Por otro lado, existe otra bandera denominada Acarreo de Dgito "DC" que expresa lo que sucede con los 4 Bits menos significativos; es decir, si los cuatro Bits menos significativos sobrepasa al numero 15 expresado en forma decimal, entonces la bandera DC = 1, en el caso contrario ser "0". Finalmente la bandera de estado "Z" se activa cuando la operacin aritmtica da como resultado un "1"; de lo contrario se coloca en "0". LAS BANDERAS EN LA RESTA: En la resta de dos nmeros la bandera CARRY "C" se coloca en "1" cuando el resultado de la operacin sea un nmero positivo, o se pone en cero para el caso contrario. Esto tan sencillamente quiere decir por ejemplo que si tenemos A=20 y B=10 donde X=A-B; el resultado ser X=10 ( Nmero Positivo ); para el caso
TCNICOS INDUSTRIALES 41 /112

MICROCONTROLADORES PIC

contrario si tenemos A=10 y B=20 donde X=A-B entonces X=-10. obtenindose un resultado negativo. La bandera de acarreo de dgito "DC" se colocar en "1" cuando los cuatro Bits menos significativos del registro "W" sea menor que los cuatros bits menos significativos del registro que se desea restar, en caso contrario se colocar un cero. La bandera de estado "Z" solamente se activar cuando ambas cantidades sean iguales. LAS BANDERAS EN LA ROTACION El microcontrolador PIC16F84 tiene disponibles dos instrucciones de rotacin las cuales rotan los dgitos de un registro a la derecha o a la izquierda, segun se use. Por ejemplo, para la rotacin a la izquierda supongamos que nuestro registro " f = 00001111 " y que la bandera CARRY tiene un 0; cuando se aplica el comando RLF f,0 todos los nmeros del registro "f" se desplazan hacia la izquierda. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 0 y el Bit No. 7 es colocado en la bandera CARRY. El resultado de nuestro ejemplo seria: f = 00011110. y CARRY seria 0. El orden lgico de los Bits lo tenemos definidos as:

BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 0 0 0 0 1 1 1 1 Aplicamos la Instruccin RLF f,d 0 0 0 1 1 1 1 0 Ahora para la notacin a la derecha, supongamos que nuestro registro " f = 00001111 " y que la bandera CARRY tiene un 0; cuando se aplica el comando RRF f,0 todos los nmeros del registro "f" se desplazan hacia la derecha. El valor lgico que se encuentra en la bandera CARRY es colocado en el Bit No. 7 y el Bit No. 0 es colocado en la bandera CARRY. El resultado de nuestro ejemplo seria: f = 00000111. y CARRY seria 1. El orden lgico de los Bits lo tenemos definidos as: BIT No. 7 BIT No. 6 BIT No. 5 BIT No. 4 BIT No. 3 BIT No. 2 BIT No. 1 BIT No. 0 0 0 0 0 1 1 1 1 Aplicamos la Instruccin RLF f,d 0 0 0 0 0 1 1 1

Resumen de instrucciones (clasificacin segn el fabricante en tres grupos):


En este resumen las instrucciones estn clasificadas segn su operacin sea orientada a registros, a bits, o a literales y de control: Para que no te confundas...!!!. En esta primera tabla aparecen W, f y d. Recuerda que...

W : es el registro de trabajo y almacena datos de forma momentnea f : es la direccin de un registro, si es llamada apunta al contenido de ese registro d : es el destino donde se guarda el resultado de una operacin, si es 1 se guarda en el registro f, y si es 0 en W

TCNICOS INDUSTRIALES

42 /112

MICROCONTROLADORES PIC

OPERACIONES ORIENTADAS A REGISTROS Nemotcnicos ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF Operacin Estados afectados C,DC,Z Z Z Z Z Z Z Z Z C C C,DC,Z Z

f,d Sumar W y f f,d AND entre W y f f Limpiar f Limpiar W f,d Complementar f f,d Decrementar f f,d Decrementar f, saltar si cero f,d Incrementar f f,d Incrementar f, saltar si cero f,d OR entre W y f f,d Mover f f Mover W a F No Operacin f,d Rotar a la izquierda a travs del carry RRF f,d Rotar a la derecha a travs del carry SUBWF f,d Restar W de f SWAPF f,d Intercambiar nibbles de f XORWF f,d OR exclusiva entre W y f

En este otro cuadro, a dems de f aparece b. que vendra a ser uno de los 8 bits del registro f

OPERACIONES ORIENTADAS A BITS Nemotcnicos BCF BSF BTFSC BTFSS


TCNICOS INDUSTRIALES

Operacin Limpiar bit b de f Activar bit b de f Probar bit b de f, saltar si cero Probar bit b de f,

Estados afectados

f,b f,b f,b f,b

43 /112

MICROCONTROLADORES PIC

saltar si uno Por ltimo, aparece k que viene a ser una constante de 8 bit, es decir que k puede tomar valores entre 0 y 255, stos inclusive, segn la instruccin a utilizar OPERACIONES ORIENTADAS A LITERALES Y DE CONTROL Nemotcnicos ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW Operacin Estados afectados C,DC,Z Z -TO,-TD Z

k Sumar literal k a W k AND entre k y W k Llamar subrutina Limpiar WDT K Salta a direccin k K OR entre k y W K Cargar W con literal k Retornar de interrupcin K Retornar y cargar W con k Retornar de subrutina Ir al modo de bajo consumo K Restarle k a W K OR exclusiva entre k y W

-TO,-TD C,DC,Z Z

Bueno, eso es todo, y creo que ms que suficiente.

Subrutinas y llamados
IMPORTANCIA DE LAS RUTINAS (*) La mayora de los microcontroladores incluyen en su repertorio de instrucciones algunas que permiten saltar a una rutina y, cuando se complementa su ejecucin, retornar al programa principal El empleo de subrutinas aporta muchas ventajas entre las que se destacan las siguientes: 1. Se pueden escribir como subrutinas secciones de cdigo y ser empleadas en muchos programas ( por ejemplo, la subrutina de exploracin de un teclado ).
TCNICOS INDUSTRIALES 44 /112

MICROCONTROLADORES PIC

2. Dan a los programas un carcter modular, es decir, se pueden codificar diferentes mdulos para usarlos en cualquier programa. 3. Se reduce notablemente el tiempo de programacin, la deteccin de errores, usando repetidamente una subrutina. 4. El cdigo es ms fcil de interpretar, dado que las instrucciones de las subrutinas no aparecen en el programa principal. Solo figuran las llamadas CALLs. LAS INSTRUCCIONES CALL Y RETURN (*) La instruccin CALL ( llamada la subrutina) consigue que la ejecucin del programa contine en la direccin donde se encuentra la subrutina a la que hace referencia. Es similar a GOTO pero coloca en la pila la direccin de la siguiente instruccin que se debe ejecutar despus de la CALL. La subrutina finaliza con la instruccin RETURN (Retorno de la subrutina) que retoma la direccin guardada en le pila y la coloca en el contador del programa PC continuando el flujo de control con la instruccin que sigue a la CALL. En la familia PIC de gama media la pila tiene ocho niveles de memoria del tipo FIFO (primero en entrar, ltimo en salir). Si se produce la llamada a una subrutina durante la ejecucin de otra subrutina, la direccin de retorno de esta segunda es colocada en la cima de la pila sobre la direccin anterior. Esta segunda direccin es la primera en salir de la pila mediante la instruccin RETURN. Con la pila de ocho niveles, una subrutina puede llamar a otra y sta, a su vez, llamar a otra hasta un mximo de ocho. La gama baja slo puede realizar dos llamadas de este tipo al poseer una pila de slo dos niveles. Las subrutinas deben colocarse al comienzo de las pginas debido a que el bit 8 del contador del programa es puesto a 0 por la instruccin CALL (o por cualquier instruccin que modifica el PC). Las subrutinas deben colocarse en la mitad inicial de las pginas (las 256 palabras). * Tomado de: Microcontroladores PIC, la solucin en un chip, Angulo y otros, Seccin 5.1

Configuracin de los puertos del PIC


Lleg el momento de ver como configurar los puertos del PIC. Para poder hacerlo es necesario conocer la tabla de registros de la memoria de datos, la cual como dijimos, est dividida en el BANCO 0 y BANCO 1. Los registros importantes en la configuracin de los puertos son: STATUS direccin 0x3 PORTA direccin 0x5 PORTB direccin 0x6 TRISA direccin 0x5 TRISB direccin 0x6
TCNICOS INDUSTRIALES 45 /112

MICROCONTROLADORES PIC

Por defecto el PIC tendr todos los I/O port's (es decir los puertos RA y RB), colocados como entrada de datos, y si queremos cambiarlos habr que configurarlos. Al configurar los puertos debers tener en cuenta que: Si asignas un CERO (0) a un pin, ste quedar como salida y... Si le asignas un UNO (1), quedar como entrada Esta asignacin se hace en: TRISA para los pines del PUERTO A (5 bits) TRISB para los pines del PUERTO B (8 bits) .: Por Ejemplo: Si TRISA es igual a 11110 todos sus pines sern entradas salvo RA0 que esta como salida Si TRISB es igual a 00000001 todos sus pines sern salidas salvo RB0 que esta como entrada Cuando el PIC arranca se encuentra en el BANCO 0, como TRISA y TRISB estn en el BANCO 1 no queda otra, deberemos cambiar de banco. Esto se logra a travs del Registro STATUS STATUS es un Registro de 8 bits u 8 casillas, en el cual la N 5 (RP0) define la posicin del banco en donde nos encontramos Si pones un CERO (0) a RP0 estaremos en el BANCO 0 Si le pones un UNO (1) ya ves, estaremos en el BANCO 1 REGISTRO STATUS 5 4 3 2 RP0 TO PD Z

7 IRP

6 RP1

1 DC

0 C

Listo, ahora ya sabemos como configurar los puertos, pero lo aclararemos con un ejemplo completo. Vamos a escribir un cdigo que configure todos los pines del puerto A como entrada y todos los del puerto B como salida. ;---------------Encabezado------------list radix p=16f84 hex ; usaremos el PIC 16f84 ; y la numeracin hexadecimal

;------------mapa de memoria--------estado trisa trisb equ equ equ 0x03 0x05 0x06 ; Aqu le asignamos nombres a los ; registros indicando la posicin ; en la que se encuentran

;-------Configuracin de puertos-------

TCNICOS INDUSTRIALES

46 /112

MICROCONTROLADORES PIC

reset

org goto org bsf movlw movwf movlw movwf bcf

0x00 inicio 0x05 estado,5

inicio banco1

; origen del programa, aqu comenzar ; siempre que ocurra un reset ; salto a "inicio" ; origen del cdigo de programa ; pongo rp0 a 1 y paso al

b'11111' ; cargo W con 11111 trisa ; y paso el valor a trisa b'00000000' ; cargo W con 00000000 trisb ; y paso el valor a trisb estado,5 ; pongo rp0 a 0 y regreso al

banco0 ;-----------------------------------------end ; se acab ;------------------------------------------

.: Descripcin del cdigo: Todo lo que escribas luego de un ";" (punto y coma) ser ignorado por el ensamblador, estos son los famosos comentarios, y sirve para saber que hace cada lnea de cdigo. Dicho esto no queda ms que describir el cdigo, as que vamos por partes.

;---------------Encabezado------------list radix p=16f84 hex ; usaremos el PIC 16f84 ; y la numeracin hexadecimal

Aqu le indicas al ensamblador para que microcontrolador estas codificando (PIC16F84). y cual ser el sistema de numeracin que utilizars (hexadecimal).

Nota que hay tres columnas, en este caso la primera est vaca. Respeta las tabulaciones para no confundir al ensamblador. ;------------mapa de memoria--------estado trisa trisb equ equ equ 0x03 0x05 0x06 ; Aqu le asignamos nombres a los ; registros indicando la posicin ; en la que se encuentran

Recuerdas lo de la memoria de datos...? Bien, al registro STATUS, que est en la posicin 0x03 de la memoria de datos le puse la etiqueta "estado". equ es algo as comoooo...igual . (Es decir, le estoy asignando el nombre estado al registro que est en la posicin 0x03 de la memoria de datos).
TCNICOS INDUSTRIALES 47 /112

MICROCONTROLADORES PIC

Luego hice lo mismo con trisa y trisb. Ahora sigamos... ;-------Configuracin de puertos------reset org goto org bsf movlw movwf movlw movwf bcf banco0 La directiva org indica el sitio de la memoria en donde se escribe una parte del programa. En este caso el contador de programa apuntar a la direccin 0x00 (reset) entonces ejecutar la instruccin que sigue a continuacin, (saltar a la etiqueta inicio) y nuestro cdigo de programa comienza en la direccin de memoria 0x05 (aqu salto por encima de la interrupcin 0x04) BSF (SET FILE REGISTER), es la instruccin que pone un uno en el bit del registro especificado, en este caso pone a uno el bit 5 del registro STATUS (el rp0), para pasar al banco 1. movlw es algo as como... mueve el siguiente literal al Registro W. W es el Registro de Trabajo, y lo usamos para almacenar momentneamente los datos que queremos mover. una vez hecho esto pasamos el dato a trisa, o a trisb, segn el caso. movwf es algo as como... mueve el contenido del registro W al registro f, en este caso f sera trisa o trisb. BCF (BIT CLEAR FILE REGISTER), sta instruccin limpia el bit del registro especificado, o lo pone a cero, en este caso pone a cero el bit 5 del registro STATUS para regresar al banco 0. ;-----------------------------------------end ; se acab 0x00 inicio 0x05 estado,5 ; origen del programa, aqu comenzar ; siempre que ocurra un reset ; salto a "inicio" ; origen del cdigo de programa ; pongo rp0 a 1 y paso al

inicio banco1

b'11111' ; cargo W con 11111 trisa ; y paso el valor a trisa b'00000000' ; cargo W con 00000000 trisb ; y paso el valor a trisb estado,5 ; pongo rp0 a 0 y regreso al

TCNICOS INDUSTRIALES

48 /112

MICROCONTROLADORES PIC

MANUAL DE MICROCONTROLADORES PIC PRCTICA DE LABORATORIO

PRACTICA DE LABORATORIO N 1
ENCENDIDO DE UN LED
;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito de encendido de un led en RB0, del puerto B ; Microcontrolador : PIC16F628A ; ***************************************************************************

LIST

P=P16F628A INCLUDE

"P16F628A.INC"
49 /112

TCNICOS INDUSTRIALES

MICROCONTROLADORES PIC

CBLOCK ENDC ORG

0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 BSF PORTB,0 ; PRENDE RB0 GOTO INICIO1 ; IR A INICIO1 END ; FIN DEL PROGRAM

DIAGRAMA PARA LA CONEXIN DE UN PIC 16F628A

TCNICOS INDUSTRIALES

50 /112

MICROCONTROLADORES PIC

PRACTICA DE LABORATORIO N 2

TCNICOS INDUSTRIALES

51 /112

MICROCONTROLADORES PIC

LEER EL ESTADO DE 6 INTERRUPTORES/PULSADORES DEL ENTRENADOR CONECTADOS A RA5-RA0 Y REFLEJAR EL NIVEL LGICO DE LOS MISMOS SOBRE LOS LEDS CONECTADOS A RB5-RB0
;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito puerto B, reflejo de puerto A ; Microcontrolador : PIC16F628A ;---------------------------------------------------

List p=16F628A ;Tipo de procesador include"P16F628A.INC" ;Definiciones de registros internos ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; org 0x00 goto Inicio ;Vector de reset org 0x05 Inicio movlw movlw clrf bsf clrf movlw movwf bcf movf Movwf goto end 0x07 CMCON PORTB ;Borra los latch de salida STATUS,RP0 ;Selecciona banco 1 TRISB ;Puerta B se configura como salida b'00111111' TRISA ;Puerta A se configura como entrada STATUS,RP0 ;Selecciona banco 0 PORTA,W PORTB INICIO1 ;Leer las entradas RA0-RA5 ;Reflejar en las salidas ;Bucle sin fin ;Fin del programa fuente

INICIO1

PRACTICA DE LABORATORIO N 3
TCNICOS INDUSTRIALES 52 /112

MICROCONTROLADORES PIC

ENCENDIDO DE UN LED CON INTERRUPTOR


;*************************************************************************** ; ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito con un interruptor como entrada, y un led de salida ; Microcontrolador : PIC16F628A ;---------------------------------------------------

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 BTFSSPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO APAGA ; SI EST EN 0 PASA A LA SIGUIENTE INSTRUCCIN GOTO PRENDE ; SI EST EN 1 SALTA UNA INSTRUCCIN PRENDE BSF PORTB,0 ; PRENDE RB0 GOTO INICIO1 ; IR A INICIO1 APAGA BCF PORTB,0 ; APAGA RB0 GOTO INICIO1 ; IR A INICIO1 END ; FIN DEL PROGRAM A

DIAGRAMA PARA LA CONEXIN DE UN PIC 16F628A DE ENCENDIDO DE UN LED, CON INTERRUTOR EN EL PUERTO A, (RA0, COMO ENTRADA).
TCNICOS INDUSTRIALES 53 /112

MICROCONTROLADORES PIC

PRACTICA DE LABORATORIO N 4

TCNICOS INDUSTRIALES

54 /112

MICROCONTROLADORES PIC

ENCENDIDO DE UN LED CON PULSADOR PARA EL ENCENDIDO Y RESET PARA EL APAGADO


;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito con un pulsador como entrada, y un led de salida ; Microcontrolador : PIC16F628A ;---------------------------------------------------

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 BTFSSPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO INICIO1 ; IR A INICIO1 INICIO2 BTFSCPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO INICIO2 ; IR A INICIO2 PRENDE BSF PORTB,0 ; PRENDE RB0 GOTO PRENDE ; IR A PRENDE END ; FIN DEL PROGRAMA

DIAGRAMA PARA LA CONEXIN DE UN PIC 16F628A DE ENCENDIDO DE UN LED, CON PULSADOR PARA EL ENCENDIDO Y RESET PARA EL APAGADO

TCNICOS INDUSTRIALES

55 /112

MICROCONTROLADORES PIC

PRACTICA DE LABORATORIO N 5

TCNICOS INDUSTRIALES

56 /112

MICROCONTROLADORES PIC

ENCENDIDO DE UN LED CON PULSADOR RA0, PARA EL ENCENDIDO Y RA1 PARA EL APAGADO
;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito con pulsador de marcha y parada, como entrada, y un led de salida ; Microcontrolador : PIC16F628A ;---------------------------------------------------

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA (PULSADOR MARCHA) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSAMARCHA BTFSSPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO PULSAMARCHA ; IR A PULSAMARCHA CALL Retardo_20ms ; IR A RETARDO DE 20 ms. PULSAMARCHA1 BTFSCPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO PULSAMARCHA1 ; IR A PULSAMARCHA1 CALL Retardo_20ms ; IR A RETARDO DE 20 ms GOTO PRENDE ; IR A PRENDE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PULSADOR APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSASTOP BTFSSPORTA,1 ; PREGUNTA COMO ESTA EL RA1 GOTO PULSASTOP ; IR A PULSASTOP CALL Retardo_20ms ; IR A RETARDO DE 20 ms
TCNICOS INDUSTRIALES 57 /112

MICROCONTROLADORES PIC

PULSASTOP1

BTFSCPORTA,1 ; PREGUNTA COMO ESTA EL RA1 GOTO PULSASTOP1 ; IR A PULSASTOP1 GOTO Retardo_20ms ; IR A RETARDO DE 20 ms GOTO APAGA ; IR A APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRENDE BSF PORTB, ; PRENDE RB0 GOTO PULSASTOP ; IR A PULSASTOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; APAGA BCF PORTB,0 ; APAGA RB0 GOTO PULSAMARCHA ; IR A PULSAMARCHA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INCLUDE <RETARDOS.INC> END ; FIN DEL PROGRAMA DIAGRAMA PARA LA CONEXIN DE UN PIC 16F628A DE ENCENDIDO DE UN LED, CON PULSADOR RA0, PARA EL ENCENDIDO Y RA1 PARA EL APAGADO

PRACTICA DE LABORATORIO N 6
SUMA DE UN LITERAL Y EL PUERTO A. EL RESULTADO SE VISUALIZA EN EL PUERTO B
TCNICOS INDUSTRIALES 58 /112

MICROCONTROLADORES PIC ;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito de suma ; Microcontrolador : PIC16F628A ;---------------------------------------------------

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INICIO1 MOVLW 0X02 ADDWF PORTA,W MOVWF PORTB GOTO INICIO1 END

CIRCUITO DE SUMA DE UN LITERAL Y EL PUERTO A

TCNICOS INDUSTRIALES

59 /112

MICROCONTROLADORES PIC

PRACTICA DE LABORATORIO N 7
TCNICOS INDUSTRIALES 60 /112

MICROCONTROLADORES PIC

RESTA DE UN LITERAL Y EL PUERTO A. EL RESULTADO SE VISUALIZA EN EL PUERTO B


;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito de suma ; Microcontrolador : PIC16F628A ;---------------------------------------------------

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INICIO1 MOVLW 0X02 SUBWF PORTA,W MOVWF PORTB GOTO INICIO1 END

CIRCUITO DE RESTA DE UN LITERAL Y EL PUERTO A

TCNICOS INDUSTRIALES

61 /112

MICROCONTROLADORES PIC

PRACTICA DE LABORATORIO N 8
TCNICOS INDUSTRIALES 62 /112

MICROCONTROLADORES PIC LEDS SECUENCIALES, CON LA INSTRUCCIN RLF ;*************************************************************************** ; Febrero 01, 2012 ; nombre: led8.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito utilizando la instruccin rlf, rotar a la izquierda ; Microcontrolador : PIC16F628A ;--------------------------------------------------LIST P=P16F628A INCLUDE "P16F628A.INC" CBLOCK ROTAR ENDC ORG 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 MOVLW 0X01 ; CARGA W CON 00000001 MOVWF ROTAR ; LO PASA AL REGISTRO ROTA ROTANDO MOVF ROTAR,0 ; PASA EL CONTENIDO DE ROTAR A W MOVWF PORTB ; Y DE ALLI AL PUERTO B CALL Retardo_20ms CLRF PORTB CALL Retardo_20ms RLF ROTAR,1 ; DESPLAZA UN BIT AL CONTENIDO ; DE ROTAR Y LO GUARDA GOTO ROTANDO INCLUDE <RETARDOS.INC> END

TCNICOS INDUSTRIALES

63 /112

MICROCONTROLADORES PIC CIRCUITO DE ROTACIN DE LED CON LA INSTRUCCIN RLF

TCNICOS INDUSTRIALES

64 /112

MICROCONTROLADORES PIC

PRACTICA DE LABORATORIO N 9
;CONTADOR CON XOR ;*************************************************************************** ; Febrero 01, 2012 ; nombre: led8.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito utilizando la instruccin rlf, rotar a la izquierda ; Microcontrolador : PIC16F628A ;--------------------------------------------------LIST P=P16F628A INCLUDE "P16F628A.INC" CBLOCK CONT ENDC ORG 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;, ;;;;;;;;;;;;;;;;;;;;;;;; inicio1 bsf PORTB,0 ;PRENDE RB0 DEL PUERTOB CALL Retardo_200ms CALL Retardo_200ms MOVF CONT,0 XORLW B'00111' ;verifica si el contador llego a 19 BTFSC STATUS,2 ;si no es asi salta una linea goto inicio2 ;Si llego a 9 lo atiende en manual INCF CONT,1 ;incrementa el contador MOVF CONT,0 ;pasa el contador a W clrf PORTB CALL Retardo_200ms goto inicio1 inicio2 CLRF CONT ;pone el contador a 0 clrf PORTB goto inicio2 INCLUDE <RETARDOS.INC> end

TCNICOS INDUSTRIALES

65 /112

MICROCONTROLADORES PIC CONTADOR CON XOR

PRACTICA DE LABORATORIO N 10
;CIRCUITO DESTELLANTE DE UNA LAMPARA LED CON TEMPORIZADOR ;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito un led destellante con temporizador de 2 s ; Microcontrolador : PIC16F628A ;--------------------------------------------------LIST P=P16F628A INCLUDE "P16F628A.INC" TICKS EQU D'78' CBLOCK TIEMPO ENDC ORG 0X20 0X00 ; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS TCNICOS INDUSTRIALES 66 /112

MICROCONTROLADORES PIC MOVWF TRISA CLRF TRISB ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE TIMER MOVLW b'01010111' ;SEGUN LOS BITS DEL REGISTRO OPTIO MOVWF OPTION_REG BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO1 BSF PORTB,0 CALL PAUSA BCF PORTB,0 CALL PAUSA GOTO INICIO1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CICLO DE TEMPORIZACION PAUSA OTR_TIC SIGUE MOVLW MOVWF MOVLW MOVWF BTFSS GOTO BCF DECFSZ GOTO RETURN END TICKS TIEMPO D'156' TMR0 INTCON,2 SIGUE INTCON,2 TIEMPO,1 OTR_TIC ;TIEMPO_ESPERA = TICKS * OTR_TIC ;GUARDA VALOR EN MEMORIA ;OTR_TIC=256- 156=100 ;OTR_TIC = 0.05632seg ; T= 4 * 0.25us * 100 * 256=0.0256seg ;DESBORDAMIENTO?=256 ;INTCON,2=TOIF , SEGUN REGISTRO INTCON

; tiempo real = OTR_TIC x TICKS = 0.0256 x 78 = 2seg

TCNICOS INDUSTRIALES

67 /112

MICROCONTROLADORES PIC

PRACTICA DE LABORATORIO N 11
;PROGRAMA DE ARRANQUE EN ESTRELLA TRINGULO DE UN MOTOR ASNCRONO TRIFSICO ;*************************************************************************** ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito de arranque en estrella tringulo de motor asncrono trifsico ; Microcontrolador : PIC16F628A ;---------------------------------------------------

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG

"P16F628A.INC" 0X20

0X00

; Origen del programa, aqu comenzar ; siempre que ocurra un reset

goto INICIO ORG 0X04 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; CONFIGURACION DE PUERTO A COMO DIGITALES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; INICIO MOVLW 0x07 MOVWF CMCON ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;CONFIGURACION DE PUERTOS, COMO I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BSF STATUS,5 ; PASAR DEL BANCO 0 AL BANCO 1 BCF STATUS,6 MOVLW B'11111111' ; CONFIGURA PUERTO A COMO ENTRADAS MOVWF TRISA CLRF TRISB BCF STATUS,5 ; PASAR DEL BANCO 1 AL BANCO 0 BCF STATUS,6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CLRF PORTB ; LIMPIA PUERTO B ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA (PULSADOR MARCHA) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSAMARCHA BTFSSPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO PULSAMARCHA ; IR A PULSAMARCHA CALL Retardo_20ms ; IR A RETARDO DE 20 ms. PULSAMARCHA1 BTFSCPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO PULSAMARCHA1 ; IR A PULSAMARCHA1 CALL Retardo_20ms ; IR A RETARDO DE 20 ms GOTO PRENDE ; IR A PRENDE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; PULSADOR APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSASTOP BTFSSPORTA,1 ; PREGUNTA COMO ESTA EL RA1
TCNICOS INDUSTRIALES 68 /112

MICROCONTROLADORES PIC

GOTO PULSASTOP ; IR A CALL Retardo_20ms PULSASTOP1 BTFSCPORTA,1 GOTO PULSASTOP1 GOTO Retardo_20ms GOTO APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRENDE BSF PORTB,0
BSF CALL BCF CALL BSF PORTB,1 Retardo_5s PORTB,0 Retardo_500ms PORTB,2

PULSASTOP ; IR A RETARDO DE 20 ms ; PREGUNTA COMO ESTA EL RA1 ; IR A PULSASTOP1 ; IR A RETARDO DE 20 ms ; IR A APAGA

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GOTO PULSASTOP ; IR A PULSASTOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; APAGA CLRF PORTB GOTO PULSAMARCHA
INCLUDE <lcd_4bit.INC> INCLUDE <RETARDOS.INC> INCLUDE <LCD_MENS.INC> END

PRACTICA DE LABORATORIO N 11
;PROGRAMA DE ARRANQUE EN ESTRELLA TRINGULO DE UN MOTOR ASNCRONO TRIFSICO ;*************************************************************************** TCNICOS INDUSTRIALES 69 /112

MICROCONTROLADORES PIC ; Febrero 01, 2012 ; nombre: led2.asm) ; Programa producido por: SENATI ZONAL LA LIBERTAD ; Circuito de arranque en estrella tringulo de motor asncrono trifsico ; Microcontrolador : PIC16F628A ;---------------------------------------------------

LIST

P=P16F628A INCLUDE CBLOCK ENDC ORG goto ORG INICIO

"P16F628A.INC" 0X20 0X00 0X04 PCL,F

Mensajes addwf Mensaje1 DT " MOTOR APAGADO",0X00 Mensaje2 DT "MOTOR ENCENDIDO", 0X00 Mensaje3 DT "START ESTRELLA ", 0x00 Mensaje4 DT "START TRIANGULO ", 0x00

INICIO MOVLW 0X07 MOVWF

CMCON

BSF STATUS,5 MOVLW B'00010100' MOVWF TRISA CLRF TRISB BCF STATUS,5 CLRF PORTB CLRF PORTA CALL LCD_Inicializa CALL LCD_Linea1 MOVLW Mensaje1 CALL LCD_Mensaje

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; INICIO DEL PROGRAMA (PULSADOR MARCHA) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSAMARCHA BTFSSPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO PULSAMARCHA ; IR A PULSAMARCHA CALL Retardo_20ms ; IR A RETARDO DE 20 ms. PULSAMARCHA1 BTFSCPORTA,0 ; PREGUNTA COMO ESTA EL RA0 GOTO PULSAMARCHA1 ; IR A PULSAMARCHA1 CALL Retardo_20ms ; IR A RETARDO DE 20 ms GOTO PRENDE ; IR A PRENDE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TCNICOS INDUSTRIALES 70 /112

MICROCONTROLADORES PIC

; PULSADOR APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PULSASTOP BTFSSPORTA,1 ; PREGUNTA COMO ESTA EL RA1 GOTO PULSASTOP ; IR A PULSASTOP CALL Retardo_20ms ; IR A RETARDO DE 20 ms PULSASTOP1 BTFSCPORTA,1 ; PREGUNTA COMO ESTA EL RA1 GOTO PULSASTOP1 ; IR A PULSASTOP1 GOTO Retardo_20ms ; IR A RETARDO DE 20 ms GOTO APAGA ; IR A APAGA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRENDE BSF PORTB,0
BSF PORTB,1 CALL LCD_Linea1 MOVLW Mensaje2 CALL LCD_Mensaje CALL LCD_Linea2 MOVLW Mensaje3 CALL LCD_Mensaje CALL Retardo_5s

PORTB, ; PRENDE RB0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GOTO PULSASTOP ; IR A PULSASTOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; APAGA CLRF PORTB GOTO PULSAMARCHA
INCLUDE <lcd_4bit.INC> INCLUDE <RETARDOS.INC> INCLUDE <LCD_MENS.INC> END

BCF PORTB,0 CALL Retardo_500ms BSF PORTB,2 CALL LCD_Linea1 MOVLW Mensaje2 CALL LCD_Mensaje CALL LCD_Linea2 MOVLW Mensaje4 CALL LCD_Mensaje

REGISTROS
Un registro o una celda de memoria es un circuito electrnico que puede memorizar el estado de un byte.

TCNICOS INDUSTRIALES

71 /112

MICROCONTROLADORES PIC

REGISTROS SFR
A diferencia de los registros que no tienen ninguna funcin especial y predeterminada, cada microcontrolador dispone de un nmero de registros de funciones especiales (SFR), con la funcin predeterminada por el fabricante. Sus bits estn conectados a los circuitos internos del microcontrolador tales como temporizadores, convertidores A/D, osciladores entre otros, lo que significa que directamente manejan el funcionamiento de estos circuitos, o sea del microcontrolador.Imagnese ocho interruptores que manejan el funcionamiento de un circuito pequeo dentro del microcontrolador. Los registros SFR hacen exactamente lo mismo.

En otras palabras, el estado de los bits de registros se fija dentro de programa, los registros SFR dirigen los pequeos circuitos dentro del microcontrolador, estos circuitos se conectan por los pines del microcontrolador a un dispositivo perifrico utilizado para... Bueno, depende de usted.

PUERTOS DE ENTRADA/SALIDA (E/S)


TCNICOS INDUSTRIALES 72 /112

MICROCONTROLADORES PIC
Para hacer til un microcontrolador, hay que conectarlo a un dispositivo externo, o sea, a un perifrico. Cada microcontrolador tiene uno o ms registros (denominados puertos) conectados a los pines en el microcontrolador. Por qu se denominan como puertos de entrada/salida? Porque usted puede cambiar la funcin de cada pin como quiera. Por ejemplo, usted desea que su dispositivo encienda y apague los tres seales LEDs y que simultneamente monitoree el estado lgico de 5 sensores o botones de presin. Uno de los puertos debe estar configurado de tal manera que haya tres salidas (conectadas a los LEDs) y cinco entradas (conectadas a los sensores). Eso se realiza simplemente por medio de software, lo que significa que la funcin de algn pin puede ser cambiada durante el funcionamiento.

Una de las caractersticas ms importantes de los pines de entrada/salida (E/S) es la corriente mxima que pueden entregar/recibir. En la mayora de los microcontroladores la corriente obtenida de un pin es suficiente para activar un LED u otro dispositivo de baja corriente (10-20mA). Mientras ms pines de E/S haya, ms baja es la corriente mxima de un pin. En otras palabras, todos los puertos de E/S comparten la corriente mxima declarada en la hoja de especificacin tcnica del microprocesador.

Otra caracterstica importante de los pines es que pueden disponer de los resistores pull-up. Estos resistores conectan los pines al polo positivo del voltaje de la fuente de alimentacin y su efecto se puede ver al configurar el pin como una entrada conectada a un interruptor mecnico o a un botn de presin. Las ltimas versiones de los microcontroladores tienen las resistencias pull-up configurables por software.

Cada puerto de E/S normalmente est bajo el control de un registro SFR especializado, lo que significa que cada bit de ese registro determina el estado del pin correspondiente en el el microcontrolador. Por ejemplo, al escribir un uno lgico

TCNICOS INDUSTRIALES

73 /112

MICROCONTROLADORES PIC
(1) a un bit del registro de control (SFR), el pin apropiado del puerto se configura automticamente como salida. Eso significa que el voltaje llevado a ese pin se puede leer como 0 o 1 lgico. En caso contrario, al escribir 0 al registro SFR, el pin apropiado del puerto se configura como salida. Su voltaje (0V o 5V) corresponde al estado del bit apropiado del registro del puerto.

UNIDAD DE MEMORIA
La unidad de memoria es una parte del microcontrolador utilizada para almacenar los datos. La manera ms fcil de explicarlo es compararlo con un armario grande con muchos cajones. Si marcamos los cajones claramente, ser fcil acceder a cualquiera de sus contenidos al leer la etiqueta en la parte delantera del cajn.

De manera similar, cada direccin de memoria corresponde a una localidad de memoria. El contenido de cualquier localidad se puede leer y se le puede acceder al direccionarla. La memoria se puede escribir en la localidad o leer.

Hay varios tipos de memoria dentro del microcontrolador:

MEMORIA ROM (READ ONLY MEMORY) - MEMORIA DE SLO LECTURA


La memoria ROM se utiliza para guardar permanentemente el programa que se est ejecutando. El tamao de programa que se puede escribir depende del tamao de esta memoria. Los microcontroladores actuales normalmente utilizan el direccionamiento de 16 bits, que significa que son capaces de direccionar hasta 64 Kb de memoria, o sea 65535 localidades. Por ejemplo, si usted es principiante, su programa exceder pocas veces el lmite de varios cientos de instrucciones. Hay varios tipos de memoria ROM.

Rom de mscara (enmascarada) - MROM

TCNICOS INDUSTRIALES

74 /112

MICROCONTROLADORES PIC
La ROM enmascarada es un tipo de ROM cuyo contenido es programado por el fabricante. El trmino de mscara viene del proceso de fabricacin, donde las partes del chip se plasman en las mascaras utilizadas durante el proceso de fotolitografa. En caso de fabricacin de grandes series, el precio es muy bajo. Olvide la idea de modificarla...

OTP ROM (One Time Programmable ROM) - ROM programable una sola vez
La memoria programable una sola vez permite descargar un programa en el chip, pero como dice su nombre, una sola vez. Si se detecta un error despus de descargarlo, lo nico que se puede hacer es descargar el programa correcto en otro chip.

UV EPROM (UV Erasable Programmable ROM) - ROM programable borrable por rayos ultravioleta

El encapsulado de este microcontrolador tiene unaventana reconocible en la parte alta. Eso permite exponer la superficie del chip de silicio a la luz de ultravioleta y borrar el programa completamente en varios minutos. Luego es posible descargar un nuevo programa en l.

La instalacin de esta ventana es complicada, lo que por supuesto afecta al precio. Desde nuestro punto de vista, desgraciadamente, de manera negativa...

Memoria Flash
Este tipo de memoria se invent en los aos 80 en los laboratorios de la compaa INTEL, como forma desarrollada de la memoria UV EPROM. Ya que es posible escribir y borrar el contenido de esta memoria prcticamente un nmero ilimitado de veces, los microcontroladores con memoria Flash son perfectos para estudiar, experimentar y para la fabricacin en pequea escala. Por la gran popularidad de esta memoria, la mayora de los microconroladores se fabrican con tecnologa flash hoy en da. Si usted va a comprar un microcontrolador, ste es en definitiva la opcin perfecta!

MEMORIA RAM (RANDOM ACCESS MEMORY) - MEMORIA DE ACCESO ALEATORIO


Al apagar la fuente de alimentacin, se pierde el contenido de la memoria RAM. Se utiliza para almacenar temporalmente los datos y los resultados inmediatos creados y utilizados durante el funcionamiento del microcontrolador. Por ejemplo, si el programa ejecuta la adicin (de cualquier cosa) es necesario tener un registro que

TCNICOS INDUSTRIALES

75 /112

MICROCONTROLADORES PIC
representa lo que se llama suma en vida cotidiana. Con tal propsito, uno de los registros de la RAM es denominado suma y se utiliza para almacenar los resultados de la adicin.

MEMORIA EEPROM (ELECTRICALLY ERASABLE PROGRAMMABLE ROM) - ROM PROGRAMABLE Y BORRABLE ELCTRICAMENTE
El contenido de la EEPROM se puede cambiar durante el funcionamiento (similar a la RAM), pero se queda permanentemente guardado despus de la prdida de la fuente de alimentacin (similar a la ROM). Por lo tanto, la EEPROM se utiliza con frecuencia para almacenar los valores creados durante el funcionamiento, que tienen que estar permanentemente guardados. Por ejemplo, si usted ha diseado una llave electrnica o un alarma, sera estupendo permitir al usuario crear e introducir una contrasea por su cuenta. Por supuesto, la nueva contrasea tiene que estar guardada al apagar la fuente de alimentacin. En tal caso una solucin perfecta es el microcontrolador con una EEPROM embebida.

INTERRUPCIN
La mayora de programas utilizan interrupciones durante ejecucin de programa regular. El propsito del microcontrolador generalmente consiste en reaccionar a los cambios en su entorno. En otras palabras, cuando ocurre algo, el microcontrolador reacciona de alguna manera... Por ejemplo, al apretar el botn del mando a distancia, el microcontrolador lo registra y responde al comando cambiando de canal, subiendo o bajando el volumen etc. Si el microcontrolador pasar la mayora del tiempo comprobando varios botones sin parar - las horas, los das, esto no sera nada prctico.

Por lo tanto, el microcontrolador aprendi un truco durante su evolucin. En vez de seguir comprobando algn pin o bit, el microconrolador deja su trabajo de esperar a un expertoque reaccionar slo en caso de que suceda algo digno de atencin.

La seal que informa al procesador central acerca de tal acontecimiento se denomina INTERRUPCIN.

UNIDAD CENTRAL DE PROCESAMIENTO (CENTRAL PROCESSOR UNIT - CPU)


Como indica su nombre, esto es una unidad que controla todos los procesos dentro del microcontrolador. Consiste en varias unidades ms pequeas, de las que las ms importantes son:

Decodificador de instrucciones es la parte que descodifica las instrucciones del programa y acciona otros circuitos basndose en esto. El conjunto de instrucciones que es diferente para cada familia de microcontrolador expresa las capacidades de este circuito; Unidad lgica aritmtica (Arithmetical Logical Unit - ALU) realiza todas las operaciones matemticas y lgicas sobre datos; y Acumulador o registro de trabajo. Es un registro SFR estrechamente relacionado con el funcionamiento de la ALU. Es utilizado para almacenar todos los datos sobre los que se debe realizar alguna operacin (sumar, mover). Tambin almacena los resultados preparados para el procesamiento futuro. Uno de los registros SFR, denominado Registro Status (PSW), est estrechamente relacionado con el acumulador. Muestra el estado

TCNICOS INDUSTRIALES

76 /112

MICROCONTROLADORES PIC
de un nmero almacenado en el acumulador (el nmero es mayor o menor que cero etc.) en cualquier instante dado.

BUS
El bus est formado por 8, 16 o ms cables. Hay dos tipos de buses: el bus de direcciones y el bus de datos. El bus de direcciones consiste en tantas lneas como sean necesarias para direccionar la memoria. Se utiliza para transmitir la direccin de la CPU a la memoria. El bus de datos es tan ancho como los datos, en este caso es de 8 bits o lneas de ancho. Se utiliza para conectar todos los circuitos dentro del microcontrolador.

COMUNICACIN EN SERIE
La conexin paralela entre el microcontrolador y los perifricos a travs de los puertos de entrada/salida es una solucin perfecta para las distancias cortas - hasta varios metros. No obstante, en otros casos cuando es necesario establecer comunicacin entre dos dispositivos a largas distancias no es posible utilizar la conexin paralela. En vez de eso, se utiliza la conexin en serie.

Hoy en da, la mayora de los microcontroladores llevan incorporados varios sistemas diferentes para la comunicacin en serie, como un equipo estndar. Cul de estos sistemas se utilizar en un caso concreto, depende de muchos factores, de los que ms importantes son:

Con cuntos dispositivos el microcontrolador tiene que intercambiar los datos? Cul es la velocidad del intercambio de datos obligatoria? Cul es la distancia entre los dispositivos? Es necesario transmitir y recibir los datos simultneamente?

TCNICOS INDUSTRIALES

77 /112

MICROCONTROLADORES PIC

Una de las cosas ms importantes en cuanto a la comunicacin en serie es el Protocolo que debe ser estrictamente observado. Es un conjunto de reglas que se aplican obligatoriamente para que los dispositivos puedan interpretar correctamente los datos que intercambian mutuamente. Afortunadamente, los microcontroladores se encargan de eso automticamente, as que el trabajo de programador/usuario es reducido a la escritura y lectura de datos.

VELOCIDAD DE TRANSMISIN SERIAL


La velocidad de transmisin serial (baud rate) es el trmino utilizado para denotar el nmero de bits transmitidos por segundo [bps]. Fjese que este trmino se refiere a bits, y no a bytes! El protocolo normalmente requiere que cada byte se transmita junto con varios bits de control. Eso quiere decir que un byte en un flujo de datos serial puede consistir en 11 bits. Por ejemplo, si velocidad de transmisin serial es 300 bps un mximo de 37 y un mnimo de 27 bytes se pueden transmitir por segundo.

Los sistemas de comunicacin serial ms utilizados son:

I2C (INTER INTEGRATED CIRCUIT) - CIRCUITO INTER-INTEGRADO


Circuito inter-integrado es un sistema para el intercambio de datos serial entre los microcontroladores y los circuitos integrados especializados de generacin. Se utiliza cuando la distancia entre ellos es corta (el receptor y el transmisor estn normalmente en la misma placa de circuito impreso). La conexin se establece por medio de dos lneas -una se utiliza para transmitir los datos, mientras que la otra se utiliza para la sincronizacin (la seal de reloj). Como se muestra

TCNICOS INDUSTRIALES

78 /112

MICROCONTROLADORES PIC
en la figura, un dispositivo es siempre el principal (master - maestro), el que realiza el direccionamiento de un chip subordinado (slave -esclavo) antes de que se inicie la comunicacin. De esta manera un microcontrolador puede comunicarse con 112 dispositivos diferentes. La velocidad de transmisin serial es normalmente 100 Kb/seg (el modo estndar) o 10 Kb/seg (modo de velocidad de transmisin baja). Recientemente han aparecido los sistemas con la velocidad de transmisin serial 3.4 Mb/sec. La distancia entre los dispositivos que se comunican por el bus I2C est limitada a unos metros.

SPI (SERIAL PERIPHERAL INTERFACE BUS) - BUS SERIAL DE INTERFAZ DE PERIFRICOS


Un bus serial de interfaz de perifricos es un sistema para la comunicacin serial que utiliza hasta cuatro lneas (normalmente solo son necesarias tres) - para recibir los datos, para transmitir los datos, para sincronizar y (opcional) para seleccionar el dispositivo con el que se comunica. Esto es la conexin full duplex, lo que significa que los datos se envan y se reciben simultneamente.

La velocidad de transmisin mxima es mayor que en el sistema de conexin I2C.

UART (UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER) - TRANSMISOR-RECEPTOR ASNCRONO UNIVERSAL


Este tipo de conexin es asncrona, lo que significa que no se utiliza una lnea especial para transmitir la seal de reloj. En algunas aplicaciones este rasgo es crucial (por ejemplo, en mandar datos a distancia por RF o por luz infrarroja). Puesto que se utiliza slo una lnea de comunicacin, tanto el receptor como el transmisor reciben y envan los datos a velocidad misma que ha sido predefinida para mantener la sincronizacin necesaria. Esto es una manera simple de transmitir datos puesto que bsicamente representa una conversin de datos de 8 bits de paralelo a serial. La velocidad de transmisin no es alta, es hasta 1 Mbit/sec.

TCNICOS INDUSTRIALES

79 /112

MICROCONTROLADORES PIC

OSCILADOR

Los pulsos uniformes generados por el oscilador permiten el funcionamiento armnico y sncrono de todos los circuitos del microcontrolador. El oscilador se configura normalmente de tal manera que utilice un cristal de cuarzo o resonador cermico para estabilizacin de frecuencia. Adems, puede funcionar como un circuito autnomo (como oscilador RC). Es importante decir que las instrucciones del programa no se ejecutan a la velocidad impuesta por el mismo oscilador sino varias veces ms despacio. Eso ocurre porque cada instruccin se ejecuta en varios ciclos del oscilador. En algunos microcontroladores se necesita el mismo nmero de ciclos para ejecutar todas las instrucciones, mientras que en otros el tiempo de ejecucin no es el mismo para todas las instrucciones. Por consiguiente, si el sistema utiliza el cristal de cuarzo con una frecuencia de 20 MHZ, el tiempo de ejecucin de una instruccin de programa no es 50 nS, sino 200, 400 o 800 nS dependiendo del tipo del microcontrolador.

CIRCUITO DE ALIMENTACIN
Hay que mencionar dos cosas dignas de atencin con relacin al circuito de la fuente de alimentacin de microcontroladores:

Brown out es un estado potencialmente peligroso que ocurre al apagar el microcontrolador o en caso de que el voltaje de la fuente de alimentacin salga de unos mrgenes debido al ruido elctrico. Como el microcontrolador dispone de varios circuitos que funcionan a niveles de voltaje diferentes, ese estado puede causar un comportamiento descontrolado. Para evitarlo, el microcontrolador normalmente tiene un circuito incorporado para el brown out reset. El circuito reinicia inmediatamente el microcontrolador si el voltaje de alimentacin cae por debajo del lmite. El pin de reset (reinicio), marcado frecuentemente con MCLR (Master Clear Reset), sirve para el reinicio externo del microcontrolador al aplicar un cero (0) o un uno (1) lgico dependiendo del tipo del microcontrolador. En caso de que el circuito brown out no est incorporado, un simple circuito externo para el brown out reset se puede conectar al pin MCLR.

TEMPORIZADORES/CONTADORES

TCNICOS INDUSTRIALES

80 /112

MICROCONTROLADORES PIC
El oscilador del microcontrolador utiliza cristal de cuarzo para su funcionamiento. Aunque no se trata de la solucin ms simple, hay muchas razones para utilizarlo. La frecuencia del oscilador es definida con precisin y muy estable, as que siempre genera los pulsos del mismo ancho, lo que los hace perfectos para medicin de tiempo. Tales osciladores se utilizan en los relojes de cuarzo. Si es necesario medir el tiempo transcurrido entre dos eventos, basta con contar los pulsos generados por este oscilador. Esto es exactamente lo que hace el temporizador.

La mayora de los programas utiliza estos cronmetros electrnicos en miniatura. Generalmente son registros SFR de 8 o 16 bits cuyo contenido se aumenta automticamente con cada pulso. Una vez que se llena el registro, se genera una interrupcin!

Si el temporizador utiliza el oscilador de cuarzo interno para su funcionamiento, es posible medir el tiempo entre dos eventos (el valor de registro en el momento de iniciar la medicin es T1, en el momento de finalizar la medicin es T2, el tiempo transcurrido es igual al resultado de la resta T2 - T1). Si los registros se aumentan con los pulsos que vienen de la fuente externa, tal temporizador se convierte en un contador.

Esto es una explicacin simple de su funcionamiento. Es un poco ms complicado en prctica.

TCNICOS INDUSTRIALES

81 /112

MICROCONTROLADORES PIC
CMO FUNCIONAN LOS TEMPORIZADORES?
En prctica, los pulsos generados por el oscilador de cuarzo son llevados al circuito una vez por cada ciclo de mquina directamente o por el pre-escalador, lo que aumenta el nmero en el registro del temporizador. Si una instruccin (un ciclo de mquina) dura cuatro perodos del oscilador de cuarzo, este nmero ser cambiado un milln de veces por segundo (cada microsegundo) al incorporar al cuarzo que oscila con una frecuencia de 4 MHz.

Es fcil de medir los intervalos de tiempo cortos de la manera descrita anteriormente (hasta 256 microsegundos porque es el mayor nmero que un registro puede contener). Esta obvia desventaja se puede superar de varias maneras: al utilizar el oscilador ms lento, por medio de registros con ms bits, del pre-escalador o de la interrupcin. Las primeras dos soluciones tienen algunas debilidades as que se recomienda utilizar el pre-escalador y/o la interrupcin.

UTILIZAR UN PREESCALADOR EN EL FUNCIONAMIENTO DEL TEMPORIZADOR


Un pre-escalador es un dispositivo electrnico utilizado para dividir la frecuencia por un factor predeterminado. Esto quiere decir que se necesita llevar 1, 2, 4 o ms pulsos a su entrada para generar un pulso a la salida. La mayora de los microcontroladores disponen de uno o ms pre-escaladores incorporados y su tasa de divisin puede ser cambiada dentro del programa. El pre-escalador se utiliza cuando es necesario medir los perodos de tiempo ms largos. Si el temporizador y el temporizador perro guardin comparten un pre-escalador, ste no se puede utilizar por los dos simultneamente.

TCNICOS INDUSTRIALES

82 /112

MICROCONTROLADORES PIC

UTILIZAR UNA INTERRUPCIN EN EL FUNCIONAMIENTO DEL TEMPORIZADOR


Si el registro del temporizador es de 8 bits, el mayor nmero que se puede escribir en l es 255 (en los registros de 16 bits es el nmero 65.535). Si se excede este nmero, el temporizador se reinicia automticamente y el conteo comienza de nuevo en cero. Esto es denominado desbordamiento o sobreflujo (overflow). Permitido por el programa, el desbordamiento puede provocar una interrupcin, lo que abre completamente nuevas posibilidades. Por ejemplo, el estado de registros utilizados para contar segundos, minutos o das puede ser implementado en una rutina de interrupcin. El proceso entero (excepto la rutina de interrupcin) se lleva a cabo internamente, lo que permite que los circuitos principales del microcontrolador funcionen regularmente.

La figura anterior describe el uso de una interrupcin en el funcionamiento del temporizador. Al asignarle un preescalador al temporizador, se producen retrasos de duracin arbitraria con mnima interferencia en la ejecucin del programa principal.

CONTADORES

TCNICOS INDUSTRIALES

83 /112

MICROCONTROLADORES PIC
Si un temporizador se suministra por los pulsos ingresados por el pin de entrada en el microcontrolador, se produce un contador. Evidentemente, es el mismo circuito electrnico. La nica diferencia es que los pulsos para contar se ingresan por el pin de entrada y que su duracin (anchura) no es definida. Por eso, no se pueden utilizar para medicin de tiempo, sino que se utilizan para otros propsitos, por ejemplo: contar los productos en la cadena de montaje, nmero de rotaciones del eje de un motor, pasajeros etc. (dependiendo del sensor utilizado.

TEMPORIZADOR PERRO GUARDIN (WATCHDOG)


El perro guardin es un temporizador conectado a un oscilador RC completamente independiente dentro del microcontrolador.

Si el perro guardin est habilitado, cada vez que cuenta hasta el mximo valor en el que ocurre el desbordamiento del registro se genera una seal de reinicio del microcontrolador y la ejecucin de programa inicia en la primera instruccin. El punto es evitar que eso ocurra al utilizar el comando adecuado.

La idea se basa en el hecho de que cada programa se ejecuta en varios bucles, ms largos o cortos. Si las instrucciones que reinician el temporizador perro guardin se colocan en lugares estratgicos del programa, aparte los comandos que se ejecutan regularmente, el funcionamiento del perro guardin no afectar a la ejecucin del programa. Si por cualquier razn (ruidos elctricos frecuentes en la industria) el contador de programa se queda atrapadodentro de un bucle infinito, el valor del registro continuar aumentado por el temporizador perro guardin alcanzar el mximo valor, el registro se desbordar y, aleluya!Ocurre el reinicio!

TCNICOS INDUSTRIALES

84 /112

MICROCONTROLADORES PIC

CONVERTIDOR A/D

Las seales del mundo real son muy diferentes de las que entiende el microcontrolador (ceros y unos), as que deben ser convertidas para que el microcontrolador pueda entenderlas. Un convertidor analgico-digital es un circuito electrnico encargado de convertir las seales continuas en nmeros digitales discretos. En otras palabras, este circuito convierte un nmero real en un nmero binario y se lo enva a la CPU para ser procesado. Este mdulo se utiliza para medir el voltaje en el pin de entrada.

TCNICOS INDUSTRIALES

85 /112

MICROCONTROLADORES PIC
El resultado de esta medicin es un nmero (el valor digital) utilizado y procesado ms tarde en el programa.

ARQUITECTURA INTERNA
Todos los microcontroladores actuales utilizan uno de dos modelos bsicos de arquitectura denominados Harvard y von-Neumann.

Son dos maneras diferentes del intercambio de datos entre la CPU y la memoria.

Arquitectura de von-Neumann

TCNICOS INDUSTRIALES

86 /112

MICROCONTROLADORES PIC
Los microcontroladores que utilizan la arquitectura von-Neumann disponen de un solo bloque de memoria y de un bus de datos de 8 bits. Como todos los datos se intercambian por medio de estas 8 lneas, este bus est sobrecargado, y la comunicacin por si misma es muy lenta e ineficaz. La CPU puede leer una instruccin o leer/escribir datos de/en la memoria. Los dos procesos no pueden ocurrir a la vez puesto que las instrucciones y los datos utilizan el mismo bus. Por ejemplo, si alguna lnea de programa dice que el registro de la memoria RAM llamado SUM debe ser aumentado por uno (instruccin: incf SUMA), el microcontrolador har lo siguiente:

1.
2. 3.

Leer la parte de la instruccin de programa que especifica QU es lo que debe realizar (en este caso es la instruccin para incrementar incf) Seguir leyendo la misma instruccin que especifica sobre CUL dato lo debe realizar (en este caso es el contenido del registro SUMA) Despus de haber sido incrementado, el contenido de este registro se debe escribir en el registro del que fue ledo (direccin del registro SUMA)

El mismo bus de datos se utiliza para todas estas operaciones intermedias.

ARQUITECTURA DE HARVARD

Los microcontroladores que utilizan esta arquitectura disponen de dos buses de datos diferentes. Uno es de 8 bits de ancho y conecta la CPU con la memoria RAM. El otro consiste en varias lneas (12, 14 o 16) y conecta a la CPU y la memoria ROM. Por consiguiente, la CPU puede leer las instrucciones y realizar el acceso a la memoria de datos a la vez. Puesto que todos los registros de la memoria RAM son de 8 bits de ancho, todos los datos dentro del microcontrolador que se intercambian son de la misma anchura. Durante el proceso de la escritura de programa, slo se manejan los datos de 8 bits. En otras palabras, todo lo que usted podr cambiar en el programa y a lo que podr afectar ser de 8 bits de ancho. Todos los programas escritos para estos microcontroladores sern almacenados en la memoria ROM interna del microcontrolador despus de haber sido compilados a cdigo mquina. No obstante, estas localidades de memoria ROM no tienen 8, sino 12, 14 o 16 bits. 4, 6 o 8 bits adicionales representan una instruccin que especifica a la CPU qu hacer con los datos de 8 bits.

Las ventajas de este diseo son las siguientes:

TCNICOS INDUSTRIALES

87 /112

MICROCONTROLADORES PIC
Todos los datos en el programa son de un byte (8 bits) de ancho. Como un bus de datos utilizado para lectura de programa tiene unas lneas ms (12, 14 o 16), tanto la instruccin como el dato se pueden leer simultneamente al utilizar estos bits adicionales. Por eso, todas las instrucciones se ejecutan en un ciclo salvo las instrucciones de salto que son de dos ciclos. El hecho de que un programa (la ROM) y los datos temporales (la RAM) estn separados, permite a la CPU poder ejecutar dos instrucciones simultneamente. Dicho de manera sencilla, mientras que se realiza la lectura o escritura de la RAM (que marca el fin de una instruccin), la siguiente instruccin se lee por medio de otro bus. En los microcontroladores que utilizan la arquitectura de von-Neumann, nunca se sabe cunta memoria ocupar algn programa. Generalmente, la mayora de las instrucciones de programa ocupan dos localidades de memoria (una contiene informacin sobre QU se debe realizar, mientras que la otra contiene informa cin sobre CUL dato se debe realizar). Sin embargo, esto no es una frmula rgida, sino el caso ms frecuente. En los microcontroladores que utilizan una arquitectura Harvard, el bus de la palabra de programa es ms ancho que un byte, lo que permite que cada palabra de programa est compuesto por una instruccin y un dato. En otras palabras, una localidad de memoria - una instruccin de programa.

JUEGO DE INSTRUCCIONES

El nombre colectivo de todas las instrucciones que puede entender el microcontrolador es llamado Juego de Instrucciones. Cuando se escribe un programa en ensamblador, en realidad se especifican instrucciones en el orden en el que deben ser ejecutadas. La restriccin principal es el nmero de instrucciones disponibles. Los fabricantes aceptan cualquiera de los dos enfoques descritos a continuacin:

RISC (Reduced Instruction Set Computer) - Computadora con Juego de Instrucciones Reducidas
En este caso la idea es que el microcontrolador reconoce y ejecuta slo operaciones bsicas (sumar, restar, copiar etc...) Las operaciones ms complicadas se realizan al combinar stas (por ejemplo, multiplicacin se lleva a cabo al realizar adicin sucesiva). Es como intentar explicarle a alguien con pocas palabras cmo llegar al aeropuerto en una nueva ciudad. Sin embargo, no todo es tan oscuro. Adems, el microcontrolador es muy rpido as que no es posible ver todas las acrobacias aritmticas que realiza. El usuario slo puede ver el resultado final de todas las operaciones. Por ltimo, no es tan difcil explicar dnde est el aeropuerto si se utilizan las palabras adecuadas tales como: a la derecha, a la izquierda, el kilmetro etc.

CISC (Complex Instruction Set Computer) - Computadoras con un juego de instrucciones complejo

TCNICOS INDUSTRIALES

88 /112

MICROCONTROLADORES PIC
CISC es opuesto a RISC! Los microcontroladores diseados para reconocer ms de 200 instrucciones diferentes realmente pueden realizar muchas cosas a alta velocidad. No obstante, uno debe saber cmo utilizar todas las posibilidades que ofrece un lenguaje tan rico, lo que no es siempre tan fcil...

CMO ELEGIR UN MICROCONTROLADOR?


Bueno, si usted es principiante, y ha tomado decisin de trabajar con los microcontroladores. Felicitaciones por la eleccin! No obstante, a primera vista, no es fcil la eleccin del microcontrolador ms adecuado como parece a la primera vista. El problema no es el pequeo rango de dispositivos a elegir, sino todo lo contrario!

Antes de empezar a disear un dispositivo basado en un microcontrolador, tome en cuenta lo siguiente: cuntas entradas/lneas son necesarias para su funcionamiento, realizara el dispositivo otras operaciones adems encender/apagar un rel, necesita algn modulo especializado tal como el de comunicacin en serie, convertidor A/D etc. Cuando usted tiene una clara imagen de lo que quiere, el rango de seleccin se reduce considerablemente, y le queda pensar en el precio. Va a tener varios dispositivos? Varios cientos? Un milln? De todos modos ahora es ms claro.

Si est pensando en todas estas cosas por primera vez, todo le parecer un poco confuso. Por esa razn, vaya paso a paso. Antes que nada, seleccione al fabricante, es decir, la familia de microcontroladores que ofrece. Luego, aprenda a trabajar con un modelo particular. Slo aprenda lo que necesite aprender, no entre demasiado en detalles. Resuelva el problema especfico y le pasar una cosa increble - ser capaz de manejar cualquier modelo del mismo fabricante...

Ms o menos, todo se parece a montar en bicicleta: despus de varias cadas inevitables en el principio, ser capaz de mantener el equilibrio y montar en cualquier otra bicicleta. Por supuesto, nunca se olvida tanto de montar en bicicleta, como de la destreza de programacin!

1.4 MICROCONTROLADORES PIC


Los microcontroladores PIC desarrollados por Microchip Technology son probablemente la mejor opcin si es principiante. Hay varias razones por lo que esto es verdadero...

El nombre verdadero de este microcontrolador es PICmicro (Peripheral Interface Controller), conocido bajo el nombre PIC. Su primer antecesor fue creado en 1975 por la compaa General Instruments. Este chip denominado PIC1650 fue diseado para propsitos completamente diferentes. Diez aos ms tarde, al aadir una memoria EEPROM, este circuito se convirti en un verdadero microcontrolador PIC. Hace unos pocos aos la compaa Microchip Technology fabric la 5 billonsima muestra. Si est interesado en aprender ms sobre eso, siga leyendo.

If you are interested in learning more about it, just keep on reading.

TCNICOS INDUSTRIALES

89 /112

MICROCONTROLADORES PIC
La idea principal de este libro es proporcionar la informacin necesaria al usuario para que sea capaz de utilizar los microcontroladores en la prctica despus de leerlo. Para evitar explicaciones pesadas y las historias infinitas sobre las caractersticas tiles de los microcontroladores diferentes, este libro describe el funcionamiento de un modelo particular que pertenece a la clase media alta. Es PIC16F887 - bastante poderoso para ser digno de atencin y bastante simple para poder ser utilizado por cualquiera. As, los siguientes captulos describen este microcontrolador en detalle y tambin se refieren a la familia PIC entera.
Frecuencia de reloj. [MHz] Resolucin del convertidor A/D

Familia

ROM [Kbytes]

RAM [bytes]

Pines

Entradas A/D

Comparadores

Temporizadore de 8/16 bits

Arquitectura de la gama baja de 8 bits, palabra de instruccin de 12 bits PIC10FXXX PIC12FXXX PIC16FXXX PIC16HVXXX 0.375 0.75 0.75 - 1.5 0.75 - 3 1.5 16 - 24 25 - 38 6-8 8 4-8 4-8 20 20 0-2 0-3 0-3 8 8 8 0-1 0-1 0-2 1x8 1x8 1x8 1x8

25 - 134 14 - 44 25 18 - 20

Arquitectura de la gama media de 8 bits, palabra de instruccin de 14 bits PIC12FXXX PIC12HVXXX PIC16FXXX PIC16HVXXX 1.75 - 3.5 1.75 1.75 - 14 1.75 - 3.5 64 - 128 64 8 8 20 20 20 20 0-4 0-4 0 - 13 0 - 12 10 10 8 or 10 10 1 1 0-2 2

1 - 2 x 8 1 x 16

1 - 2 x 8 1 x 16

64 - 368 14 - 64 64 - 128 14 - 20

1 - 2 x 8 1 x 16 2 x 8 1 x 16

Arquitectura de la gama alta de 8 bits, palabra de instruccin de 16 bits PIC18FXXX PIC18FXXJXX PIC18FXXKXX 4 - 128 8 - 128 8 - 64 256 3936 1024 3936 768 3936 18 - 80 28 - 100 28 - 44 32 - 48 40 - 48 64 4 - 16 10 - 16 10 - 13 10 or 12 10 10 0-3 2 2 0-2x82-3x 0-2x82-3x 1 x 8 3 x 16

Todos los microcontroladores PIC utilizan una arquitectura Harvard, lo que quiere decir que su memoria de programa est conectada a la CPU por ms de 8 lneas. Hay microcontroladores de 12, 14 y 16 bits, dependiendo de la anchura del bus. La tabla anterior muestra las caractersticas principales de estas tres categoras.

Como se puede ver en la tabla de la pgina anterior, salvo los monstruos de 16 bits PIC 24FXXX y PIC 24HXXX todos los microcontroladores tienen la arquitectura Harvard de 8 bits y pertenecen a una de las tres grandes grupos. Por eso, dependiendo del tamao de palabra de programa existen la primera, la segunda y la tercera categora de microcontroladores, es decir microcontroladores de 12, 14 o 16 bits. Puesto que disponen del ncleo similar de 8 bits, todos utilizan el mismo juego de instrucciones y el esqueleto bsico de hardware conectado a ms o menos unidades perifricas.

Los microcontroladores PIC con palabras de programa de 14 bits parecen ser la mejor opcin para los principiantes. Aqu est el porqu...

TCNICOS INDUSTRIALES

90 /112

MICROCONTROLADORES PIC

JUEGO DE INSTRUCCIONES
El juego de instrucciones para los microcontroladores 16F8XX incluye 35 instrucciones en total. La razn para un nmero tan reducido de instrucciones yace en la arquietectura RISC. Esto quiere decir que las instrucciones son bien optimizadas desde el aspecto de la velocidad operativa, la sencillez de la arquitectura y la compacidad del cdigo. Lo malo de la arquitectura RISC es que se espera del programador que haga frente a estas instrucciones. Por supuesto, esto es relevante slo si se utiliza el lenguaje ensamblador para la programacin. Este libro se refiere a la programacin en el lenguaje de alto nivel C, lo que significa que la mayor parte del trabajo ya fue hecho por alguien ms. As, slo se tienen que utilizar instrucciones relativamente simples.

TIEMPO DE EJECUCIN DE INSTRUCCIONES


Todas las instrucciones se ejecutan en un ciclo. La nicas excepciones pueden ser las instrucciones de ramificacin condicional o las instrucciones que cambian el contenido del contador de programa. En ambos casos, dos ciclos de reloj son necesarios para la ejecucin de la instruccin, mientras que el segundo ciclo se ejecuta como un NOP (No operation). Las instrucciones de un ciclo consisten en cuatro ciclos de reloj. Si se utiliza un oscilador de 4 MHz, el tiempo nominal para la ejecucin de la instruccin es 1S. En cuanto a las instrucciones de ramificacin, el tiempo de ejecucin de la instruccin es 2S.

Juego de instrucciones de los microcontroladores PIC de 14 bits:


INSTRUCCIN DESCRIPCIN OPERACIN BANDERA CLK *

Instrucciones para la transmisin de datos MOVLW k MOVWF f MOVF f,d CLRW CLRF f SWAPF f,d Mover literal a W Mover el contenido de W a f Mover el contenido de f a d Borrar el contenido de W Borrar el contenido de f Intercambiar de nibbles en f k -> w W -> f f -> d 0 -> W 0 -> f f(7:4),(3:0) -> f(3:0), (7:4) Z Z Z 1 1 1 1 1 1 2 1, 2 1, 2

Instrucciones aritmtico - lgicas ADDLW k ADDWF f,d SUBLW k SUBWF f,d ANDLW k ANDWF f,d IORLW k IORWF f,d XORWF f,d XORLW k Sumar literal a W Sumar el contenido de W y f Restar W de literal Restar W de f AND W con literal AND W con f OR inclusivo de W con literal OR inclusivo de W con f OR exclusivo de W con literal OR exclusivo de W con f W+k -> W W+f -> d k-W -> W f-W -> d W AND k -> W W AND f -> d W OR k -> W W OR f -> d W XOR k -> W W XOR f -> d C, DC, Z C, DC ,Z C, DC, Z C, DC, Z Z Z Z Z Z Z 1 1 1 1 1 1 1 1 1 1 1, 2 1, 2 1, 2 1, 2 1, 2

TCNICOS INDUSTRIALES

91 /112

MICROCONTROLADORES PIC
INCF f,d DECF f,d RLF f,d RRF f,d COMF f,d Sumar 1 a f Restar 1 a f Rotar F a la izquierda a travs del bit de Acarreo Rotar F a la derecha a travs del bit de Acarreo Complementar f f -> d f+1 -> f f-1 -> f Z Z C C Z 1 1 1 1 1 1, 2 1, 2 1, 2 1, 2 1, 2

Instrucciones orientadas a bit BCF f,b BSF f,b Poner a 0 el bit b del registro f Poner a 1 el bit b del registro f 0 -> f(b) 1 -> f(b) 1 1 1, 2 1, 2

Instrucciones de control de programa BTFSC f,b BTFSS f,b DECFSZ f,d INCFSZ f,d GOTO k CALL k RETURN RETLW k RETFIE Saltar si bit b de registro f es 0 Saltar si bit b de reg. f es 1 Disminuir f en 1. Saltar si el resultado es 0 Incrementar f en 1. Saltar si el resultado es 1 Saltar a una direccin Llamar a una subrutina Retornar de una subrutina Retornar con literal en W Retornar de una interupcin Skip if f(b) = 0 Skip if f(b) = 1 f-1 -> d skip if Z = 1 f+1 -> d skip if Z = 0 k -> PC PC -> TOS, k -> PC TOS -> PC k -> W, TOS -> PC TOS -> PC, 1 -> GIE 1 (2) 1 (2) 1 (2) 1 (2) 2 2 2 2 2 3 3 1, 2, 3 1, 2, 3

Otras instrucciones NOP CLRWDT SLEEP No operacin Reiniciar el temporizador perro guardin Poner en estado de reposo TOS -> PC, 1 -> GIE 0 -> WDT, 1 -> TO, 1 -> PD 0 -> WDT, 1 -> TO, 0 -> PD TO, PD TO, PD 1 1 1

*1 Si un registro de E/S est modificado, el valor utilizado ser el valor presentado en los pines del microcontrolador. *2 Si la instruccin se ejecuta en el registro TMR y si d=1, el pre-escalador ser borrado. *3 Si la instruccin se ejecuta en el registro TMR y si d=1, el pre-escalador ser borrado.

TCNICOS INDUSTRIALES

92 /112

MICROCONTROLADORES PIC

TCNICOS INDUSTRIALES

93 /112

MICROCONTROLADORES PIC
Arquitectura de los microcontroladores PIC de 8 bits. Cules de estos mdulos pertenecern al microcontrolador, depender del tipo de microcontrolador.

TCNICOS INDUSTRIALES

94 /112