Anda di halaman 1dari 20

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Programacin del Microcontrolador


El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el cdigo ejecutable y est compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del microcontrolador, el cdigo binario est compuesto por palabras de 12, 14 o 16 bits de anchura. Cada palabra es interpretada por la CPU como una instruccin a ser ejecutada durante el funcionamiento del microcontrolador. Como es ms fcil trabajar con el sistema de numeracin hexadecimal, el cdigo ejecutable se representa con frecuencia como una serie de los nmeros hexadecimales denominada cdigo Hex. A todas las instrucciones que el microcontrolador puede reconocer y ejecutar se le denominan colectivamente Juego de instrucciones. En los microcontroladores PIC con las palabras de programa de 14 bits de anchura, el conjunto de instrucciones tiene 35 instrucciones diferentes

Recopilado por: Ing. Kathleen Stepas 1

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Normalmente los programas se escriben en el lenguaje ensamblador cuando se requiere controlar completamente la ejecucin de programa. Como el proceso de escribir un cdigo ejecutable era

considerablemente arduo, en consecuencia fue creado el primer lenguaje de programacin denominado ensamblador (ASM). El proceso de programacin se hizo un poco ms complicado. Por otro lado, el proceso de escribir un programa dej de ser una pesadilla. Las instrucciones en ensamblador consisten en las abreviaturas con significado. Un programa denominado ensamblador instalado en la PC compila las instrucciones del lenguaje ensamblador a cdigo mquina (cdigo binario). Este programa compila instruccin a instruccin sin optimizacin. La ventaja principal del lenguaje ensamblador es su simplicidad y el hecho de que a cada instruccin le corresponde una localidad de memoria. Como permite controlar todos los procesos puestos en marcha dentro del microcontrolador, este lenguaje de programacin todava sigue siendo popular.

Recopilado por: Ing. Kathleen Stepas 2

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Por otro lado, los programas se ejecutan siempre a alta velocidad y en la mayora de casos no es necesario saber en detalle qu ocurre dentro del microcontrolador. A pesar de todos los lados buenos del lenguaje ensamblador, los programadores siempre han necesitado un lenguaje de programacin similar al lenguaje utilizado en el habla cotidiana. Por ltimo, los lenguajes de programacin de alto nivel (Basic entre otros) fueron creados. La ventaja principal de estos lenguajes es la simplicidad de escribir un programa. Varias instrucciones en ensamblador se sustituyen por una sentencia en Basic. El programador ya no tiene que conocer el conjunto de instrucciones del microcontrolador utilizado. Ya no es posible conocer exactamente cmo se ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar en el programa una secuencia escrita en ensamblador.

Recopilado por: Ing. Kathleen Stepas 3

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

El proceso de escribir un programa en Basic.


Al seleccionar la opcin apropiada, el programa ser compilado en el ensamblador y luego en el cdigo hex que ser cargado en el microcontrolador. Similar al lenguaje ensamblador, un programa especializado e instalado en la PC se encarga de compilar un programa a cdigo mquina. A diferencia del ensamblador, los compiladores para los lenguajes de programacin de alto nivel crean un cdigo ejecutable que no es siempre tan corto como el cdigo escrito en ensamblador. El proceso de la compilacin de programa escrito en Basic en cdigo hex, se describe en la figura.

Recopilado por: Ing. Kathleen Stepas 4

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

TIPOS DE DATOS EN BASIC


Hay varios tipos de datos que se pueden utilizar en el lenguaje de programacin Basic. La tabla de la derecha muestra el rango de valores que estos datos pueden tener cuando se utilizan en su forma bsica. VARIABLES Una variable es un objeto nombrado capaz de contener un dato que puede ser modificado durante la ejecucin de programa. Cada variable se declara bajo un nombre nicoque debe ser un identificador vlido. Por ejemplo, para sumar dos nmeros (nmero1 + nmero2) en el programa, es necesario tener una variable para representar qu es lo que llamamos suma en vida cotidiana. Las variables en Basic son de un tipo, como los mostrados en la tabla, lo que significa que es necesario especificar el tipo de dato que se asignar a la variable. Las variables se almacenan en la memoria RAM y el espacio de memoria ocupado (en bytes) depende de su tipo: Bit .. Requieren 1 Byte de RAM por cada 8 bits. Byte .. Requieren 1 Byte de RAM Word . Requieren 2 Bytes de RAM Dword .. Requieren 4 Bytes de RAM Float .. Requieren 4 Bytes de RAM

Sintaxis: dim nombre_de_variable as type

Recopilado por: Ing. Kathleen Stepas 5

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Si se requieren utilizar arreglos: Dim nombre del Arreglo [Longitud] As Tipo Ejemplo: Dim Mivector[10] As Byte Se crean 10 Elementos (bytes) apuntados por el nombre Mivector, a los cuales se les puede tener acceso mediante la sintxis: Mivector*0+ = 0 Mivector[9] = 127

Dim nombre as constante_expresion Dim INC as 10 Dim DEC as INC*20

SMBOLOS Los smbolos en Basic permiten crear los macros simples sin parmetros. Cualquier lnea de cdigo se puede reemplazar por un solo identificador. Los smbolos pueden aumentar legibilidad y reutilizacin de cdigo cuando se utilizan correctamente. Los smbolos deben ser declarados al principio del mdulo, bajo el nombre del mdulo y la directiva opcional include. El mbito de un smbolo es siempre limitado al mdulo en el que ha sido declarado. symbol nombre_de_smbolo = cdigo

CONSTANTES Las constantes son los nmeros o caracteres cuyo valor no puede ser cambiado durante la ejecucin de programa. A diferencia de las variables, las constantes se almacenan en la memoria ROM del microcontrolador para guardar el mayor espacio posible de la memoria RAM. El compilador reconoce las constantes por sus nombres y el prefijo const. Cada constante se declara bajo un nombre nico que debe ser un identificador vlido. Las constantes pueden ser en formatos decimal, hexadecimal o binario. El compilador los distingue por su prefijo. Si una constante no lleva prefijo, se considera decimal por defecto. Las constantes se declaran en la parte de declaracin del programa o de la rutina. La sintaxis es la siguiente:

symbol ABRIR =120 symbol CERRAR=5 El nombre_de_smbolo debe ser un identificador vlido que se utilizar por todo el cdigo. El especificador cdigo puede ser cualquier lnea de cdigo (literales, asignaciones, llamadas de funcin etc.)

Recopilado por: Ing. Kathleen Stepas 6

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Los smbolos no se almacenan en la memoria RAM. El compilador reemplaza los smbolos por las lneas del cdigo apropiadas asignadas durante la declaracin. OPERADORES RELACIONALES Los operadores relacionales se utilizan para comparar dos variables y determinar la validez de su relacin.

(or) y xor realizan las operaciones lgicas sobre los pares de bits de operandos apropiados. El operador not complementa cada bit de un solo operando. Los operadores de manejo de bits se enumeran en la siguiente tabla:

OPERADORES DE BITS Los operadores lgicos de manejo de bits se realizan sobre los bits de un operando. Se asocian de izquierda a derecha. La nica excepcin es el complemento not que realiza un desplazamiento de derecha a izquierda. Los operadores de manejo de bits y (and), o

Recopilado por: Ing. Kathleen Stepas 7

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

OPERADORES LGICOS: Estos operadores son usados para realizar comparaciones lgicas. Estos permiten establecer rangos en las pruebas condicionales. No deben ser confundidos con los operadores de bits, los operadores lgicos aceptan como argumentos los valores CIERTO y FALSO al igual que su resultado, los cuales, pueden ser usados en pruebas condicionales. FUNCIONES BINARIAS. Los argumentos pueden ser cualquier variable, constante o expresin matemtica vlida.

Recopilado por: Ing. Kathleen Stepas 8

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Modificadores de variables Son utilizados para acceder a bits individuales de una variable. Por ejemplo: usted podra acceder al Byte alto o bajo de una variable predefinida como un Word. Los modificadores de variables se pueden utilizar al momento de hacer una declaracin en tiempo de ejecucin del programa. Sintaxis:

Variable.modificador Dim Sensor as word Dim Valvula_01 As Sensor.LowByte Dim Valvula_02 As Sensor.HighByte

Los modificadores de variables ms usados se indican en la siguiente tabla:

Recopilado por: Ing. Kathleen Stepas 9

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

SENTENCIAS CONDICIONALES Las condiciones son ingredientes comunes de un programa. Las condiciones permiten ejecutar una o varias sentencias dependiendo de validez de una expresin. En otras palabras, Si se cumple la condicin (...), se debe hacer (...). De lo contrario, se debe hacer (...). Una sentencia condicional puede ser seguida por una sola sentencia o por un bloque de sentencias a ser ejecutadas. SENTENCIA CONDICIONAL IF La sintaxis en una forma simple de la sentencia if es:

if expresin then operaciones1 else other operaciones2 end if

Si el resultado de la expresin es verdadero (distinto de 0), las operaciones1 se realizan. De lo contrario, las operaciones2 se realizan. Despus de realizar estas operaciones, el programa contina con la ejecucin.

if expresin then operaciones end if

Si el resultado de la expresin es verdadero (distinto de 0), las operaciones se realizan y el programa contina con la ejecucin. Si el resultado de la expresin es falso (0), las operaciones no se realizan y el programa contina inmediatamente con la ejecucin. El operador if se puede utilizar en combinacin con el operador else:

Recopilado por: Ing. Kathleen Stepas 10

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

SENTENCIAS IF ANIDADAS La sentencia if anidada necesita una atencin adicional. Es una sentencia utilizada dentro de otra sentencia if. Siguiendo la regla, se descomponen empezando por la sentencia if ms anidada, mientras que cada sentencia else se enlaza a la ms cercana sentencia if disponible a la izquierda.

BUCLES DE PROGRAMA Algunas instrucciones (operaciones) deben ejecutarse ms de una vez en el programa. Un conjunto de comandos que se repiten es denominado un bucle de programa. Cuntas veces se ejecutar, es decir cunto tiempo el programa se quedar en el bucle, depende de las condiciones de salir del bucle.

BUCLE WHILE El bucle while aparece cuando el nmero de iteraciones no est especificado. Es necesario comprobar la condicin de iteracin antes de ejecutar un bucle. En otras palabras, el bucle while se ejecuta una

Recopilado por: Ing. Kathleen Stepas 11

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

vez cumplidas todas las condiciones necesarias para su ejecucin. La sintaxis del bucle while se parece a lo siguiente:

while expresin sentencias wend

while 1 ' Se puede escribir verdadero en vez de 1 ... ' Las expresiones se ejecutarn repetidamente (bucle infinito) ... wend

BUCLE FOR El bucle for se utiliza cuando el nmero de iteraciones est especificado. La sintaxis del bucle for es la siguiente:

El especificador sentencias representa un grupo de sentencias que se ejecutan repetidamente hasta que el valor del especificador expresin que representa una expresin siga siendo verdadero. En otras palabras, el programa se queda en el bucle hasta que la expresin llegue a ser falsa. El valor de la expresin se comprueba antes de que se ejecute la siguiente iteracin. Si el valor de la expresin es falso antes de entrar el bucle, no se ejecuta ninguna iteracin, esto es las sentencias no se ejecutarn nunca. El programa contina con la ejecucin desde el fin del bucle while (desde las instrucciones que siguen a la instruccin wend). Un tipo especial del bucle de programa es un bucle infinito. Se forma si la condicin para salir del bucle sigue sin cambios dentro del bucle. La ejecucin es simple en este caso ya que el resultado es siempre verdadero (1 siempre ser diferente de 0), lo que significa que el programa se queda en el bucle:

for contador = valor_inicial to valor_final [step valor_de_paso] sentencias next contador

La variable contador se incrementa por el valor de paso con cada iteracin de bucle. El parmetro valor_de_paso es un valor entero opcional, que es igual a 1 si es omitido. Antes de ejecutar la primera iteracin el contador se pone al valor_inicial y se incrementa hasta llegar o exceder al valor_ final. Con cada iteracin se ejecutan las sentencias. Las expresiones valor_inicial y valor_final deben ser compatibles con el contador. El especificador sentencia puede ser cualquier sentencia que no afecta al valor del contador. El parmetro valor_de_paso puede ser negativo, lo que permite contar atrs.

Recopilado por: Ing. Kathleen Stepas 12

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

for k=1 to 5 ' La variable k se incrementa cinco veces (de 1 a 5) y operation ' cada vez sigue ejecutndose la "operacin" ... next k

hacia o desde un procedimiento o funcin. La sentencia goto se puede utilizar para salir de cualquier nivel de las estructuras anidadas. No es recomendable saltar a bucles u otras sentencias estructuradas, ya que se pueden producir resultados inesperados.

Un conjunto de instrucciones (operacin) se ejecutar cinco veces. Despus, al comprobar que k<5 sea falsa (despus de 5 iteraciones k=5) y el programa saldr del bucle for. SENTENCIA GOTO La sentencia goto le permite hacer un salto absoluto a otro punto en el programa. Esta caracterstica se debe utilizar con precaucin ya que su ejecucin puede causar un salto incondicional sin hacer caso a todos los tipos de limitaciones de anidacin. El punto destino es identificado por una etiqueta, utilizada como un argumento para la sentencia goto. Una etiqueta consiste en un identificador vlido seguido por dos puntos (:). La sintaxis de la sentencia goto es:

SENTENCIA GOSUB Una subrutina es una parte del cdigo dentro de un programa largo ejecutado a peticin. Realiza una tarea especfica, es relativamente independiente del resto del cdigo. El intrprete del compilador salta a la subrutina, la ejecuta y vuelve al programa principal. Las palabras clave gosub y return se utilizan en Basic para denotar el inicio y el final de la subrutina:

goto: nombre_de_etiqueta

gosub nombre_de_etiqueta ... ... ... nombre_de_etiqueta: ... return

La sentencia ejecuta un salto al especificador nombre_de_etiqueta que representa una etiqueta. La sentencia goto puede preceder o seguir a una etiqueta. Por lo tanto, no es posible hacer un salto

Las subrutinas se consideran difciles de mantener, leer y manejar, igual que la sentencia goto. Es recomendable utilizarla solo si no hay otra solucin.

Recopilado por: Ing. Kathleen Stepas 13

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

MANEJO DE ENTRADAS Y SALIDAS DE UN MICROCONTROLADOR


Usando los registros TRIS y PORT El registro TRIS (tri-state enable) es un registro programable de 1 byte (8 bits) que controla el estado particular de cada pin configurndolo como entrada o como salida. Hay un registro TRIS por cada puerto. TRISA controla el estado de los pines del puerto A, y TRISB controla el estado de los pines del puerto B. Si se coloca el nmero binario 0 en el registro TRISB configura los pines del puerto B como salida. Y si se coloca un 1 en el registro TRISB lo configura como entrada. Despus que el puerto B ha sido configurado usando el registro TRISB, es posible leer o escribir el puerto usando la direccin del puerto B, la cual es mostrada en la tabla. Direccin Registro Direccin decimal hexadecimal PORTA PORTB PORTC TRISA TRISB TRISC 05h 06h 07h 85h 86h 87h 5 6 7 133 134 135

PUERTOS DE ENTRADA/SALIDA (I/O): Los microcontroladores PIC16F876 disponen de tres (03) puertos de entrada/salida (A, B y C) todas las lneas de estos puertos realizan diversas funciones segn estn programados, sin embargo, todos ellos tienen la capacidad de trabajar como entradas/salidas digitales y/o binarias.

PUERTO (A): Es un puerto bidireccional conformado por 6 bits RA0RA5, se configura a travs del registro de TRISA y se lee o escribe a travs del registro PORTA. Definicin de pines como salida TRISA = 0 Definicin de pines como entrada TRISA = 1 PUERTO (B): Es un puerto bidireccional conformado por 8 bits RB0RB7, se configura a travs del registro de TRISB y se lee o escribe a travs del registro PORTB. Definicin de pines como salida TRISB = 0 Definicin de pines como entrada TRISB = 1 PUERTO (C): Es un puerto bidireccional conformado por 8 bits RC0RC7, se configura a travs del registro de TRISC y se lee o escribe a travs del registro PORTC. Definicin de pines como salida TRISC = 0 Definicin de pines como entrada TRISC = 1

Recopilado por: Ing. Kathleen Stepas 14

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

El diagrama del registro del Puerto A y B se muestra a continuacin.

Recopilado por: Ing. Kathleen Stepas 15

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Recopilado por: Ing. Kathleen Stepas 16

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Comandos para el manejo de puertos HIGH: Configura el puerto y/o el pin especificado como salida y lo coloca a uno lgico, 5 VDC. Sintaxis: HIGH pin, donde pin es cualquier puerto A, B C del microcontrolador. LOW: Configura el puerto y/o pin especificado como salida y lo coloca a cero lgico, 0 VDC. Sintaxis: LOW pin, donde pin es cualquier puerto A, B C del microcontrolador. TOGGLE: Configura el pin especificado como salida y lo cambia de estado lgico Sintaxis: TOGGLE pin donde pin es cualquier puerto A, B C del microcontrolador. No se acepta Toggle de un puerto completo, slo de un Pin. INPUT: Configura el puerto y/o pin especificado como entrada. Sintaxis: INPUT pin, donde pin es cualquier puerto A, B C del microcontrolador. OUTPUT: Configura el puerto y/o pin especificado como salida.

Sintaxis: OUTPUT pin, donde pin es cualquier puerto A, B, C del microcontrolador.

PULSIN: Mide el ancho de un pulso presente en un pin y su valor en tiempo lo almacena en una variable: Sintaxis: Variable = PULSIN Pin, Estado Pin: Es una variable constante que indica cual pin de E/S ser utilizado, el mismo ser convertido en entrada. Estado: (0,1) (Low/High) es el flanco requerido para empezar la cuenta. Variable: Variable que almacena el resultado de la operacin. Nota: Para un resonador de 20 MHz, el conteo de PULSIN se realizar en intervalos de 2uS. El rango de PULSIN ser entre 1 y 65535. PULSEOUT: Genera un pulso de una duracin especificada en un terminal de E/S. Sintaxis: PULSOUT Pin, Perodo, Estado Inicial Pin: Es una variable constante que indica cual pin de E/S ser utilizado, el mismo ser convertido en salida. Perodo: Es una variable, constante o expresin de (4us 65535 us) que especifica la cantidad de tiempo en us que durar el pulso.

Recopilado por: Ing. Kathleen Stepas 17

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

En las pginas siguientes se mostrarn varios ejemplos para el manejo de puertos. Ejemplo N 1: Encender cuatro LEDs conectados a los pines 2, 3, 4 y 5 del puerto C del PIC16F876.

Recopilado por: Ing. Kathleen Stepas 18

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Ejemplo N 2: Siguiendo con el ejemplo N 1, se mostrar otra manera de hacer el encendido de los LEDs mencionados.

Ejemplo N 3: Otra forma de hacerlo.

Recopilado por: Ing. Kathleen Stepas 19

MATERIAL PRCTICA N 1. PROGRAMACIN DEL MICROCONTROLADOR. MANEJO DE LAS ENTRADAS Y LAS SALIDAS.

Ejemplo N 4: Otra forma de hacerlo.

Ejemplo N 5: Otra forma de hacerlo.

Recopilado por: Ing. Kathleen Stepas 20