Professional Documents
Culture Documents
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.
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
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
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
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
A=alimentacin
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
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
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
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.
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.
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
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.
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
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
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.
TCNICOS INDUSTRIALES
23 /112
MICROCONTROLADORES PIC
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.
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.
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'
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.
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
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:
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
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
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
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.
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
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
Descripcin
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
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
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
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
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
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
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
.: 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.
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
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
0X20
0X00
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
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
LIST
"P16F628A.INC" 0X20
0X00
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
LIST
"P16F628A.INC" 0X20
0X00
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
"P16F628A.INC" 0X20
0X00
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
"P16F628A.INC" 0X20
0X00
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
TCNICOS INDUSTRIALES
59 /112
MICROCONTROLADORES PIC
PRACTICA DE LABORATORIO N 7
TCNICOS INDUSTRIALES 60 /112
MICROCONTROLADORES PIC
LIST
"P16F628A.INC" 0X20
0X00
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
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
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
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
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
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
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
"P16F628A.INC" 0X20
0X00
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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
Mensajes addwf Mensaje1 DT " MOTOR APAGADO",0X00 Mensaje2 DT "MOTOR ENCENDIDO", 0X00 Mensaje3 DT "START ESTRELLA ", 0x00 Mensaje4 DT "START TRIANGULO ", 0x00
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.
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.
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!
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.
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.
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.
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.
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.
TCNICOS INDUSTRIALES
82 /112
MICROCONTROLADORES PIC
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.
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)
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.
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...
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!
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
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.
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