Está en la página 1de 35

Curso de Microcontroladores PICs

CONTENIDO

PRACTICA 1 Qu es un microcontrolador? PRACTICA 2 Operaciones en sistema Binario PRACTICA 3 Trabajando en MPLAB

14 17

PRACTICA 4 CIRCUITO 1. Configuracin de un puerto de salida mediante una rutina de retardo 29 PRACTICA 5 CIRCUITO 2. Configuracin de un puerto de entrada PRACTICA 6 CIRCUITO 3. Aplicacin de actuadores a un puerto de salida PRACTICA 7 CIRCUITO 4. Aplicacin de sensores a un puerto de entrada

31

32

34

PRACTICA 1.
Pgina 1 de 35

Curso de Microcontroladores PICs

Qu es un microcontrolador? OBJETIVO Identificar las partes de un microcontrolador y las funciones que cada parte desempea. INTRODUCCION En esta primer parte se intenta proporcionar al lector los aspectos ms importantes que condujeron al estudio y desarrollo de aplicaciones con los microcontroladores de la empresa Americana Microchip quien los denomina PIC y que resultan ser la base de diversas herramientas que es posible construir a un bajo precio y con un desempeo aceptable. Diferencias entre un microprocesador y un microcontrolador. Los microprocesadores son circuitos integrados que realizan operaciones lgicas programadas, para su funcionamiento necesitan una serie de circuitos externos que hacen que todas esas operaciones puedan realizarse en forma ordenada. Internamente un microprocesador tiene una unidad aritmtica lgica que es el corazn del microprocesador, dado que en ella se realizan todas las operaciones. Para que estas operaciones lgicas, se realicen en una secuencia hace falta una seal de un reloj y para ello se pueden colocar pulsos externos que permiten que esto funcione correctamente. Adems, para que los datos presentes en un programa puedan ser cargados en la unidad aritmtica y lgica, son necesarios una serie de registros y acumuladores. De esta manera un microprocesador consta de una unidad aritmtica y lgica, un oscilador y un elemento que haga que todas las operaciones se realicen de una forma tal que siga una secuencia. A este elemento se le denomina contador de programa, dicho contador est en el microprocesador. Posee entonces una unidad aritmtica y lgica, un contador de programa, registros, acumuladores y el oscilador. En cambio, los microcontroladores son circuitos integrados que no precisan elementos externos para que funcionen (mientras que un microprocesador requiere un lugar donde alojar los datos y otro para alojar los programas). El microcontrolador ya contiene en una sola pastilla de su chip, la memoria de programa y de datos para que esto se pueda realizar.

Pgina 2 de 35

Curso de Microcontroladores PICs

Un microcontrolador no es ms que un microprocesador al cual se le ha agregado una memoria de datos, una memoria de programa y a su vez un elemento que le permita conectarse con el mundo exterior, a este nuevo elemento se le denomina interfaz de entradas y salidas de datos e informacin. En otras palabras un microprocesador es un sistema abierto con el que es posible construir una computadora completa con todas las caractersticas que se desee, acoplndole los mdulos necesarios, mientras que un microcontrolador es un sistema cerrado que contiene una computadora completa y de prestaciones limitadas que no es posible modificar, como se puede apreciar en la siguiente figura 1 se muestra la estructura de un sistema abierto basado en un microprocesador.

BUS DE DIRECCIONES

BUS DE DATOS BUS DE CONTROL

MEMORIA CONTROLADOR 1 PERIFRICOS


Teclado, mouse, puertos, monitor, reloj, etc.

CONTROLADOR 2 PERIFRICOS
Impresora, memoria, discos duros y flexibles, etc.

Figura 1. Estructura de un sistema abierto basado en un microprocesador.

Pgina 3 de 35

Curso de Microcontroladores PICs

Puertos de entrada / salida Los microprocesadores PIC16F84A tienen dos puertos de entrada/salida paralelo de usos generales llamados Puerto A y Puerto B. El Puerto A es de cuatro bits y los dems son de 8 bits cada uno.

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 el estado del pin de entrada Diagrama lgico para los microcontroladores PIC16F84

Pgina 4 de 35

Curso de Microcontroladores PICs

PIC16F84A

Conjunto de instrucciones El conjunto de instrucciones de los microprocesadores PIC 16f84A consiste en un pequeo repertorio de solo 33 instrucciones de 12 bits, que pueden ser agrupadas para su estudio en tres a cinco grupos. En este curso se ha optado por clasificarlas, desde el punto de vista del programador, en cinco categoras bien definidas de acuerdo con la funcin y el tipo de operandos involucrados. En primer lugar se agrupan las instrucciones que operan con bytes y que involucran algn registro de la memoria interna. En segundo lugar se analizaran las instrucciones que operan solo sobre el registro W y que permiten cargarle una constante implcita o incluida literalmente en la instruccin (literales). En tercer lugar se agrupan las instrucciones que operan sobre bits individuales de los registros de la memoria interna. En cuarto lugar se clasifican las instrucciones de control de flujo del programa, es decir las que permiten alterar la secuencia lineal de ejecucin de las instrucciones. Por ltimo se agrupan unas pocas instrucciones que llamaremos especiales, cuyas funciones o tipos de operandos son muy especficos y no encajan en ninguna de las clasificaciones anteriores. Instrucciones de Byte que operan con Registros Estas instrucciones pueden ser de simple o doble operando de origen. El primer operando de origen ser siempre el registro seleccionado en la instruccin, el segundo, en caso de existir, ser el registro W. El destino, es decir donde se guardara el resultado, ser el registro seleccionado o el W, segn se seleccione con un bit de la instruccin. El formato genrico de estas instrucciones es el siguiente: 0 1 2 3 4 5 6 d 7 f 8 f 9 f 10 f 11 f

Pgina 5 de 35

Curso de Microcontroladores PICs

Los bits 0 a 4 (5 bits), denominados f permiten seleccionar uno de 32 registros de la memoria interna. El bit 5, denominado d, permite especificar el destino del resultado. Si d = 1 el resultado se guardara en el registro seleccionado. Si d = 0 el resultado se guardara en W. Los bits 6 a 11 identifican la instruccin especifica a realizar. Las instrucciones siguientes son las tres operaciones lgicas de doble operando: ANDWF f,d ;operacin AND lgica, destino = W f IORWF f,d ;operacin OR lgica, destino = W f XORWF f,d ;operacin XOR lgica, destino = W f Los nombres mnemnicos de estas instrucciones provienen de: AND W con F, Inclusive OR W con F y XOR W con F. Las que siguen son las cuatro operaciones aritmticas y lgicas sencillas de simple operando: MOVF f,d ;movimiento de datos, destino = f COMF f,d ;complemento lgico, destino = NOT f INCF f,d ;incremento aritmtico, destino = f + 1 DECF f,d ;decremento aritmtico, destino = f - 1 Los mnemnicos de estas instrucciones provienen de: MOVe File, COMplement File, INCrement File y DECrement File. En las siete instrucciones anteriores el nico bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si el resultado de la operacin es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. A continuacin siguen las dos instrucciones de rotacin de bits a travs del CARRY : RLF f,d ;rotacin a la izquierda, destino = f ROT RRF f,d ;rotacin a la derecha, destino = f ROT En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de cada posicin a la siguiente, en sentido derecho o izquierdo. El desplazamiento es cerrado, formando un anillo, con el bit C (CARRY) de la palabra de estado. En estas dos instrucciones, el nico bit afectado de la palabra de estado del procesador es el bit C, que tomar el valor que tenia el bit 7 o el bit 0, segn sea el sentido del desplazamiento. Estas instrucciones son muy tiles para la manipulacin de bits, y adems para realizar operaciones aritmticas, ya que en numeracin binaria, desplazar un nmero a la izquierda es equivalente a multiplicarlo por 2, y hacia la derecha, a dividirlo por 2.
Pgina 6 de 35

Curso de Microcontroladores PICs

La instruccin siguiente realiza el intercambio de posiciones entre los cuatro bits menos significativos y los cuatro ms significativos (nibble bajo y nibble alto). SWAPF f,d ;intercambia nibbles, destino = SWAP f

Esta instruccin (SWAP File) no afecta ninguno de los bits de la palabra de estado del procesador. Esta instruccin es muy til para el manipuleo de nmeros BCD empaquetados, en los que en un solo byte se guardan dos dgitos BCD (uno en cada nibble). Las dos operaciones que siguen son la suma y la resta aritmticas: ADDWF f,d ;suma aritmtica, destino = f + W SUBWF f,d ;resta aritmtica, destino = f - W Estas operaciones (ADD W a F y SUBstract W de F) afectan a los tres bits de estado C, DC y Z. El bit Z se pone en 1 si el resultado de la operacin es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. La suma se realiza en aritmtica binaria pura sin signo. Si hay un acarreo del bit 7, es decir que el resultado es mayor que 255, el bit C (carry) resulta 1, en caso contrario resulta 0. Si hay un acarreo del bit 3, es decir que la suma de las dos mitades (nibbles) menos significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC (digit carry), en caso contrario se pone en 0. Ejemplos: 1010 0010 1101 0000 + 0100 1111 C DC Z + 0110 1111 C DC Z 1111 0001 0 1 0 0011 1111 1 0 0 La resta se realiza sumando, en binario puro sin signo, el registro f ms el complemento a dos de W (el complemento a 1, o complemento lgico, ms 1) Ejemplos: f W Equivalente a: f 0100 0100 0010 1000
Pgina 7 de 35

0100 0100 0010 1000 C DC Z 0001 1100 1 0 0

0010 1000 0100 0100 C DC Z 1110 0100 0 1 0

Curso de Microcontroladores PICs

cmp.2 W

1101 1000 C DC Z 0001 1100 1 0 0

+ 1011 1100 C DC Z 1110 0100 0 1 0

Los bits de estado C y DC toman el valor normal correspondiente a la suma de f con el complemento a 2 de W. De esta manera el significado para la operacin de resta resulta invertido, es decir que C (carry) es 1 si no hubo desborde en la resta, o dicho de otra manera, si el contenido de W es menor que el de f. El bit DC se comporta de manera similar, es decir que DC es 1 si no hubo desborde en la mitad menos significativa, lo que equivale a decir que el nibble bajo del contenido de W es menor que el del registro f. Las instrucciones que siguen son de simple operando, pero son casos especiales ya que el destino es siempre el registro seleccionado: CLRF f ;borrado de contenido, f = 0 MOVWF f ;copia contenido W f, f = W La instruccin CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0. La instruccin MOVWF (MOVe W a F) no afecta ningn bit de la palabra de estado. Instrucciones de Byte que operan sobre W y Literales Estas instrucciones se refieren todas al registro W, es decir que uno de los operandos de origen y el operando de destino son siempre el registro W. En las instrucciones de este grupo que tienen un segundo operando de origen, este es siempre una constante de programa literalmente incluida en la instruccin, llamada constante literal o simplemente literal. El formato genrico de estas instrucciones es el siguiente : 0 1 2 3 4 k 5 k 6 k 7 k 8 k 9 k 10 k 11 k

Los bits 0 a 7 especifican la constante literal de 8 bits que se utilizara en la operacin. Las tres instrucciones que siguen son las operaciones lgicas tradicionales, similares a las que ya vimos anteriormente, pero realizadas entre una constante de programa y el registro W: IORLW k ; operacin OR lgica, W = W k ANDLW k ; operacin AND lgica, W = W k XORLW k ; operacin XOR lgica, W = W k En estas tres instrucciones (Inclusive OR Literal W, AND Literal W y XOR Literal W) el nico bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si el
Pgina 8 de 35

Curso de Microcontroladores PICs

resultado de la operacin es 00000000, y se pone en 0 si el resultado tiene cualquier otro valor. La instruccin que sigue sirve para cargar una constante de programa en el registro W: MOVLW k ; carga constante en W, W=K

Esta (MOVe Literal W) instruccin no afecta ninguno de los bits de estado del procesador. La instruccin que sigue (CLeaR W) no correspondera incluirla en este grupo, y pertenece en realidad al primero, el de las instrucciones que operan sobre registros, ya que se trata de un caso especial de la instruccin CLRF, con destino W, y f = 0. La incluimos aqu porque como se le ha asignado un mnemnico particular referido especficamente al registro W, creemos que, desde el punto de vista del programador, es ms til verla dentro del grupo de instrucciones referidas a W.

CLRW ; borra el contenido de W, W = 0 Al igual que en la instruccin CLRF, el nico bit de estado afectado es el Z que resulta 1. Instrucciones de Bit El formato genrico de estas instrucciones es el siguiente : 0 1 2 3 4 b 5 b 6 b 7 f 8 f 9 f 10 f 11 f

Los bits 0 a 4 (5 bits), denominados f, permiten seleccionar uno de 32 registros de la memoria interna. Los bits 5 a 7, denominados b, permiten especificar el numero de bit (0 a 7) sobre el que se operara. Estas instrucciones operan solamente sobre el bit especificado, el resto de los bits del registro no son alterados. Estas instrucciones no tienen especificacin de destino, ya que el mismo es siempre el registro seleccionado. BCF f,b ;borra el bit b de f ;bit f(b) = 0 BSF f,b ;coloca en uno el bit b de f ;bit f(b) = 1 Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningn bit de la palabra de estado del procesador. Instrucciones de Control GOTO k ;salto a la posicin k (9 bits) del programa

Pgina 9 de 35

Curso de Microcontroladores PICs

Esta es la tpica instruccin de salto incondicional a cualquier posicin de la memoria de programa (que en la mayora de los microprocesadores convencionales se llama JUMP). La constante literal k es la direccin de destino del salto, es decir la nueva direccin de memoria de programa a partir de la cual comenzarn a leerse las instrucciones despus de ejecutar la instruccin GOTO. Esta instruccin simplemente carga la constante k en el registro PC (contador de programa). La nica complicacin de esta instruccin es que la constante k es de solo 9 bits, mientras que el registro PC es de 11 bits, ya que en el 16C57 debe permitir direccionar una memoria de programa de 2 K. Los dos bits faltantes, bit 9 y 10 del PC, son tomados respectivamente de los bits de seleccin de pgina PA0 y PA1 de la palabra de estado. Este comportamiento particular hace que la memoria de programa aparezca como dividida en paginas de 512 posiciones como se vera ms adelante. El programador debe tener en cuenta que antes de ejecutar una instruccin GOTO es posible que haya que programar los bits PA0 y PA1.

La que sigue es la instruccin de llamado a subrutina: CALL k ;salto a la subrutina en la posicin k (8 bits) Su comportamiento es muy similar al de la instruccin GOTO, salvo que adems de saltar guarda en el stack la direccin de retorno de la subrutina (para la instruccin RETLW). Esto lo hace simplemente guardando en el stack una copia del PC incrementado, antes de que el mismo sea cargado con la nueva direccin k. La nica diferencia con la instruccin GOTO respecto de la forma en la que se realiza el salto, es que en la instruccin CALL la constante k tiene solo 8 bits en vez de 9. En este caso tambin se utilizan PA0 y PA1 para cargar los bits 9 y 10 del PC, pero adems el bit 8 del PC es cargado siempre con 0. Esto hace que los saltos a subrutina solo puedan realizarse a posiciones que estn en las primeras mitades de las paginas mencionadas. El programador debe tener en cuenta este comportamiento y asegurarse de ubicar las posiciones de inicio de las subrutinas en las primeras mitades de las paginas. La instruccin que aparece a continuacin es la de retorno de subrutina: RETLW k ;retorno de subrutina con constante k, W=k

Esta (RETurn con Literal in W) instruccin produce el retorno de subrutina con una constante literal k en el registro W. La operacin que realiza consiste simplemente en sacar del stack un valor y cargarlo en el PC. Ese valor es el PC incrementado antes de realizar el salto, de la ultima instruccin CALL ejecutada, por lo tanto es la direccin de la instruccin siguiente a dicho CALL.. Dado que el stack es de 11 bits, el valor cargado en el PC es una direccin completa, y por lo tanto se puede retornar a cualquier posicin de la memoria de programa, sin importar como estn los bits de seleccin de pagina. Esta instruccin adems carga siempre una constante literal en el registro W. Ya que esta es la nica instruccin de retorno de subrutina de los PIC16C5X, no hay en estos microprocesadores forma de
Pgina 10 de 35

Curso de Microcontroladores PICs

retornar de una subrutina sin alterar el registro W. Por otro lado, y con una metodologa especial de programacin, un conjunto de sucesivas instrucciones RETLW puede ser usado como una tabla de valores constantes incluida en el programa (Ej. : tablas BCD/7 seg., hexa/ASCII, etc.). A continuacin se presentan las dos nicas instrucciones de salteo (skip) condicional. Estas instrucciones son los nicos medios para implementar bifurcaciones condicionales en un programa. Son muy generales y muy poderosas ya que permiten al programa tomar decisiones en funcin de cualquier bit de cualquier posicin de la memoria interna de datos, y eso incluye a los registros de perifricos, los puertos de entrada/salida e incluso la palabra de estado del procesador. Estas dos instrucciones reemplazan y superan a todo el conjunto de instrucciones de salto condicional que poseen los microprocesadores sencillos convencionales (salto por cero, por no cero, por carry, etc.).

BTFSC f,b BTFSS f,b

;salteo si bit = 0, bit = f(0) saltea ;salteo si bit = 1, bit = f(1) saltea

BTFSC (Bit Test File and Skip if Clear) saltea la prxima instruccin si el bit b del registro f es cero. La instruccin BTFSS (Bit Test File and Skip if Set) saltea si el bit es 1. Estas instrucciones pueden usarse para realizar o no una accin segn sea el estado de un bit, o, en combinacin con GOTO, para realizar una bifurcacin condicional. Las instrucciones que siguen son casos especiales de las de incremento y decremento vistas anteriormente. Estas instrucciones podran categorizarse dentro del grupo de instrucciones orientadas a byte sobre registros (primer grupo), ya que efectivamente operan sobre los mismos, y el formato del cdigo de la instruccin responde al de ese grupo, pero, a diferencia de las otras, pueden adems alterar el flujo lineal del programa y por eso se les incluy en este grupo. DECFSZ f,d ;decrementa y saltea s 0, destino= f - 1, = 0 saltea INCFSZ f,d ;incrementa y saltea s 0, destino= f + 1, = 0 saltea Estas dos instrucciones (DECrement File and Skip if Zero, e INCrement File and Skip if Zero) se comportan de manera similar a DECF e INCF, salvo que no afectan a ningn bit de la palabra de estado. Una vez realizado el incremento o decremento, si el resultado es 00000000, el microprocesador salteara la prxima instruccin del programa. Estas instrucciones se utilizan generalmente en combinacin con una instruccin de salto (GOTO), para el diseo de ciclos o lazos (loops) de instrucciones que deben repetirse una cantidad determinada de veces. Instrucciones Especiales
Pgina 11 de 35

Curso de Microcontroladores PICs

En este grupo se reunieron las instrucciones que controlan funciones especficas del microprocesador o que actan sobre registros especiales no direccionados como memoria interna normal. La instruccin que sigue es la tpica NO OPERATION, existente en casi todos los microprocesadores. NOP ;no hace nada, consume tiempo

Esta instruccin solo sirve para introducir una demora en el programa, equivalente al tiempo de ejecucin de una instruccin. No afecta ningn bit de la palabra de estado.

La siguiente es una instruccin especifica de control de los puertos de entrada/salida. TRIS f ;carga el tristate control, TRISf = W Esta instruccin (TRIState) carga el registro de control de los buffers tristate de un puerto de entrada salida (data direccin register), con el valor contenido en W. El parmetro f debe ser la direccin de memoria interna del puerto, aunque el valor W no ser cargado en el puerto sino en el registro de tristate del mismo. Los valores validos para f son 4 y 5 en los 16C54/56 y 4, 5 y 6 en los 16C55/57. Esta instruccin no afecta ningn bit de la palabra de estado. La siguiente instruccin sirve para programar el registro OPTION que controla el RTCC y prescaler OPTION ;carga el registro OPTION, OPTION = W El registro OPTION no es accesible como memoria interna y solo se lo puede programar con esta instruccin. Esta instruccin no afecta ningn bit de la palabra de estado. La instruccin que sigue borra el contador del watch dog timer. Este registro tampoco esta accesible como memoria, y esta es la nica instruccin que lo modifica. CLRWDT ;borra el watch dog timer, WDT = 0 Esta instruccin, adems, coloca en uno los bits PD (power down) y TO (time-out) de la palabra de estado.

Pgina 12 de 35

Curso de Microcontroladores PICs

La siguiente es una instruccin especial de control del microcontrolador que lo pone en el modo power down. En este modo el microprocesador se detiene, el oscilador se apaga, los registros y puertos conservan su estado, y el consumo se reduce al mnimo. La nica forma de salir de este estado es por medio de un reset o por time-out del watch dog timer. SLEEP ;coloca el C en modo sleep, WDT = 0 Esta instruccin, adems, borra el bit PD (power down) y setea el bit TO (time-out) de la palabra de estado.

Resumen de instrucciones (clasificacin segn el fabricante en tres grupos): Instrucciones orientadas a byte:

Instrucciones orientadas a bit:

Pgina 13 de 35

Curso de Microcontroladores PICs

Instrucciones orientadas a literal y control:

En esta tabla de resumen del conjunto de instrucciones se pueden observar los mnemnicos, la explicacin, el nmero de ciclos, el cdigo de mquina y los bits afectados del registro STATUS para cada una de las instrucciones. PRACTICA 2. OPERACIONES EN SISTEMA BINARIO OBJETIVO Que el alumno aprenda a realizar operaciones aritmticas en sistema binario para ser aplicados dentro de la programacin de microcontroladores. INTRODUCCION La principal utilizacin de las operaciones con nmeros binarios consiste en redireccionamientos de registros o localidades de memoria. DESARROLLO Suma o adicin en binario La tabla de sumar es ms sencilla en binario que en decimal. Slo hay que recordar cuatro combinaciones posibles: + 0 1 0 0 1 1 1 0+1

Pgina 14 de 35

Curso de Microcontroladores PICs

Las sumas 0 + 0, 0 + 1 y 1 + 0 son evidentes. Pero la suma 1 + 1, se sabe que es 2 en el sistema decimal, debe escribirse en binario con dos cifras (10) y, por lo tanto, 1 + 1 es 0 y se arrastra una unidad, que se suma a la posicin siguiente a la izquierda.

Sustraccin en binario. La tcnica de la resta en binario es muy similar a la misma operacin en el sistema decimal, pero conviene repasar la operacin de restar en decimal para comprender la operacin binario, que es ms sencilla. Los trminos que intervienen en la resta se llaman minuendo, sustraendo y diferencia. 0 0 0 1 1+1 Las restas 0 0, 1 0 y 1 1 son evidentes. 1 1 0

La resta 0 1 se resuelve, igual que en sistema decimal, tomando una unidad prestada de la posicin siguiente: 10 1. Esa unidad prestada debe devolverse, sumndola a la posicin siguiente. A pesar de lo sencillo que es el procedimiento de restar, es fcil confundirse. Debido a que siempre se ha utilizado el sistema decimal, por ello las restas se hacen mecnicamente y se ha perdido el significado del arrastre. Para simplificar las restas y reducir la posibilidad de cometer errores se propone la siguiente metodologia: Dividir los nmeros largos en grupos. En el siguiente ejemplo, se observa cmo se divide una resta larga en tres restas cortas. 100110011101 010101110010 010000101011 = 1001 1001 1101 0101 0111 0010 0100 0010 1011

Multiplicacin binaria La multiplicacin en binario es ms fcil que en cualquier otro sistema de numeracin. Como los factores de la multiplicacin slo pueden ser CEROS o UNOS, el producto slo puede ser CERO o UNO.

Pgina 15 de 35

Curso de Microcontroladores PICs

x 0 1

0 0 0

1 0 1

En una computadora, sin embargo, la operacin de multiplicar se realiza mediante sumas repetidas. Eso crea algunos problemas en la programacin porque cada suma de dos UNOS origina un arrastre, que se resuelven contando el nmero de UNOS y de arrastres en cada columna. Si el nmero de UNOS es par, la suma es un CERO y si es impar, un UNO. Luego, para determinar los arrastres a la posicin superior, se cuentan las parejas de UNOS. Veamos un ejemplo de multiplicacin: 110100010101 x 1101 110100010101 000000000000 110100010101 1010101000010001 Para comprobar que el resultado sea correcto, convertimos los factores y el resultado al sistema decimal: 3349*13 = 43537

Divisin Binaria As como el producto, la divisin es muy fcil de realizar, porque no son posibles en el cociente otras cifras sino UNOS y CEROS. Considere el ejemplo 42/6 = 7, realizado en binario: 101010 -110 1001 -110 0110 110 110 111

Se intenta dividir el dividendo por el divisor, empezando por tomar en ambos el mismo nmero de cifras (100 entre 110, en el ejemplo). Si no puede dividirse, se intenta la divisin tomando un digito ms (1001 entre 100).
Pgina 16 de 35

Curso de Microcontroladores PICs

Si la divisin es posible, entonces el divisor podr estar contenido UNA VEZ en el dividendo, es decir, la primera cifra del cociente es un UNO. En ese caso, el resultado de multiplicar el divisor por 1 es el propio divisor. Restamos las cifras del dividendo del divisor y bajamos la cifra siguiente.

PRACTICA 3. Trabajando con MPLAB OBJETIVO Que el alumno aprenda a desarrollar un programa en el entorno MPLAB para posteriormente grabarlo en el PIC. Qu es el MPLAB ? EL MPLAB es un Entorno de Desarrollo Integrado (Integrated Development Environment, IDE) que corre en Windows , mediante el cual puede desarrollar aplicaciones para los microcontroladores de las familias PIC 16/17. EL MPLAB permite 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. Esta prctica est encaminada para ser empleada como gua en el ambiente de trabajo del software MPLAB IDE de Microchip, destacando los pasos necesarios en la creacin, elaboracin, compilacin y simulacin de un proyecto de trabajo. A continuacin se presentarn cada uno de ellos.

Pgina 17 de 35

Curso de Microcontroladores PICs

CREAR UN NUEVO PROYECTO Los pasos se describen a continuacin: 1. Entrar a MPLAB IDE
2. Seleccionar el dispositivo presionado en el men de herramientas el icono

CONFIGUREy presionar la opcin select device el cual desplegar una ventana donde aparecer una lista con los posibles elementos a emplear; elegir el microcontrolador designado. Dicha pantalla de seleccin se muestra en la figura 1.

Figura 1. Ventana de seccin de dispositivo. 3. El proyecto nuevo se crea dando clic en el men PROJECT y seleccionando la opcin new de la barra de herramientas principal, posteriormente es necesario asignarle nombre y especificar una direccin para su ubicacin. NOTA: Se recomienda crear una carpeta de raz en la unidad c directamente, de lo contrario puede generarse confusin en los direccionamientos de la maquina. Para hacerlo se presiona browse y se crea una carpeta nueva. Ver figura 3.

Pgina 18 de 35

Curso de Microcontroladores PICs

Figura 2. Visualizacin de men PROJECT

Figura 3. Visualizacin del cuadro de dialogo del nuevo proyecto. Una vez asignado el nombre y la ubicacin del proyecto aparece la ventana Project de Windows situada en el extremo izquierdo del rea de trabajo, dicha ventana se presenta en la figura 4.

Pgina 19 de 35

Curso de Microcontroladores PICs

Figura 4. Visualizacin de la venta Project de Windows Para comenzar a cargar el programa se selecciona de la barra principal la opcin FILE y se elige New, esto se observa en la figura 5.

Figura 5. Men File Posteriormente se despliega una ventana dentro de la cual se transcribe el programa anteriormente elaborado figura 6. La caracterstica primordial de esta ventana es que inicialmente se dificulta la visualizacin de errores de escritura, sintaxis u orden de
Pgina 20 de 35

Curso de Microcontroladores PICs

comandos, aparece el texto en color negro y no tiene efecto alguno sobre la secuencia del programa. Nota: el cdigo se guarda desde el men file-save as en la carpeta raz con el mismo nombre designado al proyecto.

Figura 6. Muestra de ventanas para cargar un programa NOTA: ntese que la hoja de trabajo sobre la que se descarga el programa tiene extensin asm. Cuando es grabada la hoja de trabajo, esta tiene que ser dada de alta en el proyecto, lo cual se logra desde la ventana donde iniciamos el proyecto o directamente en el men Proyect y despus en el submen Add Files to Proyect, como se muestra en las figuras 7 y 8, respectivamente.

Pgina 21 de 35

Curso de Microcontroladores PICs

Figura 7. Ventana para dar de alta la hoja de trabajo en el proyecto

Figura 8. Otra ventana para dar de alta la hoja de trabajo en el proyecto Cuando ha sido seleccionado el submen Add Files to Proyect desplegar una ventana en donde podremos seleccionar el archivo en el que vamos a trabajar, como lo muestra la figura 9.

Pgina 22 de 35

Curso de Microcontroladores PICs

Figura 9. Ventana para seleccionar el archivo en el que se trabajar. Al dar de alta el archivo de trabajo, se observar en la opcin source files que fue aadido este archivo.

Fig. 10. Muestra que ya fue aadido el archivo de trabajo Una vez dado de alta el archivo de trabajo podemos empezar a capturar los programas.

Pgina 23 de 35

Curso de Microcontroladores PICs

Capture el siguiente ejemplo:


;PROGRAMA QUE HACE PARPADEAR 4 LEDS CADA 200 MILISEGUNDOS INCLUDE P16F84A.INC ; AADE EL ARCHIVO QUE CONTIENE LOS NOMBRES DE LOS REGISTROS INTERNOS __CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC ; CONFIGURACION DEL PIC ; CODE PROTECCION OFF, POWER UP TIMER ON, WATCH DOG TIMER OFF y OSCILADOR XT ;=============================================================== ;DECLARACION DE VARIABLES ;=============================================================== CONT TEMP1 TEMP2 EQU EQU equ 0X0C 0X0D 0x0E

;=============================================================== ;INICIO ;=============================================================== ORG PROGRAMA BSF BCF BCF BCF BCF BCF INICIO 0 STATUS,RP0 TRISB,0 ;Puerto TRISB,1 ;Puerto TRISB,2 ;Puerto TRISB,3 ;Puerto STATUS,RP0 ;INICIA EL PROGRAMA DESDE LA LOCALIDAD CERO DE LA MEMORIA DEL B0 B1 B2 B3 como como como como salida salida salida salida

BCF PORTB,0 ;Enciende B0 CALL RETARDO BCF PORTB,2 ;Enciende B2 CALL RETARDO BCF PORTB,3 ;Enciende B3 CALL RETARDO BCF PORTB,1 ;Enciende B1 CALL RETARDO BSF PORTB,0 ;Apaga B0 CALL RETARDO BSF PORTB,2 ;Apaga B2 CALL RETARDO BSF PORTB,3 ;Apaga B3 CALL RETARDO BSF PORTB,1 ;Apaga B1 CALL RETARDO GOTO INICIO RETARDO MOVWF BUCLE MOVLW MOVWF BUCLE1 DECFSZ GOTO DECFSZ GOTO RETURN END MOVLW D'255' TEMP1 D'255' TEMP2 TEMP2,F BUCLE1 TEMP1,F BUCLE

Pgina 24 de 35

Curso de Microcontroladores PICs

Cuando se guarda el programa, la maquina reconoce el texto y lo decodifica cambiando de color la sintaxis, permitiendo as, identificar cdigos, libreras, comentarios as como visualizar errores de escritura y de orden de cdigos. COMPILAR PROYECTO La compilacin de un proyecto es uno de los pasos fundamentales en la grabacin de un programa dentro del Pic; esta opcin permite al usuario identificar los errores en la sintaxis y en algunos casos, en la coherencia del programa. EL MPLAB despliega mensajes de advertencia en los direccionamientos de los registros y se configura el uso antes de grabarlo al micro controlador para proteger el dispositivo. Por otro lado se recaban todos los datos requeridos por el proyecto como libreras, actualizaciones de los comandos y el programa realizado con las instrucciones necesarias, se hace el programa ms eficiente al eliminar innecesarias. 1. Capturar el programa previamente escrito 2. Seleccionar de la barra principal la opcin Project 3. Elegir la opcin build all o presionar la tecla ctrl + f10 (figura 11). Posteriormente se despliega un cuadro de dialogo donde aparece el estado de la compilacin y el porcentaje que se ha completado (figura 12) al llegar al 100% se despliega otra ventana que muestra los errores si los hay y mensajes o advertencias de compilacin.

Figura 11. Pasos para compilar el proyecto

Pgina 25 de 35

Curso de Microcontroladores PICs

Figura 12. Avance del compilador La figura 13 muestra la ventana que aparece cuando existe una compilacin sin errores en ella se visualiza el mensaje build suceded y la fecha de construccin.

Figura 13. Ventana de compilacin completa y sin errores SIMULACIONES

Pgina 26 de 35

Curso de Microcontroladores PICs

La simulacin es una herramienta muy til dentro del grabado de programas en el microcontrolador debido a que permite al usuario visualizar el comportamiento secuencia desde la misma computadora y sin necesidad de realizar los circuitos electrnicos. Tambin permite verificar subrutinas de tiempo, cambio de estado en los registros tanto internos (propios del programa) como externos (designado por el usuario) as como elegir el inicio de simulacin, seleccin de un bloque de programa o probarlo paso a paso para una visualizacin ms detallada. Tiene la opcin de introducir estmulos externos para sustituir las seales dadas por un microswitch. La aplicacin aplicada es cambiar el estado lgico de 0 a 1 en un pin. Inicialmente se debe agregar a la barra de herramientas los iconos de accin que permiten efectuar la simulacin, para ello es necesario oprimir el botn debugger de la barra de herramientas principal, posteriormente dar clic en select tool y finalmente en mplab sim (figura 14) aparecen los iconos mostrados en la figura 15.

Figura 14. Pasos para agregar iconos de accin Simulacin con WATCH DE LA BARRA DE HERRAMIENTAS SEECCIONAR EL BOTON VIEW Y PRESIONAR LA OPCION WATCH.

Pgina 27 de 35

Curso de Microcontroladores PICs

Figura 15. Botones de accin para simulacin Dentro de la figura 16 se muestran la incorporacin de los registros en los cuales se pueden apreciar los cambios que surgen al efectuar la simulacin.

Figura 16. Visualizacin de registros

Pgina 28 de 35

Curso de Microcontroladores PICs

PRACTICA 4 CIRCUITO 1. Configuracin de un puerto de salida mediante una rutina de retardo

OBJETIVO Que el alumno aprenda a configurar un puerto del PIC como dato de salida y aplique rutinas de retardo. MATERIALES DESARROLLO El circuito bsico de un microcontrolador PIC16F84A es el siguiente:
Pgina 29 de 35

1 Tarjeta protoboard 1 PIC 16F84A 1 Cristal 4 MHz 2 capacitores 33 pF 1 resistencia de 10 kohm 4 resistencias de 330 ohm 4 leds Cable telefnico para armar circuitos

Curso de Microcontroladores PICs

RA2

RA1 RA0 OSC1 2

VDD
5V 10kohm

RA3 RA4

33pF

MCLR OSC2 Vss RB0 RB1 RB2 RB3 Vdd 1 RB7 RB6 RB5 RB4

4MHz

33pF 5V

VDD

PIC16F84A

Como ya se ha visto, los pines de las puertas A y B pueden funcionar como entradas o salidas, segn se requiera. Para esta prctica se realizar un circuito para configurar las puertas RB0, RB1, RB2 y RB4 como salidas, para lo cual deber realizarse el siguiente circuito:

RA2

RA1 RA0 OSC1 2

VDD
5V 10kohm 330ohm

RA3 RA4

33pF

MCLR OSC2 Vss RB0 RB1 RB2 RB3 Vdd 1 RB7 RB6 RB5 RB4

4MHz

33pF 5V

VDD

PIC16F84A

Desarrollar el programa para hacer que los cuatro leds se enciendan al mismo tiempo y apaguen por intervalos de 200 milisegundos.

Pgina 30 de 35

Curso de Microcontroladores PICs

PRACTICA 5 CIRCUITO 2. Configuracin de un puerto de entrada OBJETIVO Que el alumno aprenda a configurar un puerto del PIC para recibir datos de entrada. MATERIALES DESARROLLO Armar el siguiente circuito, utilizando el circuito 1 de la prctica anterior. Circuito 1 2 Push Boton

RA2 RA3 RA4

RA1 RA0 OSC1 2

33pF

VDD
5V 10kohm 330ohm

MCLR OSC2 Vss RB0 RB1 RB2 RB3 Vdd 1 RB7 RB6 RB5 RB4

4MHz

33pF 5V

VDD

PIC16F84A

Pgina 31 de 35

Curso de Microcontroladores PICs

Desarrollar el programa para que cuando se pulse el push boton del puerto A2 se enciendan los leds de los puertos B0 y B1. Y cuando se pulse el push boton del puerto A3 se enciendan los leds de los puertos B2 y B3.

PRACTICA 6 CIRCUITO 3. Aplicacin de actuadores a un puerto de salida OBJETIVO Que el alumno aprenda a activar un relevador mediante el PIC. MATERIALES DESARROLLO Armar el siguiente circuito, utilizando el circuito 2 de la prctica anterior. Circuito 2 2 resistencias de 1 kohm 2 transistores BC547 2 Diodos 1N4001 2 Relevadores 10A/120VAC, 6V DC 1 Regulador 7805 1 foco 127V (de potencia al gusto) 1 clavija 2 metros de cable de cal 18

Pgina 32 de 35

Curso de Microcontroladores PICs

NOTAS DE CIRCUITOS:

COLECTOR
BC547C

BC547

BASE EMISOR COLECTOR EMISOR

BASE

7805
12 Vcd 5 Vcd regulados Desarrollar el programa para que al pulsar el push boton del puerto A2 se encienda el foco instalado en el circuito del puerto B4 y cuando pulse el push boton del puerto A3 se encienda el foco instalado en el circuito del puerto B5.
RA2 RA3 RA4 RA1 RA0 OSC1 2

33pF

VDD
5V 10kohm 330ohm

MCLR OSC2 Vss RB0 RB1 RB2 RB3 Vdd 1 RB7 RB6 RB5 RB4

4MHz

33pF 5V

VDD

PIC16F84A

VDD
12v

FOCO

Q1
BC547C 1N4001

rele

VDD
12v

FOCO2

Q2
BC547C 1N4001

RELE

Pgina 33 de 35

Curso de Microcontroladores PICs

PRACTICA 7 CIRCUITO 4. Aplicacin de sensores a un puerto de entrada

OBJETIVO Que el alumno aprenda a activar un relevador mediante un sensor de presencia. MATERIALES DESARROLLO 100kohm
RA2 RA1 RA3 Armar el330ohm siguiente circuito, utilizando el circuito 3 de la prctica anterior. RA0

Circuito 3 2 led infrarrojo 2 fotodiodo 2 resistencia de 330 ohm 2 resistencia de 10 kohm

5V

infrarrojo

fotodiodo

RA4

OSC1

MCLR OSC2 Vss RB0 RB1 Vdd RB7 RB6 RB5 RB4

100kohm 330ohm 5V

RB2 RB3

PIC16F84A

Pgina 34 de 35

Infrarrojo

Fotodiodo

Curso de Microcontroladores PICs

El programa de la prctica anterior funciona en este mismo circuito, ya que nicamente estamos sustituyendo los push boton por el sensor de presencia. http://es.scribd.com/doc/56559195/Curso-de-fisica-teorica-landau-y-lifshitz-Vol-1Mecanica

Pgina 35 de 35

También podría gustarte