PIC 16F877

download PIC 16F877

of 9

description

Se denomina microcontrolador a un dispositivo programable capaz de realizar diferentes actividades que requieran del procesamiento de datos digitales y del control y comunicación digital de diferentes dispositivos

Transcript of PIC 16F877

PIC 16F877Se denomina microcontrolador a un dispositivo programable capaz de realizar diferentes actividades que requieran del procesamiento de datos digitales y del control y comunicacin digital de diferentes dispositivos.Los microcontroladores poseen una memoria interna que almacena dos tipos de datos; las instrucciones, que corresponden al programa que se ejecuta, y los registros, es decir, los datos que el usuario maneja, as como registros especiales para el control de las diferentes funciones del microcontrolador.

Los microcontroladores se programan en Assembler y cada microcontrolador vara su conjunto de instrucciones de acuerdo a su fabricante y modelo. De acuerdo al nmero de instrucciones que el microcontrolador maneja se le denomina de arquitectura RISC (reducido) o CISC (complejo).Los microcontroladores poseen principalmente una ALU (Unidad Lgico Aritmtica), memoria del programa, memoria de registros, y pines I/O (entrada y/0 salida). La ALU es la encargada de procesar los datos dependiendo de las instrucciones que se ejecuten (ADD, OR, AND), mientras que los pines son los que se encargan de comunicar al microcontrolador con el medio externo; la funcin de los pines puede ser de transmisin de datos, alimentacin de corriente para l funcionamiento de este o pines de control especifico.En este proyecto se utilizo el PIC 16F877. Este microcontrolador es fabricado por MicroChip familia a la cual se le denomina PIC. El modelo 16F877 posee varias caractersticas que hacen a este microcontrolador un dispositivo muy verstil, eficiente y practico para ser empleado en la aplicacin que posteorimente ser detallada.Algunas de estas caractersticas se muestran a continuacin:Soporta modo de comunicacin serial, posee dos pines para ello.Amplia memoria para datos y programa.Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH; este tipo de memoria se puede borrar electrnicamente (esto corresponde a la "F" en el modelo).Set de instrucciones reducido (tipo RISC), pero con las instrucciones necesarias para facilitar su manejo.CARACTERISTICASEn siguiente tabla de pueden observar las caractersticas ms relevantes del dispositivo:CARACTERSTICAS16F877

Frecuencia mximaDX-20MHz

Memoria de programa flash palabra de 14 bits8KB

PosicionesRAMde datos368

Posiciones EEPROM de datos256

Puertos E/SA,B,C,D,E

Nmero de pines40

Interrupciones14

Timers3

Mdulos CCP2

Comunicaciones SerieMSSP, USART

Comunicaciones paraleloPSP

Lneas de entrada de CAD de 10 bits8

Juego de instrucciones35 Instrucciones

Longitud de la instruccin14 bits

ArquitecturaHarvard

CPURisc

Canales Pwm2

Pila Harware-

Ejecucin En 1 Ciclo Mquina-

Descripcin de los puertos:Puerto A: Puerto de e/s de 6 pines RA0 RA0 y AN0 RA1 RA1 y AN1 RA2 RA2, AN2 y Vref- RA3 RA3, AN3 y Vref+ RA4 RA4 (Salida en colector abierto) y T0CKI(Entrada de reloj del modulo Timer0) RA5 RA5, AN4 y SS (Seleccinesclavo para el puerto serie sncrono)Puerto B: Puerto e/s 8 pines Resistencias pull-up programables RB0 Interrupcin externa RB4-7 Interrupcion porcambiode flanco RB5-RB7 y RB3 programacion y debugger in circuitPuerto C: Puerto e/s de 8 pines RC0 RC0, T1OSO (Timer1 salida oscilador) y T1CKI (Entrada de reloj del modulo Timer1). RC1-RC2 PWM/COMP/CAPT RC1 T1OSI (entrada osc timer1) RC3-4 IIC RC3-5 SPI RC6-7 USARTPuerto D: Puerto e/s de 8 pines Bus de datos en PPS (Puerto paralelo esclavo) Puerto E: Puerto de e/s de 3 pines RE0 RE0 y AN5 y Read de PPS RE1 RE1 y AN6 y Write de PPS RE2 RE2 y AN7 y CS de PPSArquitectura internaEste trmino se refiere a los bloques funcionales que componen en PICinternamente, como la memoria RAM, la memoria FLASH, la lgica de control, etc.

Estructura interna del PIC 16F877.El PIC 16F877 se basa en la arquitectura Harvard, en la cual el programa y los datos se pueden trabajar con buses (un bus es un conjunto de lneas que transportan informacin entre 2 o ms mdulos) y memorias separadas, lo cual permite que las instrucciones y los datos tengan longitudes diferentes.Memoria de programa (FLASH)Es una memoria de 8K de capacidad con posiciones de 14 bits. En ella se graba o almacena el programa o cdigos que el microcontrolador debe ejecutar.

Mapa de memoria de programa (FLASH). La memoria est dividida en cuatro pginas de 2K cada una. La Pgina 0 va de la posicin de memoria 0005h a la 07FFh, la Pgina 1 de 0800h a 0FFFh, la Pgina 2 de 1000h a 17FFh y la Pgina 3 de 1800h a 1FFFh. El contador de programa (en este caso es de 13 bits) nos indica la direccin de la instruccin a ejecutar. Pila (Stack): son registros que no forman parte de ningn banco de memoria (los bancos de memoria los explico ms abajo) y no permiten el acceso por parte del usuario. Se usan para guardar el valor del contador de programa cuandose hace un llamado a una subrutina o a una interrupcin. Cuando el micro vuelva a ejecutar su tarea normalmente, el contador de programa recupera su valor leyndolo en la pila. Al tener una pila de 8 niveles, se pueden acumular 8 llamadas a subrutinas sin tener problemas. Vector de RESET:cuando se resetea el microcontrolador el contador de programa se pone a cero (0000h). Por esto, en la primera direccin del programa se debe escribir todo lo relacionado con la iniciacin del mismo. Vector de Interrupcin:cuando el microcontrolador recibe una llamada a una interrupcin, el contador de programa apunta a la direccin 04H de la memoria de programa, por eso all se debe escribir toda la informacin necesaria para atender dicha interrupcin.Memorias de datosComo he mencionado anteriormente, el PIC 16F877 tiene 2 memorias de datos:Memoria SRAM (Static Random Access Memory):es unamemoria de tipo voltil (cuando deja de recibir alimentacin se borran los datos que tenga almacenados) que est dividida en 4 bancos de 128 bytes cada uno. De esos 128 bytes los 32 primeros estn dedicados a los SFRs (Registros de Funciones Especiales,cumplen un propsito general en el control y configuracin del microcontrolador) y los 96 siguientes a los GPRs (Registrosde PropsitosGenerales, se pueden usar para guardar los datos temporales de la tarea que se est ejecutando).

Tabla de registros del PIC 16F877 y sus direcciones.-Memoria EEPROM:es una memoria no voltil (guarda los datos aunque le falte alimentacin) con una capacidad de 256 bytes, que permite realizar operaciones de lectura y escritura sin interferir con el funcionamiento normal del microcontrolador.Reloj u OsciladorEl pequeo ciruito externo que los microcontroladores necesitan para que se les indique la velocidad de trabajo es conocido como reloj u oscilador. En funcin del montaje que se realice se puede conseguir ms o menos precisin.En el momento de programar (o quemar los fusibles) el PIC se debe especificar el tipo de oscilador externo que se va a utilizar.El PIC 16F877 puede utilizar 4 tipos de oscilador diferentes: XT:Cristal genrico (de 1 a 4 MHz). RC:Oscilador con resistencia y condensador. HS:Cristal de alta frecuencia (de 10 a 20 MHz). LP:Cristal para baja frecuencia y bajo consumo.Las configuraciones ms utilizadas son la XT y RC:-XT:se suele utlizar con un cristal de 4 MHz, pues garantiza precisin y es bastante comercial. Internamente esta frecuencia es dividida entre 4, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz en este caso, por lo que cada instruccin se ejecuta en 1 s (1 microsegundo):

Oscilador XT: el cristal debe ir acompaado de 2 condensadores.-RC:se utiliza si no se precisa una gran precisin y se quiere economizar dinero:

Oscilador RC: slo se necesita una resistencia y un condensador.Qu son los ciclos mquina?Un ciclo mquina se define como el tiempo mnimo necesario para ejecutar una instruccin, el cual est formado por un nmero determinado de ciclos o perodos de reloj (en la mayora de los PIC estn constituidos por 4 ciclos de reloj).

En la tabla de instrucciones superior del PIC 16F877 los recuadros rojos indican los ciclos mquina que tarda en ejecutarse cada instruccin que, en este caso, son de 1 2 ciclos.