Manual Cidiacctec Microcontroladores

download Manual Cidiacctec Microcontroladores

of 47

description

Manual Cidiacctec Microcontroladores

Transcript of Manual Cidiacctec Microcontroladores

CIDIACCTEC

CIDIACCTECCENTRO DE INVESTIGACION DESARROLLO INNOVACION ASCESORIA Y CAPACITACION EN CIENCIA Y TECNOLOGIA

INTRODUCCION A LOS MICROCONTROLADORES

1. INTRODUCCION

Muchos de nosotros sabemos que apariencia tiene una computadora. Usualmente tiene teclado, monitor, CPU (Unidad Central de Procesamiento), impresora y mouse. Este tipo de computadoras son diseadas principalmente para comunicarse con humanos.

Manejo de base de datos, anlisis financieros o incluso procesadores de texto se encuentran dentro de la gran caja, que contiene CPU, la memoria, el disco rgido, etc. El verdadero computo, sin embargo tiene lugar dentro de la CPU.Si piensa sobre esto, el nico propsito del monitor, teclado, mouse e incluso la impresora, es conectar el CPU con el mundo exterior.

PERO UD. SABIA QUE HAY COMPUTAORAS ALREDEDOR DE NOSOTROS, CORRIENDO PROGRAMAS Y HACIENDO CALCULOS SILENCIOSAMENTE SIN INTERACTUAR CON NINGUN HUMANO? Estas computadoras estn en su auto, en un juguete e incluso en el horno microondas.Llamamos a estos dispositivos microcontroladores. Micro porque son pequeos, y controladores, porque controlan maquinas o incluso otros controladores. Los microcontroladores, por definicin entonces, son diseados a para ser conectados ms a maquinas que a personas. Son muy tiles porque Ud. Puede construir una maquina o un artefacto, escribir programas para controlarlo, y luego dejarlo trabajar para usted automticamente.

1.1 QUE ES UN MICROCONTROLADOR?

Un microcontrolador es un circuito integrado programable (PIC) que contiene todos los componentes y dispositivos necesarios para controlar el funcionamiento de una tarea determinada, adems un microcontrolador posee en su interior toda la arquitectura de un computador, esto es: CPU, memoria RAM, EEPROM y puertos de entrada y salida.

CONSTITUCION INTERNA DE UN MICROCONTROLADOR EN GENERAL

CONSTITUCION EXTERNA DE UN MICROCONTROLADOR

1.2 QUE NO HACE UN MICROCONTROLADOR?Las aplicaciones de un microcontrolador son tan inmensas que el lmite es la propia imaginacin del usuario. Estos microcontroladores estn en el auto, en el televisor, en el telfono, en una impresora, en un horno de microondas, en un transbordador espacial, en un juguete, etc. Alguna fuentes estiman que en una casa tpica de E.U se tiene alrededor de 250 microcontroladores.

Los siguientes son algunos campos en los que los microcontroladores tienen gran uso: En la industria del automvil: Control de motor, alarmas, regulador del servofreno, dosificador, etc. En la industria de los electrodomsticos: control de calefacciones, lavadoras, cocinas elctricas, etc. En informtica: como controlador de perifricos. Por ejemplo para controlar impresoras, plotters, cmaras, scanners terminales, unidades de disco, teclados, comunicaciones (modems), etc. En la industria de imagen y sonido: tratamiento de la imagen y sonido, control de los motores de arrastre del giradiscos, magnetfono, video, etc.En la industria, en general se utilizan en: Regulacin: todas las familias de microcontroladores incorporan en alguna de sus versiones conversores A/D y D/A, para la regulacin de la velocidad de las mquinas, de niveles, de temperatura, etc. Automatismos: La enorme cantidad de lneas de entrada y salidas, y su inmunidad al ruido le hacen muy valioso para el control secuencial de procesos. Por ejemplo control de mquinas, herramientas, apertura y cierre automtico de puertas segn condiciones, plantas empaquetadoras, aparatos de maniobra de ascensores, etc. Robtica: para control de los motores y captura de seales de los diferentes sensores, fabricacin de controladores robticos para sistemas automticos, etc.

1.3 ARQUITECTURA DE UN MICROCONTROLADORSegn la arquitectura interna de la memoria de un microcontrolador se puede clasificar considerando como el CPU accede a los datos e instrucciones, en 2 tipos:1.3.1 Arquitectura Von Neumann Fue desarrollada por Jon Von Neumann, se caracteriza por tener una sola memoria principal donde se almacenan datos e instrucciones de forma indistinta. La CPU se conecta a travs de un sistema de buses (direcciones, datos y control). Esta arquitectura es limitada cuando se demanda rapidez.

1.3.2 Arquitectura HarvardFue desarrollado en Harvard, por Howard Aiken, esta arquitectura se caracteriza por tener 2 memorias independientes una que contiene slo instrucciones y otra, que contiene slo datos. Ambas, disponen de sus respectivos sistemas de buses para el acceso y es posible realizar operaciones de acceso simultneamente en ambas memorias. Existe una variante de esta arquitectura que permite el acceso a la tabla de datos desde la memoria de programas es la Arquitectura de Harvard Modificada. Esta ltima arquitectura es la dominante en los microcontroladores actuales ya que la memoria de programas es usualmente ROM, OTP, EPROM o FLASH, mientras que la memoria de datos es usualmente RAM. Por ejemplo las tablas de datos pueden estar en la memoria de programa sin que sean perdidas cada vez que el sistema es apagado.

1.4 TIPOS DE MEMORIA

MEMORIA RAM(Random Access Memory) Memoria de Acceso Aleatorio) en esta memoria se guarda los datos que se est utilizando en el momento presente. El almacenamiento es considerado temporal por que los datos permanecen en ella mientras la memoria tiene una fuente de alimentacin.

La memoria de programas o de instrucciones contiene una serie de diferentes tipos de memoria:

MEMORIA ROMEs de solo lectura, cuyo contenido se graba durante la fabricacin del chip. Es aconsejable cuando se precisan cantidades superiores a varios miles de unidades.

MEMORIA OTP One Line Programmable) es no volatile y de solo lectura y programmable una sola vez por el usuario. La grabacin se realiza mediante un sencillo grabador controlado por una PC.

MEMORIA EPROM (Erasable Programmable Read Only Memory), pueden borrarse y grabarse muchas veces. La grabacin se realiza, como en el caso de la memoria OTP. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a le EPROM a rayos ultravioleta por algunos minutos.

MEMORIA EEPROM (Electrical EPROM) es de slo lectura, programable y borrable elctricamente. Tanto la programacin como el borrado, se realizan elctricamente desde el propio grabador y bajo el control programado de un PC, y puede hacerse con el microcontrolador instalado en el circuito. Es muy cmoda y rpida la operacin de grabado y la de borrado.

MEMORIA FLASH La memoria Flash es no voltil, de bajo consumo y puede grabarse y borrarse elctricamente. Funciona como una ROM y una RAM pero consume menos energa y es ms pequea. La memoria Flash tambin puede programarse en circuito, es decir, sin tener que sacar el circuito integrado de la tarjeta. adems, es ms rpida, tiene mayor densidad y tolera ms ciclos de escritura/borrado que la EEPROM

1.5 CARACTERISTICAS GENERALES DEL PIC 16F877A Velocidad de operacin hasta 20Mhz. Procesador con arquitectura Harvard 35 instrucciones para su programacin Instrucciones de 1 ciclo excepto los saltos( 200ns a 20Mhz) Resistencias PULL-UP programable en el puerto b Rango de operaciones desde 2v, hasta 5.5v Memoria de Programa tipo Flash 8Kx14 Memoria Datos 368 bytes 33 pines de Entrada/Salida (PUERTO A,B,C,D,E) Temporizador Perro Guardin WDT independiente del Oscilador Chip Programable con bajo voltaje LPV (5v) 2 circuitos comparadores anlogos con entradas multiplexadas 3 timers, TIMER0 a 8bits, TIMER1 a 16 bits TIMER2 a 8 bits. Mdulos CCP , captura compara 16 bits, y pwm, modulacin de ancho de pulso 10 bits 14 fuentes de interrupcin. Mdulo de comunicacin USART/SCI Capacidad de corriente (25mA I/O) por cada pin.

1.6 PUERTOS El PIC16F877A dispone de cinco puertos A, B, C, D y E. Las lneas de estos puertos se pueden programar individualmente como entradas o como salidas y se utilizan casi de la misma forma.

1.6.1 DESCRIPCION DE LOS PINESNOMBRE DEL PINPINTIPODESCRIPCIN

OSC1/CLKIN13IEntrada del oscilador de cristal / Entrada de seal de reloj externa

OSC2/CLKOUT14OSalida del oscilador de cristal

MCLR/Vpp/THV1I/PEntrada del Master clear (Reset) o entrada de voltaje deprogramacino modo de control high voltaje test

RA0/AN0RA1/AN1RA2/AN2/ Vref-RA3/AN3/Vref+RA4/T0CKIRA5/SS/AN4

234567

I/OI/OI/OI/OI/OI/OPORTA es un puerto I/O bidireccionalRAO: puede ser salida analgica 0RA1: puede ser salida analgica 1RA2: puede ser salida analgica 2 o referencia negativa de voltajeRA3: puede ser salida analgica 3 o referencia positiva de voltajeRA4: puede ser entrada de reloj el timer0.RA5: puede ser salida analgica 4 o el esclavo seleccionado por el puerto serial sncrono.

RBO/INTRB1RB2RB3/PGMRB4RB5RB6/PGCRB7/PGD3334353637383940I/OI/OI/OI/OI/OI/OI/OI/OPORTB es un puerto I/O bidireccional. Puede ser programado todo como entradasRB0 pude ser pin de interrupcin externo.RB3: puede ser la entada de programacin de bajo voltajePin de interrupcinPin de interrupcinPin de interrupcin. Reloj de programacin serial

RCO/T1OSO/T1CKIRC1/T1OS1/CCP2RC2/CCP1RC3/SCK/SCLRC4/SD1/SDARC5/SD0RC6/Tx/CKRC7/RX/DT1516171823242526I/OI/OI/OI/OI/OI/OI/OI/OPORTC es un puerto I/O bidireccionalRCO puede ser la salida del oscilador timer1 o la entrada de reloj del timer1RC1 puede ser la entrada del oscilador timer1 o salida PMW 2RC2 puede ser una entrada de captura y comparacin o salida PWNRC3 puede ser la entrada o salida serial de reloj sncrono para modos SPI e I2CRC4 puede ser la entrada de datos SPI y modo I2CRC5 puede ser la salida de datos SPIRC6 puede ser el transmisor asncrono USART o el reloj sncrono.RC7 puede ser el receptor asncrono USART o datos sncronos

RD0/PSP0RD1/PSP1RD2/PSP2RD3/PSP3RD4/PSP4RD5/PSP5RD6/PSP6RD7/PSP71920212227282930I/OI/OI/OI/OI/OI/OI/OI/OPORTD es un puerto bidireccional paralelo

REO/RD/AN5RE1/WR/ANRE2/CS/AN78910I/OI/OI/OPORTE es un puerto I/O bidireccionalREO: puede ser control delecturapara el puerto esclavo paralelo o entrada analgica 5RE1: puede serescriturade control para el puerto paralelo esclavo o entrada analgica 6RE2: puede ser el selector de control para elpuerto paraleloesclavo o la entrada analgica 7.

Vss12.31PReferencia detierrapara los pines lgicos y de I/O

Vdd11.32PFuente positiva para los pines lgicos y de I/O

1.7 CONEXIN BSICAPara que un microcontrolador funcione apropiadamente es necesario proporcionar lo siguiente:

Alimentacin; Seal de reinicio; y Seal de reloj.

ALIMENTACIN

Aunque el PIC16F887 es capaz de funcionar a diferentes voltajes de alimentacin. Lo ms adecuado es proporcionar un voltaje de alimentacin de 5V DC. Este circuito, mostrado en la pgina anterior, utiliza un regulador de voltaje positivo de tres terminales LM7805. Es un regulador integrado y barato que proporciona una estabilidad de voltaje de alta calidad y suficiente corriente para habilitar el funcionamiento apropiado del controlador y de los perifricos (aqu suficiente significa una corriente de 1A).

SEAL DE REINICIOPara que un microcontrolador pueda funcionar apropiadamente, un uno lgico (VCC) se debe colocar en el pin de reinicio. El botn de presin que conecta el pin MCLR a GND no es necesario. Sin embargo, este botn casi siempre est proporcionado ya que habilita al microcontrolador volver al modo normal de funcionamiento en caso de que algo salga mal. Al pulsar sobre el botn RESET, el pin MCLR se lleva un voltaje de 0V, el microcontrolador se reinicia y la ejecucin de programa comienza desde el principio. Una resistencia de 10k se utiliza para impedir un corto circuito a tierra al presionar este botn.

SEAL DE RELOJ

A pesar de tener un oscilador incorporado, el microcontrolador no puede funcionar sin componentes externos que estabilizan su funcionamiento y determinan su frecuencia (velocidad de operacin del microcontrolador). Dependiendo de los elementos utilizados as como de las frecuencias el oscilador puede funcionar en cuatro modos diferentes:

LP - Cristal de bajo consumo; XT - Cristal / Resonador; HS - Cristal/Resonador de alta velocidad; y RC - Resistencia / Condensador.Cristal de cuarzoAl utilizar el cristal de cuarzo para estabilizar la frecuencia, un oscilador incorporado funciona a una frecuencia determinada, y no es afectada por los cambios de temperatura y de voltaje de alimentacin. Esta frecuencia se etiqueta normalmente en el encapsulado del cristal. Aparte del cristal, los condensadores C1 y C2 deben estar conectados como se muestra en el siguiente esquema. Su capacitancia no es de gran importancia. Por eso, los valores proporcionados en la siguiente tabla se deben tomar como recomendacin y no como regla estricta.

Resonador cermicoUn resonador cermico es ms barato y muy similar a un cuarzo por la funcin y el modo de funcionamiento. Por esto, los esquemas que muestran su conexin al microcontrolador son idnticos. No obstante, los valores de los condensadores difieren un poco debido a las diferentes caractersticas elctricas. Refirase a la tabla que est a continuacin. Estos resonadores se conectan normalmente a los osciladores en caso de que no sea necesario proporcionar una frecuencia extremadamente precisa.

Oscilador RCSi la frecuencia de operacin no es de importancia, entonces no es necesario utilizar los componentes caros y adicionales para la estabilizacin. En vez de eso, basta con utilizar una simple red RC, mostrada en la siguiente figura. Como aqu es utilizada slo la entrada del oscilador local, la seal de reloj con la frecuencia Fosc/4 aparecer en el pin OSC2. sta es la frecuencia de operacin del microcontrolador, o sea la velocidad de ejecucin de instrucciones.

Oscilador externoSi se requiere sincronizar el funcionamiento de varios microcontroladores o si por alguna razn no es posible utilizar ninguno de los esquemas anteriores, una seal de reloj se puede generar por un oscilador externo. Refirase a la siguiente figura.

Apesar del hecho de que el microcontrolador es un producto de la tecnologa moderna, no es tan til sin estar conectado a los componentes adicionales. Dicho de otra manera, el voltaje llevado a los pines del microcontrolador no sirve para nada si no se utiliza para llevar a cabo ciertas operaciones como son encender/apagar, desplazar, visualizar etc.

TERMINOLOGIAComencemos con la terminologa bsica empleada en este contexto. Microcontrolador Es un circuito integrado programable que contiene todos los componentes necesarios para controlar el funcionamiento de una tarea determinada. El Microcontrolador empleado en este libro es el PIC16F84A de Microchip (Fig. 1).

I/O Pin de conexin con el mundo exterior que puede ser configurado como entrada o salida. I/O es necesario en la mayora de los casos para permitirle al Microcontrolador comunicarse, controlar y leer informacin.

Software La informacin que el Microcontrolador necesita para operar o correr. Este tiene que estar libre errores para una aplicacin exitosa. Puede ser escrito en una variedad de lenguajes como C, Pascal o Assembler.

Hardware El Microcontrolador, memorias, perifricos, fuentes de voltaje, y todos los dems componentes conectados a este para hacer que trabaje y se comunique con el mundo exterior.

Simulador Aplicacin en la que puede probar y depurar sus diseos de manera interactiva y rpida evitando la programacin del dispositivo real, ejemplo: ISIS PROTEUS .

Programador Unidad que permite al programa ser cargado dentro de la memoria del Microcontrolador. Estos vienen en diferentes formas, protocolos de comunicacin y precios, ejemplos: PICSTART PLUS, PICKIT de Microchip.

Archivo Fuente Programa escrito en un lenguaje como Assembler o C que usted puede entender. Este archivo tiene que procesarse antes de que el Microcontrolador lo reciba.

Compilador Paquete software que convierte al archivo fuente en un archivo objeto. El compilador C que se utiliza en este material es PIC C Compiler de CCS.

Archivo Objeto Archivo que se produce despus de compilar el archivo fuente. La extensin es .OBJ o .HEX, y es el archivo que necesita el Simulador y el Microcontrolador para funcionar

CAPITULO 22. COMPILADOR CCS

2.1. INTRODUCCION:

El Compilador C de CCS ha sido desarrollado especficamente para PIC MCU, obteniendo la mxima optimizacin del compilador con estos dispositivos. Dispone de una amplia librera de funciones predefinidas, comandos de pre procesados y ejemplos. Adems, suministra los controladores (drivers) para diversos dispositivos como LCD, convertidores AD, relojes en tiempo real, EEPROM serie, etc.Muchos se preguntaran Qu es una Compilador?- La respuesta es simple, Un compilador es aquel que convierte el lenguaje de alto nivel a instrucciones en Cdigo maquina; `tambin quiero agregar lo que es un Cross Compiler, simplemente es un compilador que funciona en un procesador (normalmente en un PC) diferente al procesador objeto por tanto queda claro que el Compilador CCS C es un Cross Compiler. Los programas son editados y compilados a instrucciones mquina en el entorno de trabajo del PC, el cdigo mquina puede ser cargado del PC al sistema PIC mediante el ICD2 (o mediante cualquier programador) y puede ser depurado (puntos de ruptura, paso a paso, etc.) desde el entorno de trabajo del PC.El CCS C es C estndar y, adems de las directivas estndar (#include, etc.), suministra unas directivas especificas para PIC (#device, etc.); adems incluye funciones especficas (bit_set(), etc.). Se suministra con un editor que permite controlar la sintaxis del programa.

2.2. Lenguaje C: Es un tipo de lenguaje de alto nivel utilizado para hacer programas informticos como tambin usado para programas microcontroladores por su fcil comprensin y manejo.Aqu algunos de los compiladores en C:PCWH CompilerCC182.3. DEFINICIONES PREVIASLenguaje de Programacin: Se entiende como un juego de reglas y rdenes segn que nosotros escribimos el programa y por consiguiente distinguimos los varios lenguajes de programacin como el BASIC, C, PASCAL, etc.Programa: Consiste en la secuencia de comandos del lenguaje que nuestro microcontrolador ejecuta uno a tras de otro. La estructura del lenguaje BASIC esta explicado en detalle ms adelante.Creando nuestro primer programa:1 Ir a la ventana PROYECT seleccionar NEW y luego seleccionar en PROYECT WIZARD2 Nos aparecer una ventana donde le daremos un nombre al proyecto y posteriormente guardarlo.

3 Aparecer la siguiente ventana, ledaremoslaconfiguracinmostrada.

4 En la opcin de comunicaciones configuramos segn la imagen

5 En la opcin general vamos a la pestaa CODE, y podremos ver la configuracin general de nuestro programa en cdigo C, luego damos ok

Finalmente tendremos listo nuestro programa para empezar a programar

DIGITAR LAS SIGUIENTES INSTRUCCIONES:

Compilacin del programaLa compilacin o ejecucin del programa en el C CCS est dada para poder generar acabo el archivo .hexla cual tendremos que grabar al micontrolador este archivo es el llamado lenguaje maquina con la cual el pic ser grabado.

CREACION DE PROYECTOSCOMO HOJA SIMPLEAl realizar un proyecto como hoja simple, a diferencia de los pasos anterioers aqu tenemos que escribir los archivos de cabecera como son :

DIGITAR EL SIGUIENTE CODIGO

2.4. SIMULACION CON PROTEUS

Una vez que tengamos nuestro primer cdigo ya compilado, el siguiente paso es poder hacerlo funcionar y verificar si est correcto, por lo cual existen hay 2 caminos: uno programar un microcontrolador mediante un programador y el otro mtodo es simularlo en un software, la segunda opcin es una de las ms factibles y rpidas en estos tiempos, ya que no hace uso de muchas herramientas fsicas para probar si nuestro cdigo funciona correctamente.

El software que utilizaremos se llama PROTEUS, el cual es un entorno integrado diseado para la realizacin completa de proyectos de construccin de equipos electrnicos en todas sus etapas: diseo, simulacin, depuracin y construccin.

Pasos: 1 una vez armado el diseo damos doble clic sobre el microcontrolador

2 Dar 1 clic en el dibujo de la carpeta en la opcin Program File, luego seleccionar el archivo con extencion.exe y dar abrir

3 Dar clic en el botn ok

4 Dar clic en el botn Play

2.3 GESTION DE PUERTOS: entrada y salida:Los Microcontroladores PIC tienen terminales de entrada/salida divididos en puertos, que se encuentran nombrados alfabticamente A, B, C,D, etc. Cada puerto puede tener hasta 8 terminales que, de forma bsica, se comportan como una entrada/salida digital. Segn las caractersticas del PIC, cada puerto puede tener, adems, asignado un bloque funcional: convertidor AD, USART, I2C, etc.2.4 GESTION DE PUERTOS A TRAVS DE LA RAM:Se definen los registros PORTx y TRIS x como bytes y se sitan en la posicin correspondiente de la memoria RAM. La directiva utilizada de C es #BYTE:#BYTE variable = constante;Una vez definidas estas variables se pueden configurar y controlar los puertos a travs de los comandos de asignacin.#BYTE TRISA = 0XFF;// 8 Terminales de entrada.#BYTE TRISB = 0x00;// 8 Terminales de salida.#BYTE TRISC = 0x0F;// 4 Terminales de mayor peso de salida, 4 Terminales de // menor peso de entrada.Existen unas funciones de C que permiten trabajar bit a bit con los registros o variables definidas previamente. Estas funciones son las siguientes:bit_clear (var,bit);//Pone a 0 el bit especifico (0 a 7) de la variable.bit_set (var,bit);//Pone a 1 el bit especifico (0 a 7) de la variable.bit_test (var,bit);//Muestra el bit especifico (0 a 7) de la variable.bit_set (PORTC , 4);// saca un 1 por el terminal RC4.If (bit_test (PORTB,0)==1) bit_clear(PORTB,1);// si RB0 es 1 borra RB1Se puede declarer un bit de un registro con una variable mediante la directive #BIT, lo que permite trabajar directamente con el temrinal:#BIT nombre = posicin.bit#BIT RB4 = 0x06.4// PORTA = 0x06 RB4 = 0;

2.5 GESTION DE PUERTOS A TRAVS DE LAS DIRECTIVAS:El compilador ofrece funciones predefinidas para trabajar con los puertos. Estas funciones son:Output_X (valor);//Por el puerto correspondiente saca el valor (0 255).Input_X ( );//Se obtiene el valor en el puerto correspondiente.Set_tris_X (valor);//Carga el registro TRISx CON EL VALOR (0 255).Port_b_pullups (valor);//Mediante valor = TRUE o valor = FALSE habilita o //Deshabilita las resistencias de pull-up en PORTB.Get_trisX( );//Devuelve el valor del registro TRIS x Donde la X es la inicial del puerto correspondiente (A. B, C,).Output_A (0xFF);//saca por el puerto A el valor 11111Valor = Input_B ( );//Lee el valor del puerto BSet_tris_C (0x0F);//configura el puerto C: C0-C3 entradas, C4-C7 salidas

Existen una serie de funciones asociadas a un terminal o pin*. El parmetro pin* se define en un fichero include (por ejemplo, 16F876.h) con un formato del tipo PIN_Xn, donde X es el puerto y n es el nmero de pin.#define PIN_A0 40#define PIN_A1 41Las funciones son:Output_low (pin*); //pin a 0.Output_high (pin*);//pin a 1.Output_bit (pin*,valor);//pin al valor especificado.Output_toggle (pin*);// complementa el valor del pin.Output_float (pin*);//pin de entrada, quedando a tensin flotante (simula salida en drenador abierto).Input_state (pin*);//lee el valor del pin sin cambiar el sentido del terminal.Input (pin*);//lee el valor del pin.

Las funciones output_x( ) e input_x( ) dependen de la directiva tipo #USE*_IO que est activa. Directivas:#USE FAST_IO (PUERTO) [PUERTO: A]Con la funcin output_x( ) se saca el valor al puerto y con la funcin input_x( ) se lee el puerto. La directiva no modifica previamente el registro TRIS correspondiente.Hay que asegurarse de que los registros TRIS estn correctamente definidos.#USE STANDARD_IO (PUERTO) [PUERTO: A]Con la funcin output_x( ) el compilador se asegura de que el terminal, o Terminales correspondientes, sean de salida mediante la modificacin del TRIS correspondiente. Con la funcin input_x( ) ocurre lo mismo pero asegurando el terminal(terminales) como entrada. Es la directiva por defecto. #USE STANDARD_IO (PUERTO) [PUERTO: A]El compilador se encarga de generar el cdigo para definir los puertos de acuerdo con la informacin que indica la directiva (donde slo se indican los terminales de salida), sin tener en cuenta si la operacin es de entrada o de salida.

2.6 TIPOS DE DATOS:

CCS C acepta los siguientes tipos de datos:

TipoTamaoRangoDescripcin

Int1Short1 bit0 a 1Entero de 1 bit

IntInt88 BIT0 A 255Entero

Int16Long16 bit0 a 65 535Entero de 16 bit

Int3232 bit0 a 4 294 967 295Entero de 32 bit

Float32 bitComa flotante

Char8 bit0 a 255Carcter

Void--Sin Valor

Signed Int88 bit-128 a +127Entero con Signo

Signed Int1616 bit-32 768 a +32 767Entero largo con Signo

Signed Int3232 bit a Entero 32 bit con Signo

2.7 CONSTANTES:Las constantes se pueden se pueden especificar en Decimal, octal, hexadecimal o en binario.

123Decimal

0123Octal(0)

0 x 123Hexadecimal(0x)

0b010010Binario(0b)

`x`Carcter

`\010`Carcter Octal

`\xA5`Carcter Hexadecimal

Adems, se pueden definir constantes con un sufijo:

Int8127U

Long80UL

Signed INT1680L

Float3.14F

CharCon comillas simples `C`

Tambin se definen caracteres especiales, algunos como:

\nCambio de lnea

\rRetorno de carro

\tTabulacin

\bBackspace

2.8 VARIABLESLas variables se utilizan para nombrar posiciones de memoria RAM; se deben declarar, obligatoriamente, antes de utilizarlas; para ello se debe indicar el nombre y el tipo de dato que se manejar. Se definen de la siguiente forma:TIPO NOMBRE_VARIABLE [=VALOR INICIAL]Las variables definidas en un programa pueden ser de tipo LOCAL o GLOBAL. Las variables locales slo se utilizan en la funcin donde se encuentran declaradas; las variables globales slo se utilizan en la funcin donde se encuentran declaradas; las variables globales se pueden utilizar en todas las funciones del programa. Ambas deben declararse antes de ser utilizadas y las globales deben declararse antes de cualquier funcin y fuera de ellas. Las variables globales son puestas a cero cuando se inicia la funcin principal main ( ).

#include #USE DELAY (CLOCK = 4000000)int16 counter; // Variable globalvoid FUNCION (void){ Char k, kant =`0`; //Variables locales}Void main ( ){Int8 temp; //Variable local}Las variables pueden ser definidas con: AUTO: (usada por defecto, no hace falta que se indique) donde la variable existe mientras la funcin esta activa. Estas variables no se inicializan a cero. Su valor se pierde cuando se sale de la funcin.

STATIC: Una variable local se activa como global, se inicializa a cero y mantiene su valor al entrar y salir de la funcin.

EXTERN: Permite el uso de variables en compilaciones mltiples.

2.9 OPERADORES

2.9.1 ASIGNACION:

+=Asignacin de suma (x+= y es lo mismo que x = x + y)

-=Asignacin de resta (x-= y es lo mismo que x = x - y)

*=Asignacin de multiplicacin (x*= y es lo mismo que x = x * y)

/=Asignacin de divisin (x/= y es lo mismo que x = x / y)

%=Asignacin del resto de la divisin (x/%= y es lo mismo que x = x % y)

> y)

&=Asignacin AND de bits (x&= y es lo mismo que x = x & y)

|=Asignacin OR de bits (x|= y es lo mismo que x = x | y)

^=Asignacin OR EXCLUSIVA de bits (x^= y es lo mismo que x = x ^ y)

2.9.2 ARITMETICOS:

+Suma

-Resta

*Multiplicacin

/Divisin

%Mdulo, resto de una divisin entera

--Incremento

++Decremento

SizeofDetermina el tamao, en bytes, de un operando

En las operaciones de decremento e incremento, en funcin de la posicin del operador, se consigue un pre incremento (++A) O UN POSTINCREMENTO(A++).A=3;B=4*a++; //b=4 y a=4;a=3b=4*++3; b=16 y a=4;2.9.3 RELACIONALESMayor que

>=Mayor o igual que

Puntero a estructura

2.9.6 BITS

~Complemento a 1

&AND

^OR EXCLUSIVA

|OR

>>Desplazamiento a derechas

Columna 2B2 D2 -> Columna 3B3 D3 -> Columna 4B4 D4 -> Fila 1B5 D5 -> Fila 2B6 D6 -> Fila 3B7 D7 -> Fila 44.2. PANTALLAS GRAFICAS

4.2.1. PANTALLA LCD:Se acostumbran ha utilizar LCD del tipo HD44780, con un nmero de lneas variable y un numero de caracteres por lnea tambin variable (por ejemplo, con 2x16 se trabaja con dos lneas de 16 caracteres cada una)

1.- Vss(masa)2.- Vcc(alimentacin de 2.7v a 5.5v)3.- Ajuste de contraste (de 0 a 5.5v)4.- RS (seleccin de registro)5.- R/W (lectura/escritura)6.- E (enable)7.- D0 (dato LSB)8.- D19.- D210.- D311.- D412.- D513.- D614.- D7 (dato MSB).15.-BLACKLITE (GROUND)16.- BLCKLITE (VCC)Lcd_init ( );Es la primera funcin que debe ser llamada.Borra el LCD y lo configura en el formato de 4 bits, con dos lneas y con caracteres de 5 x 8 puntos, en modo encendido, cursor apagado y sin parpadeo.Configura el LCD con un autoincremento del puntero de direcciones y sin desplazamiento del display real.Lcd_gotoxy (byte x, byte y);Indica la posicion de acceso al LCD. Por ejemplo, (1,1) indica la primera posicin de la primera lnea y (1,2) indica la primera posicin de la segunda lnea.Lcd_getc (byte x, byte y);Lee el carcter de la posicin (x,y).Lcd_putc (char s);S es una variable de tipo char. Esta funcin escribe la variable en la posicin correspondiente. Si, adems, se indica:\f se limpia el LCD.\n el cursor va a la posicin (1,2).\b el cursor retrocede una posicin.El compilador de C ofrece una funcin ms verstil para trabajar con el LCD:Printf (string)Printf (string, values)Printf (fname, string, values)String es una cadena o un array de caracteres, vales es una lista de variables separadas por comas y fname es una funcin.El formato es %nt, DONDE N ES OPCIONAL Y PUEDE SER: 1 9: para especificar cuantos caracteres se deben especificar.01 09: para indicar la cantidad de ceros a la izquierda.1.1-9.9: para coma flotante.

t puede indicar:cCarctersCadena o carcter.uEntero sin signo.dEntero con signo.LuEntero largo sin signo.LdEntero largo con signo.xEntero Hexadecimal (minsculas).XEntero Hexadecimal (mayusculas).LxEntero Largo Hexadecimal (minsculas).LXEntero Largo Hexadecimal (mayusculas).fFlotante con truncado.gFlotante con redondeo.eFlotante en formato exponencial.wEntero sin signo con decimales insertados. La 1 cifra indica el total, la 2 el nmero de decimales.A continuacion, mostramos unos ejemplos de los distintos formatos:FormatoValor = 0 x 12Valor = 0 x FE

%03u018254

%u18254

%2u18*

%518254

%d18-2

%x12Fe

%X12FE

%4X001200FE

%3.1w1.825.4

Ahora, mostramos una serie de ejemplos de aplicacin:Byte x, y, z;Printf (hola); Printf (valor=>%2x\n\r,get_rtcc( )); Printf (%2u %X %4X\n\r,x, y, z); Printf (LCD_PUTC, n = %u ,n); El driver LCD.C est pensado para trabajar con el PORTD o el PORTB. Por defecto, utiliza el PORTD a menos que le indiquemos lo contrario mediante:#define use_portb_lcd TRUE, se comenta o des comenta tal como se indica en la fig. 2Por defecto, este driver usa siete terminales para la comunicacin entre el LCD y el PIC. En la fig 2 se observa parte del fichero LCD.C donde se encuentran definidas las conexiones utilizadas y la posibilidad de cambiar de puerto.

4.2.2. PANTALLA GLCD:Se puede utilizar un LCD grfico con una controladora KS0108 (como el de la figura 3), por ejemplo la ASI-A-1286AS-LJ-EWS/W de la casa ALL SHORE INDUSTRIES.

La distribucin de patillas es la siguiente:VSS:masaVDD:AlimentacionVo:Tensin de contraste.D/I:entrada de datos/entrada de cdigos de instrumentacin.R/W:Lectura/escritura.E:enableDB0 DB7:datos de entrada.CS1 CS2:chip select.RST:reset.El compilador C suministra varios drivers para este tipo de LCD grficos, el GLCD.C, GRAPHICS.C o, el ms especifico, HDM64GS12.C.La conexin definida en estos ficheros es la siguiente:LCD Pin conexiones de pin: (se pueden realizar los cambios necesarios en la siguiente definicin).VSS est conectado a GNDVo lcd voltaje de funcionamiento (ajuste contra posicion)D/I Los Datos o la instruccin estn conectados a B2R/W Lectura o escritura a B4Enable - esta conectado a B5Data Bus 0 a 7 esta conectado a port dChip Select 1 esta conectado a B0Chip Select 2 esta conectado a B1Reset esta conectado a C0Voltaje Negativo tambin esta conectada a 20k Ohm POTVoltaje Positivo para LED back light (retro iluminacin) esta conectado a GNDLas funciones definidas son:Glcd_init (mode)Debe ser la primera funcin en invocarse. Enciende el LCD.Glcd_pixel (x,y,color)Establece el color del pixel. Puede activarse o desactivarse.Glcd_fillScreen (color)Rellena el LCD de un color determinado. Puede activarse o desactivar.Glcd_update ( )Escribe en la RAM del LCD; slo es posible si est definido FAST_GLCD.Glcd_line (x1,y1,x2,y2,color)Dibuja una lnea desde el primer punto al segundo asignando color, el cual, a su vez, puede activarse o desactivarse.Glcd_rect (x1,y1,x2,y2,fill,color)Dibuja un rectngulo con un vrtice en (x1,y1) y el otro en (x,y2). Puede ser rellenado o no y puede activarse un color o no.Glcd_bar (x1,y1,x2,y2,width,color)Dibuja una barra desde el primer punto al segundo; se puede definir el nmero del rango de pixeles y puede activarse un color o no.Glcd_circle (x,y,radius,fill,color)Dibuja un circulo con centro en (x,y) y con el radio especificado; puede rellenarse o no y puede activarse el color o no.Glcd_text57 (x,y,textptr,size,color)Escribe el texto empezando en (x,y); los caracteres son de 5 x 7 pixeles; se puede scalar el tamao y puede activarse el color o no. Esta funcin enva los caracteres a la lnea siguiente(se debe usar #define GLCD_WIDTH para definir el ancho de visualizacin).

WEBGRFIAhttp://www.mikroe.com/eng/chapters/view/82/capitulo-4-ejemplos/http://html.rincondelvago.com/microcontroladores_2.htmlhttp://r-luis.xbot.es/pic1/pic02.htmlhttp://perso.wanadoo.es/pictob/microprg.htmhttp://www.bairesrobotics.com.ar/data/pic16f877-guia%20detallada%20parte2.pdfhttp://robotsperu.org/foros/pic16f877a-vt35.htmlhttp://www.monografias.com/trabajos18/descripcion-pic/descripcion-pic.shtmlhttp://picmicrocontroller877.blogspot.com/2007/08/caracteristicas-del-16f877.htmlhttp://perso.wanadoo.es/pictob/micropic.htmhttp://dspace.ups.edu.ec/bitstream/123456789/35/7/Capitulo1.pdf