You are on page 1of 19

UNIVERSIDAD NACIONAL AUTNOMA .

DE MXICO FACULTAD DE INGENIERA

INTRODUCCION A MICROCONTROLADORES PIC CON C

Diseadores
Gerardo Ramos Vsquez Juan Francisco Hernndez Medina Carlos Ignacio Garca Snchez

Presentacin. Este curso tiene como propsito difundir el uso de las tecnologas asociadas a los micros controladores para crear materiales de apoyo a los alumnos que les permita tener un mejor desarrollo en sus clases y entender mejor el concepto desde un enfoque terico prctico. Con una herramienta micro controladores que es de uso cotidiano en dispositivos electrnicos digitales actuales (hornos de microondas, relojes, alarmas de incendios, de automviles, cerraduras electrnicas, etc.). Actividades. El curso est formado en tres partes, la primera es una introduccin en la que a los asistentes se les motiva al estudio de la teora bsica necesaria para entender el funcionamiento y programacin de los micros controladores, as como las aplicaciones actuales de estos dispositivos. La segunda parte consta de sesiones donde se exponen los conceptos necesarios para poder emplear de manera correcta los micros controladores. En la tercera y ltima parte se realizaran sesiones prcticas donde los asistentes ponen a prueba los conocimientos adquiridos en el curso al programar micro controladores para crear aplicaciones. Evaluacin. A considerar para el instructor.

Materiales Para el instructor: Proyector para computadora Manual Sala de computo

Se requiere por equipo o brigada: Una PC, con sistema operativo Windows donde se pueda instalar el software para la programacin de los micro controladores. Software y manuales necesarios para el curso. PIC16F877A Cable de conexin para puerto serial. Display tipo LCD de 16x2 caracteres. Sensor de temperatura LM35. 8 Resistencias de 680 a de watt. 8 Leds de colores de 5mm. 4 Push botton de dos terminales 4 Resistencias de 10 k a de watt. Eliminador de bateras de 9V. Circuito Integrado L293D driver de motores. Una tableta tipo Protoboard de las grandes para armar los circuitos. Pinzas de punta y de corte para electrnica.

TEMA 1

MICROCONTROLADOR PIC16F877A

1. Qu es un micro controlador? 1.1. Diferencia entre micro controladores y microprocesadores. 1.2. Conceptos importantes 1.3. Condigo fuente 1.4. Ensambladores 1.5. Interpretes 1.6. Compiladores 2. La familia de los PICs 2.1. Porque los PICs se han colocado en el mercado 2.2. Gama baja o bsica 2.3. Gama media 2.4. Gama alta 2.5. Gama mejorada 2.6. Los de 8 pines 3. El PIC16f877 3.1. El micro controlador PIC 16F877A 3.2. Recursos 3.3. Diagrama de sus pines 3.4. Descripcin de sus pines y puertos 3.5. Organizacin de la memoria 3.6. Bancos y registros 3.7. Palabra de configuracin 3.8. Instrucciones orientadas a bits 3.9. Instrucciones orientadas a constantes y de control 3.10. Instrucciones bsicas para el compilador CCS 3.11. Un poco de orden 3.12. El PWM (pulse wide modulation)

TEMA 2 PROGRAMACION EN C E IMPLEMENTACION DEL PIC16F877 1. El WinPIC800. 2. El bootloader. 3. Estructuras de control con el PIC. 4. Puerto serie para programar y comunicarse con el PIC. 5. Modulo LCD (cristal lquido). 6. Sensor de temperatura. 7. Construccin de un termmetro con el PIC. 8. Control de un motor de pasos con el PIC. 9. Control de un motor de DC (corriente continua con el PIC). 10. Utilizacin de un encoder (contador de pulsos) para mover un motor. 11. Simulacin de un control remoto con un diodo infrarrojo a travs del PIC.

TEMA 1 MICROCONTROLADOR PIC16F877 1Qu es un micro controlador?


Un microcontrolador es un tipo de computadora en miniatura que puedes encontrar en los pequeos dispositivos electrnicos. Unos ejemplos comunes de aparatos que utilizamos a diario y que en su interior tienen uno 0 varios micro controladores se muestran en la figura siguiente. Si estos dispositivos solo tienen botones y displays, es muy probable que posean un cerebro constituido por un microcontrolador programable.

Microcontrolador Dispositivo electrnico que posee todas las caractersticas de una PC, claro que en pequea escala. Pues cuenta con puertos de entrada y salida de informacin, puertos de comunicacin, Unidad aritmtica Lgica, memoria interna (RAM y ROM), Y una Unidad Central de Procesos. Microprocesador Este elemento en cambio, solo es un Unidad Central de Procesos, que de manera externa (desde un punto de vista de una PC) hay que conectarle la memoria, puertos y unidades de almacenamiento (por eso se monta en una tarjeta madre para poder utilizarlo), tiene la ventaja de ser mas escalable que un microcontrolador.

Algo muy importante cuando se estudia cualquier microcontrolador, es el entender cul es la diferencia entre cdigo fuente, cdigo objeto, compilador y ensamblador.

Cdigo Fuente EI cdigo fuente, es almacenado en el archivo fuente, este archivo est escrito con el American Standar Code for Information Interchange (ASCII) y contiene las sentencias del programa y comentarios (utilizados para que los humanos puedan entender lo que el programa est ejecutando). EI archivo fuente es creado en un editor estndar (como NotePad 0 WordPad) 0 puede ser construido en un editor IDE (ambientes de desarrollo integrado) que posee mltiples aplicaciones que apoyan en el desarrollo de la aplicacin. EI archivo fuente es usado como entrada para los ensambladores, interpretes 0 compiladores que producen las instrucciones necesarias para controlar un dispositivo. En el caso de un ensamblador 0 compilador, el cdigo fuente es convertido en un archivo objeto o archivo hex, que finalmente ser grabado dentro del microcontrolador que controla el dispositivo. El intrprete es construido dentro del microcontrolador del dispositivo y ejecuta el archivo fuente que es una serie de instrucciones y comandos que determinan inmediatamente salidas a procesos intermedios. El archivo fuente puede incluir otros archivos que proveen que adiciones al cdigo fuente o prototipos para las libreras de funciones o datos requeridos por la aplicacin. Los archivos include para ensamblar lenguajes de programacin generalmente terminan con *.inc que es la extensin con la que terminan los archivos de sistema. Los archivos include para el lenguaje de programacin C tienen como extensin una *.h los ensambladores y compiladores proveen de estos archivos include para hacer las tareas del desarrollo de aplicaciones ms sencillas, basndose en los requerimientos de tu aplicacin. Al finalizar las operaciones de ensamblar o compilar se produce en un archivo objeto (usualmente terminado en *.obj) o un archivo hex. El archivo hex es la aplicacin completa, lista para programarse dentro de un microcontrolador. El archivo objeto est conectado a otros archivos objeto para producir el archivo hex. El ms popular de los formatos para archivos hex es el formato Intel 8 bit conocido como INHXM8. Otros ejemplo de un formato diferente utilizado por los microcontroladores y programadores de microcontroladores de Motorola es el llamado *.S9 o *.S19.
Ensambladores Al programar en un lenguaje ensamblador se producen los cdigos ms eficientes en cuanto a tamao, numero de instrucciones y manejo de recursos del microprocesador. En mi opinin es un lenguaje diseado por ingenieros electrnicos para ingenieros electrnicos, las muchas crticas que recibe de los ingenieros en computacin es el no poder implementar estructuras de control avanzados de manera estructurada. En defensa del ensamblador podemos decir que con dos o tres lneas podemos prender un

led, resultado que no alcanzara ningn lenguaje de alto nivel despus de ser compilado. Moraleja si el objeto es manejar en su totalidad y de manera eficiente un microprocesador o microcontrolador programar en ensamblador. Si los recursos no son limitados en cuanto a la memoria, pues se puede comprar el dispositivo que soporte las necesidades del lenguaje de alto nivel y adems se requiere realizar operaciones aritmticas complejas la mejor opcin es programar en un lenguaje de alto nivel. Hay que decir que el lenguaje ensamblador es complicado. A pesar de esto, es el lenguaje ms utilizado en los robots prototipo. Los pic tienen un juego reducido de 35 poderosas instrucciones (familia 16Fxxx). Cabe decir que los diferentes tipos de microprocesadores tienen muchas instrucciones parecidas que son muy similares, lo cual hace muy difcil el poder programar diferentes microcontroladores sabiendo utilizar un lenguaje Ensamblador de manera eficiente. Simulador: Cuando tu ya ests viendo fluir tu cdigo en algn simulador, estas en el comienzo de convertirte en un experto desarrollador de lenguaje ensamblador. "Myke Predko" Los inconvenientes de programar en ensamblador son:
1.- EI cdigo no es totalmente portable. (Un cdigo para un micro puede no funcionar en

un micro diferente). 2.- Es muy difcil explicar la pelcula que observamos en nuestra cabeza a otro programador. 3.- Es difcil pasar de un lenguaje ensamblador a uno de alto nivel. PRINCIPALMENTE a pesar de los comentarios negativos anteriores, el programar en ensamblador es muy conveniente en los siguientes casos:
1.- Desarrollo de prototipos robticos sencillos.

2.- Programacin de interfaces dedicadas 0 especificas. 3.- Cuando nuestra aplicacin tiene mucho contacto con el exterior y el procesamiento no sea complejo. Interpretes Cuando las computadoras estuvieron disponibles, prcticamente en todos los desarrollos en software se utilizo un intrprete (usualmente BASIC) que era automticamente cargado dentro de las computadoras cuando eran arrancadas par primera vez. Si eres joven esta sentencia te sorprender, pues ya conoces la maravilla del sistema operativo que controla tu computadora. Los intrpretes realizaban muchas de las funciones bsicas que se consideran normales para los sistemas operativos. La IBM PC cambio esto con la introduccin de un simple sistema operativo que poda ejecutar aplicaciones binarias 0 ejecutar constructores con el interprete BASIC. Un intrprete es un programa que corre dentro de la computadora y lee y ejecuta otro programa que no necesita convertir a algn formato especfico para la computadora. Esto es solamente una simple interfaz dentro de la computadora. Compiladores Los compiladores trabajan bajo una serie de reglas lgicas simples para convertir sentencias de lenguajes de alto nivel al lenguaje ensamblador. Los modernos compiladores permiten simplificar el cdigo ensamblador, dando como resultado aplicaciones ms pequeas y ms eficientes. Si estas interesado en aprender un lenguaje ensamblador para un procesador especifico, no debes de sorprenderte al descubrir que el cdigo que producen los modernos compiladores son unos excelentes ejemplos para aprenderlo. Par ejemplo los programas en C son convertidos sentencia par sentencia en instrucciones de lenguaje ensamblador (compilado) a partir de este cdigo ensamblador se obtiene el cdigo objeto que finalmente es programado dentro del procesador. La familia de los PICS
En la corta vida de los PICs ya ocupan las posiciones de cabeza en el ranking mundial, compartiendo codo a codo con gigantes como Intel y Motorola. En 1990 ocupaban el puesto vigsimo y actualmente son ms de 100 millones de PICs los que vende Microchip cada ario, 10 que ha alzado al segundo puesto del ranking mundial. 1.2.1 EI por que los PICS se han colocado en el mercado Los PIC tienen una gran aceptacin en la comunidad de tcnicos y aficionados que trabajan con microcontroladores. Las caractersticas que han provocado esta gran aceptacin son: Sencillez de Manejo Buena Informacin Precio

Buen promedio de parmetros: velocidad, consumo, tamao, alimentacin, cdigo compacto, etc. Herramientas de desarrollo fciles y baratas Diseo rpido Disponibilidad inmediata Compatibilidad del software en todos los modelos de la misma gama Su coste es comparativamente inferior al de los competidores Poseen una elevada velocidad de funcionamiento Tienen un juego de instrucciones reducido Bajo consumo unido a un amplio rango de voltajes de alimentacin. Muchas herramientas se pueden recoger gratuitamente por Internet (www.microchip.com). Existen una gran variedad de herramientas que permiten grabar, depurar, borrar y comprobar el comportamiento de los PICs. La gran variedad de modelos de PIC permite elegir el que mejor responde a los requerimientos de la aplicacin.

1.2.2 Gama baja 0 bsica PIC16C5X Se trata de una serie de PIC de recursos limitados, pero con una de las mejores relaciones coste/presentacin. Sus versiones estn encapsuladas con 18 y 28 pins y pueden alimentarse a partir de una tensin de 2.5 en el caso de los "LF", 10 que les hace ideales en las aplicaciones que funcionan con pilas. Tienen un repertorio de 33 instrucciones cuyo formato de 12 bits. No admiten ningn tipo de interrupcin y la pila s610 dispone de dos niveles. 1.2.3 Gama Media PIC16FXXX Es la gama ms variada y completa de los PICs. Abarca modelos con encapsulado desde 18 patitas hasta 68, cubriendo varias opciones que integran abundantes perifricos.

Dentro de esta gama se halla el PIC16F877A que es el microcontrolador que vamos a utilizar en el robot. El repertorio de Instrucciones es de 35 a 14 bits cada una y compatible con el de la gama baja. Sus distintos modelos contienen todos los recursos que se precisan en las aplicaciones de los microcontroladores de 8 bits. Tambin dispone de interrupciones y unas Pila (stack) de 8 niveles que permite el anidamiento de subrutinas. 1.2.4 Gama Alta PIC17CXXX con instrucciones de 16 bits Se alcanzan las 58 instrucciones de 16 bits en el repertorio y sus modelos disponen de un sistema de gestin de interrupciones sectorizadas muy potente. Tambin incluyen variados controladores de perifricos, puertas de comunicacin serie y paralelo con elementos externos y un multiplicador hardware de gran velocidad. Quizs la caracterstica ms destacable de los componentes de esta gama es su arquitectura abierta, que consiste en la posibilidad de ampliacin del microcontrolador con elementos externos. Para este fin, las patitas sacan el exterior las lneas de los buses de datos, direcciones y control, a las que se conectan las memorias o controladores de perifricos. Esta filosofa de construccin del sistema es la que se emplea en los microprocesadores y no suele ser prctica habitual cuando se emplean microcontroladores. 1.2.5 Gama Mejorada PIC18FXXX con instrucciones de 16 bits En los inicios del tercer milenio Microchip present la gama mejorada de los microcontroladores PIC con la finalidad de soportar las aplicaciones avanzadas en las reas de automocin, comunicaciones, Ofimtica y control industrial. Sus modelos destacaron por su alta velocidad (40 MHz) y su gran rendimiento. 1.2.6 Los de 8 pines PIC12(C) FXXX Se trata de PICs que ha acaparado la atencin del mercado. Su principal caracterstica es su reducido tamao, al disponer un encapsulado de 8 patitas. Se alimenta con un voltaje de corriente continua comprendido entre 2.5 V Y 5.5 V, Y consumen menos de 2 mA cuando trabaja a 5 V Y 4 MHz El formato de sus instrucciones puede ser de 12 o 14 bits y su repertorio es de 33 o 35 instrucciones, segn pertenezca a la gama baja o media respectivamente.

1.3. El PIC16F877 A
1.3.1 El microcontrolador PIC16F8777 A
Este microcontrolador pertenece a la familia PIC 16F87x, son una combinacin del PIC16F84 con la inclusin de los recursos de los PIC16C73 y 74. Incorporan la memoria FLASH, con una capacidad de 4k 8k (segn el modelo), sin cambiar la estructura interna del procesador y conservando el mismo repertorio de instrucciones.

1.3.2 Recursos
Tiene una estructura de 4 bancos, seleccionables a travs de con los bits RPO y RP1 del registro STATUS. El nmero de puertos en los PIC16F876 y 873 es de 3 (28 pines) y el nmero de puertos en los PIC16F877 y 874 es de 5 (40 pines). Caractersticas: 1.- Poseen dos mdulos CCP (captura, comparacin y pwm). 2.- Comunicacin Serie (rs232, 12C y SPI) 3.- Comunicacin Paralelo 4.- Convertidor AD.

Diagrama de pines

Descripcin de sus pines y puertos


Los microcontroladores PIC16F87X encapsulados con 28 pines disponen de tres puertos de E/S (A, S Y C), mientras que los que tienen 40 pines poseen cinco (A, S, e, D y E). Todas las lneas de estas puertas son multifuncionales, es decir, realizan diversas funciones segn estn programadas. Sin embargo, todas tienen la capacidad de trabajar como lneas de E/S digitales. Puerto A Slo dispone de 6 lneas, denominadas RAO-RA5. El registro que las configura como entras o salidas se llama TRISA. Si el bit O del registro TRISA se pone a 1, la lnea O (RAO) de la puerta A funciona como entrada. Si se pone a O funciona como salida. Los pines RAO/ANO, RA1/AN1, adems de funcionar como E/S digitales tambin pueden actuar como canales de entrada al convertidor analgico digital (CAD). Los pines RA2/AN2Nrefy RA3/AN3Nref+, pueden funcionar como E/S digitales, como canales AN2 y AN3 del CAD y como entradas de voltaje de referencia para el CAD. El pin RA4/TOCKI acta como E/S digital y como entrada de la seal de conteo para el Timer 0. Por ltimo, la patita RA5/AN4/ SS tiene tres funciones E/S digital, canal 4 del CAD y seleccin del modo esclavo cuando se trabaja con la comunicacin serie sncrona. Puerto B Dispone de 8 lneas bidireccionales digitales cuya funcin se elige mediante la programacin del registro TRISS. Todos los pines del Puerto S poseen de una resistencia interna de pull-up al positivo de la alimentacin, que queda conectada cuando el bit RSPU (7) del registro OPTION, tiene valor O. Las lneas RS<7-4> ~y RSO/ INT pueden programarse para generar una interrupcin externa cuando alguna de ellas cambia de estado. Puerto C Consta de 8 lneas bidireccionales cuyo sentido se configura mediante el registro TRISC. Todas las patitas de esta puerta tienen multiplexadas diferentes funciones. RCOIT10S01T1CKI: Esta lnea puede actuar como E/S digital, como salida del Timer1 o como entrada de impulsos para el Timer1. RC11T10SIICCP2: E/S digital, entrada del oscilador del Timer1, entrada del mdulo de captura2, salida del comparador 2, salida del PWM2. RC2/CCP1: E/S digital, entrada del modulo de de captura1, salida del comparador, 1 salida del PWM1. . RC3/SCK/SCL: E/S digital, seal de reloj en modo SPI, seal de reloj en modo 12C. RC4/SDI/SDA: E/S digital, entrada de datos en modo SPI, lnea de datos en modo 12C. RC5/SDO: E/S digital, salida de datos en modo SPI.

RC6ITX/CK: E/S digital, lnea de Tx en el USART, seal de reloj sncrona en transmisin serie. RC7IRX1DT: E/S digital, lnea de Rx en el USART, lnea de datos en transmisin serie sncrona. Puerto D Este puerto es de 8 bits, slo lo poseen los encapsulados de 40 pines de la familia P16F877x, su registro de configuracin es el TRISD. Adems de usarse como lneas de E/S digitales normales, implementan una puerta paralela esclava de 8 lneas (PSP), que sirve para permitir la comunicacin en paralelo con otros elementos del sistema. . Puerto E Este puerto es de 3 bits, slo lo poseen los encapsulados de 40 pines de la familia P16F877x, su registro de configuracin es el TRISE, las funciones de capa patita son las siguientes:

REOI RDIAN5: E/S digital, seal de lectura en el modo de PSP, canal 5 del CAD. RE1/WRIAN6: E/S digital, seal de escritura en modo PSP, canal 6 del CAD. RE21 es IAN7: E/S digital, seleccin de chip en el modo PSP, canal 7 del CAD.

1.3.5 Organizacin de la memoria En primer lugar tenemos que distinguir claramente entre tres tipos de memoria: Una: la memoria EEPROM donde almacenaremos el programa que haremos esta memoria solo haremos, podr ser leda por el pic (el pic va leyendo las instrucciones de programa almacenado en esta del memoria y las va ejecutando . Al apagar el pic esta memoria no se borra. ejecutando). Dos: la memoria RAM en cuyos registros se irn almacenando los valores de las variables que nosotros queramos y cuando nosotros queramos (por programa al apagar el pic esta memoria programa), se borra. Tres: la memoria EEPROM para datos es un espacio de memoria EEPROM en la que se datos, pueden guardar variables que queremos conservar aunque se apague el pic No se tratar aqu pico por ser una memoria ms difcil de emplear.

Bancos-y-registros registros

1.3.7. Palabra de configuracin


Es una Posicin reservada de la memoria de programa FLASH, que ocupa la direccin Ox2007 y que slo es accesible durante la programacin del PIC. El valor de sus bits determina algunas caractersticas de funcionamiento.

CP Bit de proteccin de la memoria flash del programa (bit 13) 1 = Proteccin del cdigo activada O = Cdigo no protegido. No implementado (bit 12) DEBUG Modo de (monitoreo) debug en circuito. (Bit 11) 1 = Monitoreo en el circuito desactivado, RB6 y RB7 son pines de propsito

WRT1: WRTO Bits de escritura a la memoria flash de programa (bit 10-9) Para el PIC16F877 A/876: 11 = La proteccin de la escritura esta desactivada. 10 = Protegido desde 0x0000 a 0x00FF 01 = Protegido desde 0x0000 a 0x07FF 00 = Protegido desde 0x0000 a 0x0FFF

Instrucciones orientadas a bits output_low (GP0); output_high (GP0); output_low (GP1); output_high (GP1); Instrucciones orientadas a constantes y de control #define GP0 PIN_A0 #define GP1 PIN_A1 Float A=4, B=23;

Instrucciones bsicas para el compilador CCS #include "16f877A.h" #device adc=10 //Usa resolucin de 10 bits. #use delay (clock=4000000) #fuses xt,nowdt,noput,nobrownout,nolvp,noprotect Void main (void) { Instrucciones del programa a ejecutar } Un poco de orden (ejemplo) #include <12F629.h> #FUSES NOWDT #FUSES INTRC #FUSES NOCPD #FUSES NOPROTECT #FUSES MCLR #FUSES NOPUT #FUSES BROWNOUT #use delay (clock=4000000) //No Watch Dog Timer} //Internal RC Osc //No EE protection //Code not protected from reading //Master Clear pin disabled //No Power Up Timer //Reset when brownout detected

Void main () { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_comparator(NC_NC); setup_vref(FALSE); set_tris_a(0x00); //con esta instruccion programas que el puerto sea unicamente salida for(;;) { output_high(PIN_A0); delay_us(9); output_low(PIN_A0); delay_us(9); } // TODO: USER CODE!! }

El PWM (pulse wide modulation)


En este modo de trabajo, se consiguen impulsos lgicos cuya anchura del nivel alto es de duracin variable, que son de enorme utilidad para controlar motores, dispositivos de estado slido o grabar informacin al digitalizarla. El pin RC2/CCP1 es la salida del primer mdulo PWM, es decir vara entre los niveles lgicos O y 1 a intervalos de tiempo diferentes en base a un periodo establecido en la programacin. La variacin del nivel alto con respecto al nivel bajo se llama ciclo de trabajo (Duty Cycle). Para lograr el cambio del pin de salida RC2/CCP1, o bien ya sea el pin RC1/CCP2 donde se encuentra el segundo modulo PWM que contiene este modelo de PIC, se utiliza un comparador que pone a 1 el set en un flip-flop cuando el valor del registro PR2 coincide con la parte alta del TMR2, instante en el que el TMR2 toma el valor 0x00. Acto seguido el flip-flop se resetea (se

pone a 0) cuando otro comparador detecta la coincidencia del valor existente en CCPR1H con el de la parte alta del TMR2. De esta manera, variando los valores que se cargan en PR2 y en CCPR1 L (que luego se pasa a CCPR1 H) se vara el intervalo de tiempo en el que el pin de salida est en 1 0.

Ejemplo #include <18F452.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) void main() { setup_ccp1(CCP_COMPARE_CLR_ON_MATCH); // Configure CCP1 in COMPARE mode setup_timer_1(T1_INTERNAL); // Set up timer to instruction clk while(TRUE) { while(input(PIN_B0)) ;

// Wait for keypress

setup_ccp1(CCP_COMPARE_SET_ON_MATCH); // Configure CCP1 to set CCP_1=0; // C2 high now set_timer1(0); CCP_1 = 500; // Set high time limit // to 100 us // limit is time/(clock/4) // 500 = .0001*(20000000/4)

setup_ccp1(CCP_COMPARE_CLR_ON_MATCH); // Configure CCP1 in COMPARE // mode and to pull pin C2 // low on a match with timer1 delay_ms(1000); } } // Debounce - Permit only one pulse/sec

TEMA 2 PROGRAMACiN EN "C" E IMPLEMENTACIN DEL PIC16F877


Una gran ventaja de los PIC y que los hace estar entre el microcontrolador preferido a nivel mundial; es su bajo costo, tanto del chip en si, como de sus componentes electrnicos necesarios para hacerla funcionar. Otra situacin es que Microchip opto por que sus software's programadores fueran sencillos y no necesitaran de licencias especiales para programar la memoria de los integrados. Estas dos estrategias le han funcionado de maravilla a Microchip. Actualmente hay un esfuerzo mundial entre fanticos de los PICs para crear herramientas para programarlos y el mejoramiento de estas herramientas es constante. Actualmente el software ms rpido para programar un Pie y que tiene muy buena compatibilidad con muchas PCs es el WinPIC800. Para instalar el software WinPic800, bastar con ejecutar el archivo Winpic800.exe, se instalara en la carpeta C:\Winpic800. Una vez hecho esto ejecutar el EXE con doble click y establecer la configuracin del hardware.

Para grabar un Pic:


1. Seleccionar el dispositivo a programar, elegimos Pie F, luego el Pie 16F877 por ejemplo. 2. Abrir el archivo que contiene los datos a programar en el Pic. El programa trabaja con ficheros .HEX. En el men Archivo seleccionamos Abrir archivo, en el cuadro de dilogo que nos aparece seleccionamos el fichero que deseamos grabar en el Pic. 3. Pulsamos el botn Config. para ajustar el tipo de oscilador y los bits de configuracin (de ser necesario). 4. Para programar el dispositivo seleccionamos Programar todo del men Dispositivo. Con ello comenzar la grabacin. El bootloader es un programa pequeo que nos permite escribir solamente en la memoria de programa flash del microcontrolador PIC a travs del puerto serie de una computadora utilizando nicamente el botn de reset y la electrnica necesaria para la comunicacin 232 serial. La primera vez tiene que ser grabado con un programador quemador, pero una vez instalado, el grabar sobre la memoria flash es muy rpido y prctico. Tiny Bootloader Es muy pequeo para todas las versiones de PIC 16F, 18F Y dsPIC. (ocupa menos de 100 palabras). Permite escribir en memoria FLASH o EEPROM y las palabras de configuracin. Despus de un reset espera 1 segundo (puede ajustarse a mas o menos tiempo) a que la PC responda. Permite seleccionar fcilmente la velocidad de baudaje.

2.2 COMUNICACIN USANDO EL PUERTO SERIE DE UNA PC CON UN PIC.


La comunicacin serial o serie surgi debido a la necesidad que se tena de reducir el nmero de cables para trasmitir seales digitales a grandes distancias. Una forma para hacer esto fue a travs de las lneas telefnicas y el uso de los modems. Un modem (modulador-demulador) es un dispositivo que, del lado trasmisor, modula las seales digitales para enviarlas por la lnea telefnica en forma de cambios de frecuencia y, del lado del receptor, remodula estos cambios de frecuencia para convertirlos en pulsos digitales. Comunicacin Sncrona y comunicacin Asncrona. A grandes rasgos en la comunicacin sncrona debe esperarse una seal de tiempo para empezar a trasmitir y recibir, mientras que en la asncrona, el envo y recepcin de datos no depende de ninguna seal de tiempo. Debido a que puede existir transmisin de datos en cualquier momento, es necesario que la palabra digital que se vaya a trasmitir, tenga cierto formato que reconozcan todos los dispositivos serie.


El bit de inicio debe ser siempre un nivel bajo. Los bits de datos, marcados con Dn, pueden ser 4,5,6,7 u 8. El bit de paridad puede estar o no presente. Tambin existe el bit de parada que puede ser 1, 1 1/2, 2 bits. De esta forma, una comunicacin serie

debe empezar siempre con un nivel bajo y acabar con un nivel alto. El bit de paridad sirve para detectar errores en la comunicacin. Estandar RS-232C Para que una comunicacin serie funcione correctamente se necesita, a parte de las caractersticas ya mencionadas, que los niveles de voltaje, que representan el "1" Y el "O" sea iguales para cada caso; se necesita tambin de unas seales de protocolo para preparar a los dispositivos a trasmitir o recibir. Todo esto se incluye en el estndar RS-232C que se explica a continuacin. Publicado par la Asociacin de Industrias Electrnicas (EIA por sus inciales en ingls), el estndar RS-232C define las seales de protocolo, los niveles de voltaje de las seales y un conectar de 25 terminales, necesarios para la comunicacin serie actualmente este estndar es el ms usado para la comunicacin serie y es el que viene incluido en la mayora de las computadoras personales. Esta especificado para una distancia mxima de 15m (50 pies) a una velocidad mxima de 20,000 baudios (bits por segundo). Para velocidades de transmisin menores, se pueden usar cables de 610 a 915 m (2000 a 3000 pies). Existen otras versiones de este estndar, como el RS-422 y el RS-423, en los que se ve mejorada la velocidad de transmisin principalmente. El conectar RS-232C tiene 25 terminales, aunque en la mayora de los sistemas serie, slo se ocupan las terminales 1 a 8 y I~ 20; existiendo inclusive computadoras que traen un conectar serie RS-232 de 9 terminales. La razn de esta reduccin de terminales es que las patas restantes son lneas secundarias, es decir, lneas que tienen la misma funcin pero que nos son usadas a menos que sean sistemas muy complejos de transmisin. Por este motivo se describirn slo las terminales ms comunes. Las terminales descritas en amabas figuras con excepcin de TxD, RxD y GND, son las que conforman las seales de protocolo. Un protocolo es la forma en que la computadora y la interfaz se piden permiso para trasmitir datos, para avisar que ya estn preparados para recibir datos, para interrumpir la transmisin, etc. El protocolo es la forma en que dialogan computadoras e interfaz y se lleva a cabo de la siguiente manera: despus de encender la computadora, sta corre una rutina de auto verificacin y enva la seal DTR a la interfaz. La interfaz responde con la seal DSR para indicar que est funcionando. La computadora enva la seal RTS a la interfaz y despus de un intervalo apropiado de tiempo, la interfaz responde con CTS. La computadora entonces enva los datos serie por la terminal TxD.

Cuando la computadora debe recibir datos, el protocolo es el mismo, slo que la computadora enva las seales que enviaba la interfaz y viceversa, enviando la interfaz, adems, la seal CD. Un protocolo posterior puede llevarse a cabo, ya dentro del programa, para indicarle al dispositivo externo el inicio de la transmisin y el fin de datos, o por parte del dispositivo hacia la computadora para pedirle ms datos, etc. Este protocolo se explicar cuando se desarrolle el programa de comunicacin definitivo. En cuenta a los niveles de voltaje, las seales RS-232C estn estandarizadas a los siguientes valores; Un "1" lgico o marca es un voltaje entre -3 y -15 volts. Un "O" lgico o espacio es un voltaje entre +3 y +15 volts. Debido a que la interfaz trabajar con circuitos TIL y CMOS deben convertirse estos voltajes a niveles de +5 volts para el "1" Y O volts para el "O". Esto se logra utilizando un circuito integrado el MAX232.

Comunicacin sncrona La comunicacin se realiza sobre dos lneas, la DT que traslada en los dos sentidos los bits a la frecuencia de los impulsos de reloj que salen por la lnea CK desde el maestro. Se utiliza para comuncarse con perifricos como memorias, conversores, etc.

En ambos modos las lneas de comunicacin son las dos de ms peso de la Puerta C: RC6ITX/CK y RC7/RX/DT. Como nuestro fin es la comunicacin con un dispositivo que posea comunicacin serie y no a un nivel de comunicacin circuito integrado con circuito integrado (esclavo y maestro). Se describir la comunicacin Asncrona. Configuracin Comunicacin Asncrona Los cuatro bloques que configuran la arquitectura del USART, en modo asncrono, son: 1. Circuito Maestro 2. Generador de baudios 3. Transmisor asncrono Mdulo de comunicacin USART del PIC16F877 Este mdulo es capaz de soportar la comunicacin serie sncrona y asncrona

Comunicacin asncrona Las transferencias de informacin se realizan sobre dos lneas TX (transmisin) y RX (recepcin), saliendo y entrando los bits por dichas lneas al ritmo de una frecuencia controlada internamente por el USART (Universal Synchronous Asynchronous Receiver Transmitter). Se utiliza para comunicarse con dispositivos tales como el monitor CRT, el ratn, mdems o el ordenador PC. Receptor asncrono Circuito maestro Acta sobre la patita RC7/RX/DT, que es por donde se recibe el bit de informacin o control y se encarga de muestrear tres veces su valor, para decidir ste por mayora. Transmisor asncrono El dato que se desea transmitir por el USART transmisor se deposita en el registro TXREG y a continuacin se traspasa al registro de desplazamiento TSR, que va sacando los bits secuencialmente y a la frecuencia establecida. Adems, antes de los bits del dato de informacin incluye un bit de inicio y despus de sacar todos los bits aade un bit de PARADA. El USART receptor recibe uno a uno, los bits, elimina los dos de control y los de informacin una vez que han llenado el registro de desplazamiento RSR los traslada automticamente al registro RCREG, donde quedan disponibles para su posterior procesamiento.

Le secuencia de pasos para configurar la transmisin en el USART es la siguiente: 1. Hay que configurar las lneas RC6 como salida y RC7 como entrada 2. Poner SYNC = O Y SPEN = 1 para activar la comunicacin asncrona y la comunicacin puerto serie respectivamente. 3. Si se desea trabajar con interrupcin poner TXIE = 1, adems de habilitar las interrupciones en general (registro INTCON). 4. Si el dato consta de 9 bits, en lugar de los 8 tpicos, poner el bit TX9 = 1. El noveno bit se coloca en TX9D (TESTA). 5. Se carga el valor X adecuado en el registro SPBRG, para producir la frecuencia de trabajo deseada. Hay que controlar el bit BRGH (alta y baja velocidad) 6. Activar la transmisin con TXEN = 1. El bit TXIF tendr valor 1, ya que TXREG se encuentra vaco. 7. Cargar en TXREG el dato a transmitir. Comienza transmisin.

Receptor asncrono Los datos se reciben en serie, bit a bit, por la patita RC7 y se van introduciendo secuencialmente en el registro desplazamiento RSR, que funciona a una frecuencia 16 veces ms rpida que la de trabajo. Cuando el dato consta de 9 bits hay que programar el bit RX9 = 1 Y el noveno bit de informacin se colocar en el bit RX9D del registro RESTA. Cuando CREN = 1 en el registro RCSTA, se habilita la recepcin. 1. Hay que configurar las lneas RC6 como salida y RC7 como entrada 2. Poner SYNC = O Y SPEN = 1 para activar la comunicacin asncrona y la comunicacin puerto serie respectivamente. 3. Se carga con el valor X al registro SPBRG para trabajar con la frecuencia deseada, controlando adems el valor de BRGH. 4. Si se desea que se genere una interrupcin con la llegada del bit PARADA, se pone RCIE = 1, adems de habilitar las interrupciones en general. 5. Poner RX9 = 1 para permitir la recepcin del bit 9. 6. Para detectar la direccin, poner ADDEN = 1. 7. SE habilita la recepcin poniendo CREN= 1. 8. Al complementarse la recepcin RCIF se pondr a 1 y se produce una interrupcin si se haba permitido. 9. Se lee el registro Resta y se averigua si se ha producido algn error. 10. Lee los 8 bits del registro RCREG para determinar si el dispositivo ha sido el direccionado. 11. Si se ha producido algn error, poner CREN=0. 12. Si ha sido direccionado el dispositivo, poner ADDEN=0 para permitir la recepcin de la informacin.

Configuracin del circuito completo de la interfaz serie.

http://verona.fi-p.unam.mx/crofi/ http://www.microchip.com/ http://es.wikipedia.org/wiki/Microcontrolador_PIC http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

You might also like