Click here to load reader

Guia de Microcontroladores

Embed Size (px)

DESCRIPTION

conceptos básicos de microprocesadores

Citation preview

Universidad del Azuay Facultad de Ciencias de la Administracin Escuela de Ingeniera de Sistemas y Telemtica

Gua de MicrocontroladoresBiografas

Universidad del Azuay Facultad de Ciencias de la Administracin Escuela de Ingeniera de Sistemas y Telemtica

Gua de Microcontroladores

Autores: Danny Noboa Daro Espinoza

Revisin: Ing. talo Mogrovejo

Febrero/2014Contenido1.Elementos Generales de Arquitectura Interna de la IBM PC31.1.Introduccin a los Sistemas Microprocesados31.2.Descripcin de la Arquitectura IBM PC/AT41.3.Evolucin de la Arquitectura AT61.4.Inside the MainBoard61.5.Discusin sobre Partes Componentes71.5.1.Procesadores (Microcontroladores)71.5.2.Bus de Sistema81.5.3.Chipset81.5.4.Memorias92.Interrupciones en la IBM PC Generalidades112.1.Tratamiento de interrupciones en la PC112.2.Interrupciones por hardware en la Pc152.3.Controladores de interrupcin 8259A172.4.Evolucin en el manejo de interrupciones202.5.Registros y transferencias para el manejo de interrupciones233.Puerto Paralelo273.1.Tipos de Puertos273.2.Pines y Registros294.Puerto Serial324.1.Conectores y pines324.2.Protocolo de comunicacin335.Puerto USB355.1.Especificaciones generales355.2.Historia355.3.Evolucin de los estndares USB365.3.1.USB 2.0405.3.2.USB 2.X vs Firewire435.3.3.Interface USB en la IBM Pc445.3.4.Cables y Conectores445.4.Especificaciones Elctricas455.5.Administracin de la energa en el bus456.Microcontroladores476.1.Definicin476.2.Diferencia entre microprocesadores y microcontroladores476.3.Arquitectura de un microcontrolador486.4.Microcontroladores de 8 bits497.PIC507.1.Definicin507.2.Pic 16X84507.3.PIC 16X (F) XX507.4.PIC 16F87X527.5.17CXXX577.6.PIC 18C(F)XXX618.Programacin de PIC708.1.Instalacin del software necesario708.2.PIC 16F877A708.3.Diagrama de pines y funciones729.El lenguaje de programacin MIKROC759.1.Ventajas e inconvenientes759.2.Los lenguajes usados para microcontroladores769.3.Repertorio de instrucciones MikroC7710.Prcticas7910.1.Manejo de LEDS7910.2.Manejo de Repeticiones8010.3.Manejo de Pulsadores8210.4.Manejo de Displays8410.5.Manejo de LCD8610.6.Manejo de Sonido8910.7.Manejo de Teclados9110.8.Manejo de Interrupciones91Referencias102Anexos103ndice de Tablas y Figuras103Biografas106

Gua de MicrocontroladoresSumario

Ing. talo MogrovejoUniversidad del Azuay1

Elementos Generales de Arquitectura Interna de la IBM PCIntroduccin a los Sistemas Microprocesados

Figura 1 Diagrama de Bloques de un Sistema Microprocesado (Mogrovejo, 2013)Partes del Sistema MicropocesadoCPU: Unidad Central de ProcesoALU: Unidad aritmtica LgicaContador de Programa: Se encarga de ver la siguiente lnea a ejecutar.Reset: Vuelve a 0 en micro.Decodificador de Instrucciones: Decodifica las instrucciones que se guardan en la memoria de programa a lenguaje ensamblador que es el lenguaje de mquina.Circuito de Reloj: Generador de relojMemoria de Datos: Es la que se encarga de guardar datos que usa el programa de manera voltil, es decir clculos, valores etc.Memoria de Programa: Es la que se encarga de guardar las instrucciones del programa a realizarse.Memoria de Perifricos: Son memorias para controlar perifricos.Buses: Son los encargados de la comunicacin de todos los componentes del sistema.Bus de Direcciones: Es el que se encarga de llevar la direccin o ubicacin de un componente o de un dato guardado en memoria.Bus de Control: Es el encargado de controlar los procesos de lectura o escritura, controla la habilitacin de los dispositivos.Figura 2 Buses de datos, direcciones y control

Perifrico de Sistemas Microprocesados: Es todo aquello que puede ser controlado por un microprocesadorDescripcin de la Arquitectura IBM PC/AT En julio de 1980 IBM decide empezar a desarrollar su primera computadora personal pretendiendo as irrumpir en todos nuestros hogares. La primera y ms importante decisin que adopt la comisin de este proyecto fue que su PC debera basarse en una arquitectura abierta, seleccionando los mejores componentes y software de las mejores empresas. Esta poltica fue la clave del xito del IBM PC y lo que ms tarde hara que se convirtiera en un estndar. Si no lo hubieran decidido as, seguramente el IBM-PC sera un ordenador personal ms, aadidos a la lista de los ya comercializados Apple II, Commodore PET, etc. IBM era consciente de que si quera que su trabajo tuviera xito debera aportar algo ms que sus competidores en ordenadores personales, ya que estos le llevaban una ventaja muy considerable. (Ibez) Recuerde el lector que la primera microcomputadora de la historia la fabric Micro Instrumentation Telemetry Systems en 1975 con el nombre de Altair 8800. Es por ello la decisin de fabricar su PC a golpe de talonario, comprando todo el trabajo que le llevaban de ventaja sus competidores. Esto era un lujo que una empresa de la envergadura de IBM se poda permitir. No obstante, destacar que IBM no era consciente del xito que iba a tener su producto. (Alonso130, 2010)AOPCUPISADISCO DUROMEMORIA EXTERNA

1981PC80888 bits--

1983PC/XT8088/868/16 bits10M5

1984PC/AT8028616 bits20M5

1987EISA386 48632 bits--

Tabla 1 Aparicin Computadoras IBM (Mogrovejo, 2013)Todo empez a finales del Siglo XIX. En plena revolucin industrial EEUU reciba a diario miles y miles de inmigrantes que buscaban fortuna en el nuevo continente. Esto provoco semejante caos en las oficinas del censo que las autoridades no tuvieron ms remedio que convocar un concurso pblico para mejorar el sistema existente. Precisamente un inmigrante alemn llamado Herman Hollerith, que era empleado del censo en Nueva York, desarrollo una mquina perforadora que bautiz como "Punch Card Tabulating Machine". Este invento fue un gran xito e hizo que Hollerith ganara el concurso. Todo ello llev al alemn a crear su propia empresa que llam "Tabulating Machine" y durante ms de 10 aos se dedic a fabricar mquinas perforadoras con mucho xito.Pero no fue hasta 1911 cuando Charles R. Flint gestion la fusin de esta empresa con dos ms del sector (Computing Scale e International Time Recording). El resultado fue Computing-Recording Company (C-T-R), una empresa de unos 1300 empleados que se dedicaba a fabricar todo tipo de maquinaria: balanzas industriales, cronmetros y hasta cortadores de carne o queso. A los pocos aos la economa de esta empresa empezo a tambalearse. Entonces tomo sus riendas, Thomas J. Watson (para algunos el autntico fundador de IBM). Watson consigui elevar C-T-R a la cumbre, adems de extenderla por todo el mundo, y en 1924 le cambi el nombre a International Bussines Machines (IBM). Dos aos despus, IBM irrumpe en el mercado espaol con grn exito. (Innovador, 2011)Desde los tiempos de Watson hasta nuestros das, IBM ha sido lider de su sector, y parece ser que lo seguir siendo durante muchos aos.Evolucin de la Arquitectura AT

AOHECHOS HISTORICOS

1944Primer computador electromecnico

1952Primer computador con tubos de vacio

1969IBM est en la NASA (viaje a la luna)

1970Concepto de base de datos relacional

1971Disco Flexible

1981Aparicin del primer PC comercial basado en el primer procesador Intel 8088

1983PC/XT con procesador 8086 que permite trabjar de 8 a 16 bits

1984PC/AT con microprocesador 80286, trabaja a 16 bits

1987IBM crea EISA(interfaz de perifricos y memorias) a 32 bits

1987IBM + Microsoft crean OS/2 como sistema operativo

1990Primera hoja de clculo LOTUS123

1992Primer porttil IBM

1995Primera hoja de calculo

Tabla 2 Hechos importantes en lnea de tiempo para los PC's (Mogrovejo, 2013)Inside the MainBoardDefinicin de Mainboard.La Mainboard o tarjeta madre no es ms que una placa cuya funcin es conectar todos los dispositivos tanto externos como internos, que necesite un computador. A continuacin vemos algunos de los componentes que utiliza la Mainboard:

Figura 3 Mainboard (Rojas)Discusin sobre Partes Componentes1.1.1. Procesadores (Microcontroladores)Qu es un Microprocesador? Es un conjunto de dispositivos electrnicos que interactan entre s para realizar una tarea determinada.Microcontroladores:Los microcontroladores son computadoras en un solo chip que poseen una Unidad Central de Procesamiento (CPU, Central processing unit), memoria de programa y de datos, puertos de entrada/salida (E/S) de serie y paralelo, temporizadores e interrupciones internas y externas. Los microcontroladores son dispositivos electrnicos inteligentes que se emplean para aplicaciones de control y monitoreo. Actualmente, los microcontroladores se usan en muchos equipos comerciales e industriales. Aproximadamente, el 40% de las aplicaciones de los microcontroladores son para la automatizacin de oficinas, como por ejemplo, los ordenadores personales, las impresoras lser, las mquinas de facsmil y los telfonos inteligentes. 1.1.2. Bus de SistemaTipos de Buses:Simples: Uso de lneas separadas, direcciones y datos.Multiplexado: Uso de la misma lnea para transmitir direcciones y datos.1.1.3. ChipsetDefinicin de un chipsetUn chipset es el conjunto de circuitos integrados diseados con base a la arquitectura de un procesador (en algunos casos, diseados como parte integral de esa arquitectura), permitiendo que ese tipo de procesadores funcionen en una placa base.Sirven de puente de comunicacin con el resto de componentes de la placa, como son la memoria, las tarjetas de expansin, los puertos USB, ratn, teclado, etc.Las placas base modernas suelen incluir dos integrados, denominados puente norte y puente sur.Puente norte: Se conecta con el procesador y con la memoria. Controla las funciones de acceso hacia y entre el microprocesador, la memoria RAM, el puerto grfico AGP o el PCI-Express de grficos, y las comunicaciones con el puente sur.Puente sur: Tiene comunicacin con todos los perifricos como mouse, teclado, anteriormente el puerto paralelo actualmente ya no viene en las maquinas actuales.Funcionamiento:Chipset 875 de Intel, usado con procesador Pentium 4 en encapsulado de pines.El Chipset es el que hace posible que la placa base funcione como eje del sistema, dando soporte a varios componentes e interconectndolos de forma que se comuniquen entre ellos haciendo uso de diversos buses. Es uno de los pocos elementos que tiene conexin directa con el procesador, gestiona la mayor parte de la informacin que entra y sale por el bus principal del procesador, del sistema de vdeo y muchas veces de la memoria RAM. (compPC, 2014)En la actualidad los principales fabricantes de chipsets son AMD, ATI Technologies (comprada en 2006 por AMD), Intel, NVIDIA, Silicon Integrated Systems y VIA Technologies.1.1.4. MemoriasMemoria de Programa:ROM: equivale a Read Only Memory (memoria de slo lectura). Este tipo de memoria almacena el programa del microcontrolador y los datos que son constantes. Las memorias ROM se programan durante el proceso de fabricacin por lo que no se puede alterar su contenido. Las memorias ROM son tiles, solamente, si se ha desarrollado una versin final del programa y se desean fabricar varios miles de copias de estas.PROM: Las memorias PROM o ROM programables son bsicamente iguales a las memorias ROM, pero presentan la particularidad de que la primera y nica grabacin posible no se realiza durante el proceso de fabricacin necesariamente, por lo que no se precisa el desarrollo de mscaras especiales para cada contenido determinado de la memoria (como ocurra en la memoria ROM clsica), reduciendo considerablemente los gastos del proceso. EPROM: significa Erasable Programmable Read Only Memory (Memoria de slo lectura programable y borrable). Esta memoria es muy similar a la memoria ROM, pero la EPROM puede programarse con un dispositivo programador adecuado. Las memorias EPROM tienen una pequea ventana de vidrio transparente colocada encima del chip para que sus datos puedan borrarse al aplicar luz ultravioleta (UV). Estas memorias se borran y se reprograman hasta que el usuario quede satisfecho con el programa final. EEPROM: significa Electrically Erasable Programmable Read Only Memory (memoria de slo lectura, programable y borrable elctricamente). Se trata de una memoria no voltil por lo que se puede borrar y programar bajo el control del programa. Las EEPROMs se usan para guardar informacin de configuracin, valores mximos y mnimos, datos de identificacin, etc. Las memorias EEPROM son, normalmente, muy lentas.RMM: Memoria principalmente de lectura.EAPROM: Elctricamente alterable programable Read-Only tipo PROM cuyo contenido puede ser alterado.Memoria de Datos:RAM: significa Random Access Memory (memoria de acceso aleatorio). Esta memoria es de propsito general y normalmente se usa para almacenar los datos usados por los programas. La memoria RAM es voltil, es decir, sus datos se pierden al desconectar la alimentacin. La mayora de los microcontroladores poseen una cierta cantidad de memoria RAM interna. NRAM: Considerada una memoria RAM no voltil, es decir con el cambio de energa esta no pierde sus datos.SRAM: memoria RAM esttica, estas memorias tienen una celda de almacenamiento bsica constituida por un biestable. Su principal caracterstica son sus pequeos tiempos de acceso, siendo muy utilizadas en aquellas aplicaciones que precisen de esta peculiaridad; sin embargo, no suelen ofrecer grandes capacidades, debido a su limitada capacidad de integracin y al elevado precio que suelen presentar. Gua de MicrocontroladoresElementos Generales de Arquitectura de la IBM PCDRAM: memoria RAM dinmica, estas memorias presentan una celda elemental de almacenamiento basada en un condensador. Esta sencillez implica una gran facilidad de integracin, por lo que es posible alcanzar altos niveles de integracin, con unos tiempos de acceso bastante aceptables. El principal inconveniente de este diseo es que el condensador bsico no almacena la informacin indefinidamente, por lo que es necesario actualizarla o refrescarla peridicamente.Gua de MicrocontroladoresInterrupciones en la IBM PC Generalidades

Interrupciones en la IBM PC GeneralidadesTratamiento de interrupciones en la PCLas interrupciones son seales recibidas por el procesador de un sistema microprocesado, indicando que se debe dejar por un momento el curso de ejecucin actual para ejecutar cierto cdigo especificado en ese momento (subrutinas), una vez terminada la ejecucin de la subrutina se retoma la ejecucin anterior. Las interrupciones son provocadas mayoritariamente por hardware de Entrada/Salida. En un principio para atenderlas se usaba pooling, que consista en que el procesador se encargue de sondear los perifricos cada cierto tiempo establecido; este mtodo result ser muy ineficiente puesto que el procesador desperdiciaba tiempo valioso en el sondeo. Las interrupciones fueron creadas para manejar perifricos de Entrada/Salida de velocidades relativamente bajas; esto es porque las velocidades de los procesadores son muy superiores a las que manejan los perifricos como el ratn, por ejemplo.Cuando hablamos de latencia nos referimos al tiempo que tome en realizar una tarea, en el caso de las interrupciones hablamos del tiempo que le tomar al procesador para atender una interrupcin desde que esta fue provocada hasta que se finalice la ejecucin del cdigo asociado a esta. A continuacin se puede ver la lnea de tiempos de procesamiento normal y procesamiento de interrupciones:

Figura 4 Lnea de tiempos en la que se representa las latencias de interrupciones durante el procesamiento normal (Mogrovejo, 2014)El procesamiento y la atencin de las interrupciones se pueden representar de la siguiente forma: Figura 5 Representacin del procesamiento del programa principal y el de una interrupcin (Mogrovejo, 2014)Tipos de InterrupcionesEnmascarables (INT): Las interrupciones enmascarables pueden ser enmascaradas, es decir estas interrupciones pueden ser atendidas si es que se lo permite. El permiso para la ejecucin de estas interrupciones puede ser gestionado por software.No Enmascarables (NMI): A diferencia de las interrupciones enmascarables, las no enmascarables tienen la particularidad de que su ejecucin se dar en cualquier circunstancia.A continuacin una representacin de los tipos de interrupciones:

Figura 6 Representacin figurativa de los tipos de interrupciones (Mogrovejo, 2014)Ejercicios en claseDisear un circuito para atender 3 interrupciones, 2 enmascarables (Tx y Px) y 1 no enmascarable (pulsante).

Figura 7 Circuito para manejar 3 interrupciones En circuitos como el presentado anteriormente, se pueden producir rebotes mecnicos. Se deben usar mecanismos para evitarlos, por ejemplo un circuito con un 74LS14.

Figura 8 Comparacin de una salida ideal y de una con rebotesDisear un circuito que permita con un switch o pulsante en estado ON la iluminacin mxima de un LED, en estado OFF permitir iluminacin variable.

Figura 9 Resolucin del Ejercicio 2 Para el clculo de las resistencias usadas se tienen como datos iniciales el voltaje de la fuente (Vcc = 5v) el voltaje con el que trabaja un LED (Vl = 1.5v) y su corriente mnima y mxima (0.1mA y 10mA).Partimos de:

La resistencia para obtener menor luminosidad en el LED ser:

La resistencia para obtener mayor luminosidad en el LED ser:

Disear un circuito con 2 pulsantes y 2 leds, la iluminacin de los LEDs debe ser variable y complementaria entre s mismos. Un pulsante es asignado a cada LED para poder visualizar su iluminacin.Se toman los valores de resistencias para generar corriente mxima y mnima del ejercicio anterior.

Figura 10 Resolucin del Ejercicio 3Interrupciones por hardware en la PcEste tipo de interrupciones son producidas por los dispositivos hardware del sistema, de igual manera las interrupciones producirn un abandono momentneo del procesamiento normal del procesador para atender la interrupcin.A continuacin un ejemplo para comprender una interrupcin de hardware.

Figura 11 Ejemplificacin de una Interrupcin de hardware (Mogrovejo, 2014)Teniendo en cuenta el grfico en la Figura 6, ejemplificamos una interrupcin hardware, asumiendo que el procesador se encuentra, en un principio, ejecutando su programa principal (main). Un perifrico hardware (ratn, teclado, impresora, timer) realiza un pedido de interrupcin por el canal NMI (Interrupcin no enmascarable) o por INTR (Interrupcin enmascarable) al microprocesador.El microprocesador atender a la interrupcin y acudir al Vector de Interrupciones, donde se encuentran las direcciones de atencin para las interrupciones, para averiguar la direccin asociada a dicha interrupcin. Por ejemplo ST1.En el vector de interrupciones se ubica tambin el Vector de Reset, que es un puntero predeterminado, donde el procesador debe comenzar tan pronto pueda ejecutar instrucciones. Conocida la direccin (ST1), esta indicar el cdigo asociado a la interrupcin. Seguramente encontraremos en ST1 una interrupcin en lenguaje ensamblador como go to AI1 que llevara a donde se encuentra el Cdigo de las Interrupciones.Por ltimo en ST1 se encontrar una instruccin IRET o IRETD con la que se finalizar la interrupcin. El procesador volver a su procesamiento normal.Para atender interrupciones el procesador deber abandonar momentneamente su procesamiento anterior, esto incluye el peligro de prdida de informacin para esto har uso de la pila o Stack. El Stack es un espacio de memoria que est reservado para resguardar el PC (Contador de Programa), registros importantes (acumulador, de trabajo, etc) y ciertas variables de inters.Los vectores de interrupcin son almacenados generalmente en los primeros 1024 bytes de la memoria de programa.Controladores de interrupcin 8259A

Combina mltiples entradas de interrupcin en una simple salida de interrupcin hacia el microprocesador.El 8259A fue incluido en el PC original en 1981 y mantenido por elIBM XT cuando se introdujo en 1983. El IBM AT aadi un segundo 8259A.Despus de un tiempo ya no fue incluido como un chip separado, sino que las mismas funcionalidades eran realizadas por una parte del puente sur (SouthBridge) del Chipset de la Placa Madre.Agrega 8 interrupciones con vector y propiedades codificadas al microprocesador. Se puede ampliar sin ms circuitos adicionales para aceptar hasta 64 solicitudes de interrupcin utilizando 1 8259A Maestro y 8 esclavos conectados en cascada.Fue diseado para minimizar la sobrecarga y el software requerido en el manejo de la prioridad de interrupciones multinivel.

Figura 12 Diagrama de Pines

SmboloTipoNombreFuncin

VCCEntradaSUPPLY+5V

GNDEntradaGROUNDTierra

EntradaCHIP SELECTEn 0 permite que se habilite la comunicacin en Y entre el CPU y el 8259A.

EntradaWRITEEn 0 permite que el CPU escriba palabras de control sobre el micro.

EntradaREADEn 0 permite al micro enviar el estado de los diferentes registros o el nivel de interrupcin a travs bus de datos.

D7 - D0Entrada/SalidaBIDEIRECTIONAL DATA BUSControl, Estado, Informacin del Vector de Interrupciones es transferida por medio de este bus.

CAS0 CAS2Entrada/SalidaCASCADE LINESForman un bus privado para controlar una estructura mltiple 8259A. Estos pines son salidas para un Maestro y entradas para un Esclavo.

/ Entrada/SalidaSLAVE PROGRAM/ ENABLE BUFFEREs un PIN de doble funcionalidad: En modo EN puede ser usado como salida para control de Buffer. En el otro modo es usado como entrada para designar al micro como Maestro (SP=1) o como Esclavo (SP=0).

INTSalidaINTERRUPTSalida conectada con la terminal INTR del microprocesador. Esta salida se pone en 1 siempre que una solicitud de interrupcin vlida sea confirmada.

IR0 IR7EntradaINTERRUPT REQUESTEntradas de Solicitud de Interrupcin: Se emplean para solicitar una interrupcin que puede ser ejecutada por una transicin de 0 a 1 en la entrada o simplemente por un uno en la entrada.

EntradaINTERRUPT ACKNOWLEDGELa CPU genera pulsos de reconocimiento que harn que el 8259A libere informacin del vector de interrupcin sobre el bus de datos.

AoEntradaAO ADDRESS LINEActa junto con el Y . Es usado para descifrar varios comandos que el CPU escribe y estados que el CPU desea leer.

Tabla 3 Descripcin de pines del 8259AMODO CASCADA

Figura 13 Modela Cascada 8259A, (Microprocesadores Intel, Barry B. Brey)El 8259A puede fcilmente ser conectado en un sistema de un Maestro con 8 Esclavos para manejar hasta 64 niveles de prioridad.El Maestro controla a los esclavos a travs de las 3 lneas de buses (Direccin, Control y Datos) en cascada.En la configuracin en cascada, las salidas de interrupcin de los esclavos estn conectadas a las entradas de solicitud de interrupcin del Maestro.

Evolucin en el manejo de interrupcionesPnP, Plug and Play (Enchufar y usar): Surge en 1993, como solucin a los inconvenientes que se presentaban a la hora de hacer modificaciones a la CPU, ya que esta supona cambios demasiado drsticos en la arquitectura del PC, puesto que se deba desmontar los jumpers especiales para cada dispositivo y configurar manualmente el componente lgico.PnP se basa en distintas premisas. De la cuales la principal, es que todos los dispositivos fueran configurados por software mediante un programa especial de Set-Up. Adems tanto hardware como software que son controladores de los dispositivos cargados por el sistema, deberan ser reconfigurables dinmicamente para poder adaptarse a cambios de configuracin.(Alvarez, 2012)Compartir IRQs (Interrupt ReQuest / Solicitud de interrupcin): La tecnologa PnP simplific mucho algunas tareas, pero aun as existan muchos inconvenientes, ya que no resolva el problema de fondo, que era la escasez de ciertos recursos, principalmente lneas de interrupcin. Por lo que al desarrollar la interfaz PCI, Intel incluy la posibilidad de que estos dispositivos pudieran compartir la misma IRQ.(Alvarez, 2012)DESCRIPTORESDefinicin:Estructura de ocho bytes que le indica al procesador el tamao y ubicacin de un segmento, as como informacin de control y estado. Losdescriptoresson creados por compiladores, programas cargadores, o el sistema operativo, pero nunca por los programas de aplicacin. Si bien el tamao de esta estructura es siempre de ocho bytes, el formato depende de latabla de descriptores.Funcionamiento:Los descriptores contienen atributos sobre una regin de memoria (es decir, un segmento). Estos atributos incluyen la direccin base de 24 bits, la longitud de 16 bits, elnivel de proteccin(de 0 a 3), permisos de lectura, escritura o ejecucin y el tipo de segmento.Registros de Segmentacin, estos registros no apuntan directamente a memoria como lo hacan en el 8086. En su lugar, apuntan a tablas especiales llamadas tablas de descriptores, algunas de las cuales tiene que ver con el usuario y otras con el sistema operativo.El usuario nunca sabe en qu posicin real de memoria est ejecutando o dnde se ubican los datos y siempre se mantiene dentro de ciertas fronteras.Como proteccin adicional nunca se permite que el usuario escriba en el segmento de cdigo, lo que en modo real si es permitido.PL (Privilege Level): Nivel 0 es el ms privilegiado y el 3 el menos privilegiado.DPL (Descriptor Privilege Level): Este es el nivel menos privilegiado para el cual una tarea puede acceder a ese descriptor. El nivel de privilegio del descriptor se determina mediante los bits 5 y 6 en el byte de derechos de acceso del descriptor.DERECHOS DE ACCESO: Permite slo lectura o slo escritura.SELECTOR: Dos bytes que apunta a un descriptor: ndice: Selecciona uno de los 8192 descriptores.TI: Bit indicado de tabla, indica la tabla de descriptores a utilizar, si vale cero se utiliza la tabla de descriptores globales y si vale 1 utiliza la de locales.TABLA DE DESCRIPTORESSon arrays de longitud variable que pueden mantener hasta 8192 descriptores.TIPOS DE TABLAS:TABLA DE DESCRIPTORES GLOBALES (GDT)Contiene descriptores comunes que estn disponibles para todas las tareas del sistema. Contiene los segmentos de cdigo y datos usados por el sistema operativo.TABLA DE DESCRIPTORES LOCALES (LDT)Contienen descriptores asociados con una terea particular. Solo pueden contener descriptores de cdigo, datos, pila, compuertas de tarea y compuertas de llamada.TABLA DE DESCRIPTORES DE INTERRUPCION (IDT)Contiene los descriptores que apunta a la ubicacin de hasta 256 rutinas de servicio de interrupcin. Cada interrupcin utilizada por el sistema debe tener una entrada propia en esta tabla. Las entradas de esta tabla se referencian mediante instrucciones INT, vectores de interrupcin e interrupciones internas del microprocesador.JERARQUA DE PROTECCION O DE PRIVILEGIOPL = 0: Kernel.PL = 1: Servicios del sistema (parte del SO).PL = 2: Extensiones del sistema operativo.PL = 3: Aplicaciones.FUNCIONAMIENTO: MODO REAL Y MODO PROTEGIDOModo Real: uPMP(Memoria del Programa)

100H

Figura 14 Diagrama de modo real, Clase micro controladores. Ing. talo Mogrovejo

Modo Protegido:

M.P.(Memoria del Programa)

Descriptores

uP

100H

100H (No se toca)800H

Figura 15 Diagrama Modo protegido, Clase de Microcontroladores. Ing. talo MogrovejoRegistros y transferencias para el manejo de interrupcionesExisten 3 registros de 1 byte que en conjunto gobiernan las decisiones del dispositivo:Registro de Solicitud de Interrupcin: IRR (Interrupt Request Register), controla el estado de una lnea IRQ. Cuando se detecta una peticin en una de estas lneas, el bit correspondiente del IRR es puesto a 1.Registro de Interrupciones Activas: ISR (In Service Register), cada bit indica si ya existe una interrupcin activada en la lnea correspondiente.Registro de Mscara de Interrupciones: IMR (Interrupt Mask Register), Cada bit corresponde a una lnea IRQ e indica si est permitida una interrupcin de ese nivel en ese momento.

Interrupciones ms comunes.Tipo de InterrupcinDescripcin

Tipo 0Error de divisin, divisin por cero.

Tipo 2Modo paso a paso o de trampa.

Tipo 3Interrupcin no enmascarable, se genera interrupcin obligatoriamente

Tipo 4Depuracin de programas, puntos de ruptura.

Tipo 5INTO, overflow.

Tipo 7No hay coprocesador.

Tipo 8Doble falta, se producen 2 o ms interrupciones.

Tipo 9Sobreflujo del coprocesador.

Tipo 12Desborde del segmento de pila.

Tipo 13Proteccin general, violacin de modo protegido.

Tipo 16Error de coprocesador.

Tabla 4 Interrupciones ms Comunes (Mogrovejo, 2014)Instrucciones para interrupcin: BOUND, INTO, INT, INT3 e IRETEntre las cinco instrucciones de interrupcin disponibles para el microprocesador, INT e INT3, son muy semejantes, BOUNT e INTO son condiciones e IRET es una instruccin especial para el retorno de interrupcin.BOUNTTiene dos operandos, compara un registro con dos palabras de datos de la memoria. Por ejemplo si se ejecuta la instruccin BOUND AX, DATA se compara AX con el contenido de DATA y de DATA+1, tambin con DATA+2, DATA+3.Si AX es menor que el contenido de DATA y de DATA+1 ocurre una interrupcin de tipo 5.Si AX es mayor que el contenido de DATA+2 y de DATA+3 ocurre una interrupcin de tipo 5.Si AX est dentro de los lmites de estas dos palabras de la memoria, no ocurre interrupcin.INTOCompara la bandera de sobreflujo (OF). Si OF es = 1, la instruccin INTO llama al procedimiento cuya direccin esta almacenada en el vector interrupcin tipo 4. Si OF = 0 entonces la instruccin INTO efecta una NOP (No operacin, usado para sincronizacin) y la siguiente instruccin en secuencia, del programa.INTLlama al procedimiento de servicio de interrupcin que comienza en la direccin representada en el vector numero n, por ejemplo una INT 80H o una INT 128 llama al procedimiento de servicio de interrupciones cuya direccin esta almacenada en el vector 80H. Para determinar la direccin del vector se multiplica en nmero del vector (n) por 4. Con ello se tiene la direccin inicial del vector de interrupcin de 4 bytes de longitud.Cada instruccin INT se almacena en 2 bytes de memoria, el cual en 1er byte contiene el cdigo y 2do el nmero de interrupcin.INT3Esta es de 1 byte la cual se utiliza como interrupcin de punto de ruptura, porque es fcil intercalar una instruccin de un byte en un programa. Los puntos de ruptura se utilizan a menudo para depurar programas. IRETEs una instruccin especial para retorno, y se utiliza para retornar de las interrupciones de hardware y software, es como una instruccin RET normal lejana, porque recupera la direccin de retorno de la pila, IRET extrae 6 bytes de la pila, 2 para ip (Puntero de Interrupcin), 2 para CS (control de software), y 2 para las banderas.Funcionamiento de una interrupcinCuando el microprocesador concluye de ejecutar la instruccin en curso, entonces para determinar si una interrupcin esta activa comprueba;Alguna instruccin en ejecucinTrampaNMISobre flujo de segmento del coprocesadorINTRLa instruccin INT en el orden citado.Si esta presenta una o ms de estas condiciones de interrupcin ocurre lo siguiente:Salva el contenido del registro de banderas en la pila.Se desactiva las banderas de interrupcin (IF) y de trampa (TF). Esto deshabilita la terminal INTR y tambin la caracterstica de trampa.Se salva el contenido del registro (CS) de segmento de cdigo hacia la pila.Se salva el contenido del apuntador de instruccin (IP) en la pila.Se recupera el contenido del vector de la interrupcin y se coloca en IP y CS, de modo que la siguiente instruccin se ejecute en el procedimiento de servicio de la interrupcin, direccionado por el vector.Siempre que acepta una interrupcin, el microprocesador salva en la pila el contenido del registro de banderas, de CS e IP, desactiva IF y TF y brinca al procedimiento direccionado por el vector de la interrupcinBits de Bandera de InterrupcinLa Interrupcin (IF) y la bandera de trampa TF se borran una vez que se salvan en la pila el contenido del registro de bandera durante una interrupcin. Cuando se activa el bit IF permite que la terminal INTR ocasione una interrupcin; cuando se desactiva el bit IF impide que la terminal INTR produzca una interrupcin.Las instrucciones STI (permite la interrupciones del procesador) y CLI (inhibe las interrupciones del procesador) activan y desactivan respectivamente interrupciones.

Puerto ParaleloTipos de PuertosDefinicinUn puerto paralelo es una interfaz que posibilita el intercambio de informacin digital. Dichos puertos pueden ser fsicos (con una entrada en el hardware de la computadora para permitir la conexin de un perifrico) o virtuales (puertos lgicos gestionados a travs del software). En el marco de dicho intercambio de informacin, habr bits que recorrern diferentes caminos, en ambos sentidos.

IBMSPP 1981150 kb/s

1987PS2150 kb/sBidireccional

IBMEPP19942 MB/sBidireccional

IntelESP19942 MB/sBidireccionalSoporta DMA

Todos fueron diseados a 8 bitsPuesto que se utiliza el cdigo asciiStandard 7 bitsExtendidos 8 bitsComunicacin en paraleloMximo dos metrosEjemplo:VA = Vo iRVA = 5 2.5VA 2.5

DATOSTensin de nivel alto: 3,3 o 5V.Tensin de nivel bajo: 0 V.Intensidad de salida mxima: 2,6 mA.Intensidad de entrada mxima: 24 mA

Figura 16 Cable puerto ParaleloPines y Registros

Figura 17 Composicin del Puerto Paralelo2-9 Datos Puerto de salida / escritura10,11,12,13, 15 Estado Puerto de entrada / lectura1,14,16,17 Control Puertos direccionales/escribir-leer18 25 Tierra.Registros0 x 378 Datos / Salida0 x 379 Estado / Entrada.0x 37 Control / E/S.Ox378D7D6D5D4D3D2D1D0BIT

98765432PIN

NNNNNNNNNIVEL

Tabla 5 Registro 0x378 del LPT0X379S7S6S5S4S3S2S1S0BIT

1110121315---PIN

INNNNNNNNIVEL

Tabla 6 Registro 0x379 del LPT0X37AC7C6C5C4C3C2C1C0BIT

----1716141PIN

NNNNINIINIVEL

Tabla 7 Registro 0x379A del LPTLeyenda

N = NormalI = Invertido

PinE/SPolaridad activaDescripcin

1Salida0Strobe

2 ~ 9Salida-Lneas de datos

10Entrada0Lnea acknowledge

11Entrada0Lnea busy

12Entrada1Lnea Falta de papel(

13Entrada1Lnea Select

14Salida0Lnea Autofeed

15Entrada0Lnea Error

16Salida0Lnea Init

17Salida0Lnea Select input

18 ~ 25--Tierra elctrica

Tabla 8 Pines del Puerto ParaleloGua de MicrocontroladoresPuerto Paralelo

Puerto SerialConectores y pinesEl puerto serial se encuentra conformado por 9 pines de los cuales solo 3 de ellos son empleados para una comunicacin, uno para l envi de informacin, otro para la recepcin de informacin y un tercero para las referencias de voltajes o tierra. Sus restantes 5 pines son utilizados para control de datos, peticiones de informacin, etc.El conector DB-9 es el utilizado para este tipo de comunicacin serial, se lo denomino DB-9 por poseer 9 pines

Figura 18 Conector DB9

Pines a DetalleSus nueve pines y sus funciones pertinentes en el caso del conectado macho se detalla el conector macho puesto que es el implementado en los equipos de computacin para la comunicacin serial, tener en cuenta que los dispositivos a conectar tendrn que ser conector hembra en equipos de computacin por una poca el puerto serial fue utilizado para la conexin del mouse, que posteriormente fue sustituido por el puerto PS2.Figura 19 Pines del conector DB9

PinFuncin

Pin 1Deteccon de seal recibida en la lnea

(Data Carrier Detect)

Pin 2Received Data

Pin 3Transmit Data

Pin 4Data Terminal Ready

Pin 5Signal Ground

Pin 6Data Set Ready

Pin 7Request To Send

Pin 8Clear to Send

Pin 9Ring Indicator

Voltajes UtilizadosEn RS232 se emplea niveles lgicos incompatibles con TTL, esto deriva en la necesidad de la implementacin de un convertidor de niveles lgicos. Se suele utilizar con mayor frecuencia MAX232 o MAX233 que son los manejadores de lnea ms utilizados sus caractersticas son sus dos canales, utilizan una sola fuente de alimentacin de 5v, y en el MAX233 no se requiere de capacitores externos.Protocolo de comunicacinPara el envo de informacin es necesario que tanto el emisor como el receptor estn configurados para trabajar a la misma tasa de transferencia, ya que la comunicacin es asncrona y la seal de reloj no es enviada con la informacin.Para lograr la sincronizacin el puerto utiliza un protocolo el cual enva un bit de partida, el cual no es configurable. Lo que s es configurable es el bit de parada, la paridad y el nmero de bits. La configuracin ms utilizada es la 8N1 (8 bits de informacin, sin paridad y 1 bit de parada).En las comunicaciones asncronas el estado de reposo (cuando no se transmite nada) se identifica con un "1" (marca). Cuando se recibe un bit de inicio, que es un "0" (espacio), el receptor toma nota que va a comenzar a recibir un dato.Los parmetros que caracterizan estas comunicaciones son: Velocidad; paridad; bits de datos y bits de parada. En la literatura sobre el tema es frecuente expresar estos datos en forma resumida. Por ejemplo: 1200 8 N 1 para indicar una transmisin de 1200 baudios con 8 bits de datos sin paridad y un bit de Stop.Velocidad de transmisin ("Connection speed") es la cantidad de datos transmitidos en unidad de tiempo. Se expresa en bits por segundo (bps). En las transmisiones serie a travs de lneas telefnicas, en las que se emplean mdems era frecuente utilizar como medida de velocidad el Baudio ("Baud rate").Baudio se define como el nmero de veces que cambia la portadora en un segundo. La velocidad que puede emplearse depende en gran medida de la calidad del medio de transmisin (calidad de la lnea), que si (como es frecuente) se trata de lneas telefnicas, depende a su vez de la distancia.Los primeros dispositivos serie operaban a velocidades muy bajas, del orden de 110 a 1200 baudios.Las comunicaciones telefnicas serie actuales estn muy cerca del mximo terico que pueden soportar los pares de cobre utilizados en la telefona estndar.

Tabla 9 Conexin para transmisin entre 2 equiposGua de MicrocontroladoresPuerto Serial

Puerto USBEspecificaciones generalesUSB significa Universal Serial Bus") o su traduccin al espaol es lnea serial universal de transporte de datos. Es bsicamente un conector rectangular de 4 terminales que permite la transmisin de datos entre una gran gama de dispositivos externos (perifricos) con la computadora; por ello es considerado puerto.Una de las principales caractersticas de estos es la conexin muy sencilla, ya que utiliza un nico conector para conectar a travs de un bus serie todos los dispositivos. En l se definen todos los conectores y los cables, en este es posible conectar hasta 127 dispositivos y protocolos que permiten deteccin automtica de los dispositivos conectados, adems todas sus versiones son PLUG and PLAY(Es decir se conecta el dispositivo y el Sistema Operativo lo detecta automticamente al instante).Las especificaciones del USB proporciona una serie de caractersticas que pueden ser divididas en categoras estas caractersticas van desde la serie 1.0 hasta la 3.0.HistoriaLa creacin del USB se remonta al el ao 1994, cuando se public un borrador de un dispositivo de comunicacin que no necesite el reinicio del sistema para su correcta deteccin ya que se buscaba la unificacin de los conectores de perifricos creando unos ms sencillo y de mayores presentaciones, este dispositivo se llam USB. (Wikipedia)El estndar USB evolucion a travs de varias versiones antes de su lanzamiento oficial en 1996: USB 0.7: Lanzado en noviembre de 1994.USB 0.8: Lanzado en diciembre de 1994.USB 0.9: Lanzado en abril de 1995.USB 0.99: Lanzado en agosto de 1995.En 1996, cuando un grupo de siete empresas entre ellas Intel, IBM y Microsoft desarrollo un formato para mejorar la capacidad de interconexin de dispositivos perifricos y tecnolgicos de distinto mbito, en esta primera versin del puerto USB se la llamo 1.0, la versin antes dicha no tuvo mucha aceptacin hasta que vino la aparicin del USB 1.1. El primer ordenador que incluyo un puerto USB estndar (USB1.0) fue una iMac de Apple y fue presentada en 1998, esta iMAc usaba el puerto para la conexin de su ratn y teclado, al contrario en relacin con Pcs de Microsoft recin lo incorporaban en el sistema operativo OSR2.1 que corresponde a Windows 95, en servidores se incursiono en desde el Windows server 2000, de esta manera nacin el USB (Universal Serial Bus) con algunas velocidades en sus diferentes versiones:USB 1.0 con velocidad de 12Mbpg.Su evolucin fueUSB 1.1 con velocidad de 12MbpsUSB 2.0 de alta velocidad hasta 480Mbps lanzado en el 2009.USB 2.0 On the Go con similar caracterstica que el 2.0.USB 3.0 con velocidad de 4,8 Gbps lanzado en el 2012.Evolucin de los estndares USBUSB 1.0Este Puerto fue lanzado en Enero de 1996 por (Compaq, Digital Equipment Corp., IBM, Intel Corp., Microsoft Corp., NEC y Northern Telecom). Esta es la primera versin oficial que sali al mercado.

Figura 20 UBS1.1Caractersticas relevantes velocidad baja:Velocidad de 12Mbps.Aplicaciones: Ratn y Teclado, perifricos de entretenimiento.Bajo CosteDES (Conexin en Caliente).Mltiples Perifricos.Caractersticas relevantes velocidad baja:Conexiones de: Telfonos Mviles, Audio, Video Comprimido.Velocidad de 500Kbps a 10Mbps.Aplicaciones: Audio.Garantiza el ancho de banda.Esta versin no es posible enviar y recibir datos a la vez.USB 1.1.Esta versin sali en Septiembre de 1998 era una versin dedicada ms para desarrolladores, las caractersticas de esta son similares a la de su antecesor.

Figura 20 USB1.1Esta versin no es posible enviar y recibir datos a la vez.USB 2.0Esta versin sali al mercado a mediados del 2000 esta fue creada por 3 marcas que se unieron en el desarrollo (Hewlett Packard, Philips y Lucent).

Figura 21 USB 2.0Una de las principales novedades fue la velocidad que aumento en gran medida y la incursin de un dispositivo a velocidad media como se describir en lo siguiente:Caractersticas relevantes velocidad baja:Velocidad de 10 a 100 Kbps.Aplicaciones: Ratn y Teclado, perifricos de entretenimiento.Bajo CosteDES (Conexin en Caliente).Mltiples Perifricos.Caractersticas relevantes velocidad media:Conexiones de: Telfonos Mviles, Audio, Video Comprimido.Velocidad de 500Kbps a 10Mbps.Aplicaciones: Audio.Garantiza el ancho de banda.Caractersticas relevantes velocidad alta:Conexiones de: Audio, Video Comprimido, Unidades de almacenamiento (Discos duros y grabadoras).Velocidad de 25 a 500Mbps.Gran ancho de banda.Esta versin no es posible enviar y recibir datos a la vez.

USB 2.0 OTG USB OTG USB on the go es una variacin de la especificacin anterior (USB 2.0) es decir que le permite a el puerto actuar como servidor sin la necesidad de una pc. Esto le permite comunicarse con cualquier dispositivo sin la necesidad de una pc, esto conlleva a que los dispositivos se conecten entre si directamente (impresora con memoria USB).

Figura 22 USB 2.0 On The GoCaractersticas relevantes aadidas:Los dispositivos que eran perifricos ahora pueden ser host.Se crearon los mini conectores.El perifrico puede ser host o perifrico segn la conveniencia.Esta versin no es posible enviar y recibir datos a la vez.

Estas caractersticas nos permiten por ejemplo, una cmara y una impresora que son perifricos se pueden conectar la una a la otra sin necesidad de una pc de por medio, es decir la impresora se vuelve el host que alberga a la cmara para imprimir las fotos que se encuentran en ella, y as tenemos muchos ejemplos ms como los celulares los reproductores mp3 con los equipos de audio, radios de automviles etc.

Figura 23 USB 2.0 On The Go (Diferentes Tipos de Conexiones)USB 3.0 El USB 3.0 permite grandes mejoras en su rendimiento, al contrario de su antecesor el USB anteriores contbamos con cuatro contactos, un par para recibir datos uno de corriente y otra de tierra, en el USB 3.0 se aaden cuatro contactos ms. Es decir dos de ellos se utilizan para enviar y los otros dos para la recepcin de archivos, con esto nos permite que el trafico sea bidireccional al mismo tiempo cosa que los anteriores no los permita. (InformaticaModerna, 2014)Caractersticas ms relevantes:Velocidad 10 veces ms rpida (600Mbps).Compactible con versiones anteriores.Velocidad mxima de hasta 4,8Gbps.Reduce el consumo energtico.Color Azul para diferenciarlo.Esta tecnologa permite o es capaz de enviar y recibir datos simultneamente.

Figura 24 USB 3.0 Super Speed1.1.5. USB 2.0Era necesaria una mejora por parte de los fabricantes para que USB fuera ms universal de lo que ya era, y sobre todo para ganar en velocidad y variedad de dispositivos soportados. As, en el ao 2000, nace la tecnologa USB 2.0 creada por Hewlett Packard, Philips y Lucent. La evolucin de esta tecnologa es totalmente compatible con versiones anteriores.Caractersticas: Facilidad de Uso para los usuarios: Tiene un modelo de cableado y conectores muy simples. Los usuarios no tienen que preocuparse por los detalles elctricos y la deteccin y configuracin de los perifricos la realiza el propio puerto automticamente. Carga: Tiene la capacidad de cargar y transmitir energa desde el cable USB hasta un dispositivo. Esta fuente de energa tiene un mximo de 5 voltios, por lo que los puertos 2.0 no sirven para dispositivos que requieran un voltaje ms alto. Sin embargo, permiten que los dispositivos tengan su propia fuente de energa. El cable para dispositivos que reciben energa mediante el USB est diseado con un cable adicional interno, que provee energa al voltaje.Robustez: Permite insertar y expulsar los dispositivos de forma dinmica (percibida por el usuario en tiempo real).Velocidad: El cambio ms significativo entre el USB 1.1 y el 2.0 est relacionado con la velocidad de transferencia de datos, que permiti el desarrollo de aparatos que necesitan transferencias ms veloces, como grabadoras de DVD y discos externos.

Velocidad baja: Velocidad de 10 a 100 Kbps. Aplicaciones: Ratn y Teclado, perifricos de entretenimiento. Bajo Coste DES (Conexin en Caliente). Mltiples Perifricos.

Velocidad media: Conexiones de: Telfonos Mviles, Audio, Video Comprimido. Velocidad de 500Kbps a 10Mbps. Aplicaciones: Audio. Garantiza el ancho de banda.Velocidad alta: Conexiones de: Audio, Video Comprimido, Unidades de almacenamiento (Discos duros y grabadoras). Velocidad de 25 a 500Mbps. Gran ancho de banda.

Bajo Costo de Implementacin: Adecuado para desarrollo de sistemas con perifricos, cables y conectores de bajo costo, para poder optimizar e integrar los perifricos al host.PLUG & PLAY: El dispositivo es detectado automticamente al conectarlo al equipo y el sistema operativo instala el driver adecuado. No es necesario apagar, ni siquiera reiniciar, el equipo para conectar o desconectar los dispositivos, cargndose y descargndose automticamente de memoria el driver correspondiente. (Victoria, y otros, 2001)HOT PLUGGING (Conectar en Caliente): No se necesita apagar ni reiniciar el equipo para instalar o desinstalar un dispositivo USB. Esto permite conservar recursos de memoria, ya que cada dispositivo conectado requiere un driver residente, que de este modo solo se carga cuando se necesita y se descarga al dejar de necesitarlo. Arquitectura (dividido en 3 partes) Interconexin USB.Es la forma en la que los dispositivos USB estn conectados con el host (comunicacin). Utiliza la topologa de bus Estrella Estratificada Piramidalmente, en donde un hub est en el centro de cada estrella y cada segmento de cable es una conexin punto a punto: Host / hub (o funcin) o Hub / hub (o funcin).

Dispositivos USB.Pueden ser de 2 tipos: Hubs: Proporciona puntos de acoplamiento adicionales. Funciones: Perifricos que proporcionan prestaciones al sistema como por ejemplo: joystick, parlantes, teclado, ratn, etc.

Host USB.En todo sistema USB siempre existe un solo Host, en el cual puede estar directamente conectado un dispositivo USB o un hub raz, en el segundo caso es para que as el sistema host pueda disponer de ms puntos de acoplamiento para distintos perifricos.

1.1.6. USB 2.X vs FirewireFirewire es el nombre que Apple asign a la implementacin de la interfaz IEEE-1394. Esta es una interfaz estndar de bus serial para comunicaciones de alta velocidad y trasferencia de datos iscrona en tiempo real, diseada especialmente para dispositivos multimedia. Generalmente FireWire es ms rpido y flexible que el USB pero es mucho ms costoso de implementar. CaractersticasFirewireUSB (2.0)

Velocidad de Transferencia datos.200Mbps12Mbps

Dispositivos Compactibles (Mximo).62128

Cambio en Caliente (Cambiar dispositivos sin necesidad de reiniciar).SS

Anchos de Banda.400 Mbps 800 Mbps 1 GbpsNinguno

Implementacin en Mac.SNo

Conexin de perifricos interna.SNo

Tipos de dispositivos conectables.-Videocmaras DV.-Teclados.

-Cmaras digitales de alta resolucin.-Ratones.

-HDTV (TV de alta definicin).-Monitores.

-Cajas de conexiones.-Joysticks.

-Discos duros.-Cmaras digitales de baja resolucin.

-Unidades DVD-ROM.-Unidades CD-ROM de baja velocidad.

-Impresoras.- Mdems

- Escneres.

Tabla 10 Caractersticas Fireware vs USB1.1.7. Interface USB en la IBM PcLa IBM PC de la Serie 300 fue la primera mquina de IBM con USB. La PC 330 tena 2 ranuras USB 1.0 en la parte posterior.1.1.8. Cables y Conectores

El estndar USB especifica tolerancias mecnicas relativamente amplias para sus conectores, intentando maximizar la compatibilidad entre los conectores fabricados por la compaa, una meta a la que se ha conseguido llegar.El estndar USB, a diferencia de otros estndares tambin define tamaos para el rea alrededor del conector de un dispositivo, para evitar el bloqueo de un puerto adyacente por el dispositivo en cuestin.Las especificaciones USB 1.0, 1.1 y 2.0 definen dos tipos de conectores para conectar dispositivos al servidor: A y B. Sin embargo, la capa mecnica ha cambiado en algunos conectores.

Figura 25 Conectores Tipo A (Izquierda), Tipo B (Derecha)

Tabla 11 Descripcin Fsica del Cable Tabla 12 Tipos de ConectoresEspecificaciones ElctricasAlimentacin: Tensin nominal (Vbus): +5V. Intensidad (ICC): 500 mA 100 mA (segn tipo/estado del dispositivo). Capacitancia de patilla a masa (CIN): 20 pF mximo. Impedancia del cable (ZO) a mxima velocidad: 45 W 15%.Administracin de la energa en el busConsumo:Cada seccin puede proporcionar una determinada potencia mxima siendo el computador el encargado de suministrar la energa. Adems el perifrico puede estar autoalimentado (self powered).El Control de Consumo es realizado por el ordenado, teniendo la capacidad de poner en reposo (suspend) o en marcha a un perifrico USB.En reposo, este reduce su consumo (si puede), quedndose la parte USB funcional. Esta gestin est orientada especialmente a los equipos porttiles.

Gua de MicrocontroladoresPuerto USBTabla 13 USB Especificaciones (Wikipedia)Microcontroladores Definicin Un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de un computador completo en un slo circuito integrado. Aunque sus prestaciones son limitadas, adems de dicha integracin, su caracterstica principal es su alto nivel de integracin. (Rodolfo Reyes Serrano)Dispositivo electrnico que posee un sistema microprocesado embebidoDiferencia entre microprocesadores y microcontroladoresUna de las diferencias ms relevantes es que los microcontroladores se utilizan para controlar solamente una cosa o realizar una funcin especfica como controlar una puerta automtica, una alarma controla, cosas muy puntuales; mientras que los microprocesadores son ms complejos ya que pueden llevar acabo diferentes tareas a la vez como el procesamiento masivo de datos matemticos.El microcontrolador: tiene embebido un sistema microprocesado con limitaciones en velocidad, memoria de datos y programa.Microcontrolador Maneja sistemas embebidos Bajo costo Velocidad limitada Arquitectura Control (Proceso) uP memoria de programa memoria de datos buses perifricos TCY= Ciclo de Relog = 4TOSC =Tiempo de OscilacionMicroprocesador Maneja multiples procesos Costo alto Velocidad altaArquitectura de un microcontroladorArquitectura Microprocesador Cpu Alu Decodificador de instrucciones Reset Reloj Pc->controlador de programa Registros -> W -> registro de trabajo Memoria de programa -> flash de 8 kword x 14 bits Las instrucciones son de 14 bits con una capacidad de 2^n donde el nmero de bits de PC Cap =2^13 =8192 espacios de memoria Memoria de dato Sfr -> registro de control y configuracin Gpr -> 368 bytes de usuario-> registros de propsito general Eeprom de datos Buses De datos De direcciones De control Perifricos Timer 0,2,3 Ccp 1,2 Mssp Adc Puertos I/O Usart

Microcontroladores de 8 bitsEntre los diferentes microcontroladores las principales diferencias estn en el nmero de instrucciones y su longitud, numero de puertos y funciones, la complejidad interna y de programacin.Lo primero que notamos en estos microcontroladores es su tamao reducido ya que solamente disponen de 8 pines de los cuales se pueden destinar 6 de ellos como E/S de perifricos tienen un oscilador interno R-C .el voltaje que soportan es de corriente continua entre 2.5 V y 5.5 V consumen menos de 2mA cuando trabajan a 5V y 4MHz. las instrucciones son 12 o 14 bits y el nmero de instrucciones que puede manejar es de 33 0 35 instrucciones.Gua de MicrocontroladoresMicrocontroladores(Mogrovejo, 2013)PICDefinicin El nombre completo es PICmicro PeripheralInterfaceController(controlador de interfaz perifrico) se trata de un diseoRISCque ejecuta unainstruccincada 4ciclosdel oscilador.Pic 16X84Las altas prestaciones de los microcontroladores PIC derivan de las caractersticas de su arquitectura. Estn basados en una arquitectura tipo Harvard que posee buses y espacios de memoria por separado para el programa y los datos, lo que hace que sean ms rpidos que los microcontroladores basados en la arquitectura tradicional de Von Neuman. PIC 16X (F) XX16F28 Conjunto reducido de instrucciones (RISC). 35 instrucciones para utilizar. Oscilador interno de 4Mhz. Las Instrucciones se ejecutan en un ciclo de maquina menos los saltos (goto y call) que se ejecutan en 2 ciclos. Un ciclo de maquina se lleva 4 ciclos de reloj, es decir a una frecuencia de 1Mhz, cada instruccin se ejecutara en 1uS (microsegundo). Con la estructura segmentada se realizan simultneamente la ejecucin de la instruccin y la bsqueda de la siguiente.

16F48El PIC16F648A cuenta con oscilador de 4 MHz interna, 256 bytes de memoria de datos EEPROM, una captura / comparacin / PWM, un USART, 2 comparadores y una referencia de voltaje programable que lo hacen ideal para aplicaciones analgicas / nivel integrado en los aparatos de automocin, industriales y aplicaciones de consumo.PWM (permitir el control de la potencia suministrada a los dispositivos elctricos, especialmente a las cargas inerciales tales como motores.) de 10 bits. La programacin de la baja tensin. El modo de reloj de baja velocidad. BOR programmable. 4 MHz oscilador interno. On-chip de referencia de tensin. 256 bytes de memoria EEPROM de datos.16F54El PIC16F54 de Microchip Technology es un micro de bajo costo, alto rendimiento, de 8 bits, completamente esttico, microcontroladores Flash basados en tecnologa CMOS. El PIC16F5X ofrece un rendimiento un orden de magnitud superior a sus competidores en la misma categora de precios.Las instrucciones de ancho de 12 bits son altamente simtricas lo que resulta en una compresin de 2:1 en cdigo a travs de otros microcontroladores de 8 bits de su clase. El conjunto de instrucciones fciles de usar y de recordar easy to reduce el tiempo de desarrollo significativamente.

Tabla 14 PIC 16F54, 16F57, 16F59

16F84Todas las instrucciones se ejecutan en un solo ciclo excepto las de salto que necesitan dos. Frecuencia de trabajo mxima de 10MHZ para PIC16F84 y de 20MHZ para PIC16F84A. Memoria de datos EEPROM de 64 bytes. Contador de programa de 13 bit (lo que en teora permitira direccionar 4 KB de memoria, aunque el 16F84 solo dispone de 1KB de memoria implementada). Pila con 8 niveles de profundidad. 1,000,000 de ciclos de borrado/escritura de la memoria EEPROM. 40 aos de retencin de la memoria EEPROM. 13 pines de E/S con control individual de direccin.Rango de alimentacin: 16LF84A: De 2 a 5,5 V en configuracin de oscilador XT, RC y LP. 16F84A: De 4 a 5,5 v en configuracin de oscilador XT, RC y LP. De 4,5 a 5.5 v en configuracin de oscilador HS. PIC 16F87XCPU de arquitectura RISC (Reduced Instruction Set Computer).Set de 35 instrucciones.Frecuencia de reloj de hasta 20MHz (ciclo de instruccin de 200ns).Todas las instrucciones se ejecutan en un nico ciclo de instruccin, excepto las de salto.Hasta 8K x 14 palabras de Memoria de Programa FLASH (ver tabla a continuacin).Hasta 368 x 8 bytes de Memoria de Datos tipo RAM (ver tabla a continuacin).Hasta 256 x 8 bytes de Memoria de Datos tipo EEPROM (ver tabla a continuacin).Hasta 15 fuentes de Interrupcin posibles.8 niveles de profundidad en la Pila hardware.Modo de bajo consumo (Sleep).Tipo de oscilador seleccionable (RC, HS, XT, LP y externo).Rango de voltaje de operacin desde 2,0V a 5,5V.Conversor Analgico/Digital de 10 bits multicanal.3 Temporizadores.Watchdog Timer o Perro Guardin.Mdulos de captura/comparacin/PWM.Comunicaciones por interfaz USART (Universal Synchronous Asynchronous Receiver Transmitter).Puerto Paralelo Esclavo de 8 bits (PSP).Puerto Serie Sncrono (SSP) con SPI e IC.

Tabla 15 PIC 16F873, 16F874, 16F876, 16F87716F 871

Tabla 16 Caractersticas 16F87116F 873

Tabla 17 Caractersticas 16F873

16F 876CPU tipo RISCC de altas prestaciones.Repertorio de 35 instrucciones de una palabra.Todas las instrucciones son de un nico ciclo, excepto las de salto, que llevan doble velocidad de trabajo de 20 Mhz, con un ciclo de instruccin de 200ns.Memoria de programa tipo flash de 8 Kpalabras.Memoria de datos de 368 bytes.-Memoria EEPROM de datos de 256 bytes.Patillaje compatible con PIC16C73B/74B/76/77.-Hasta 14 fuentes de interrupcin.Pila por hardware de 8 niveles.-Modos de direccionamiento directo, indirecto y relativo.Reset de conexin (POR).-Temporizacin de conexin y temporizacin de inicio de oscilacin.Circuito supervisor (watchdog).-Cdigo de proteccin programable.Tecnologa de alta velocidad y bajo consumo en la memoria CMOSEEPROM/FLASH.Programacin in-situ va serie con dos patillas.Posibilidad de programacin in-situ, va serie, mediante tensin simple de 5 voltios.Acceso para lectura o escritura a la memoria de programa.Gran margen de alimentacin entre 2 y 5,5 voltios.-Corriente de salida de 25 mA.Bajo consumo:Menor de 2 mA a 5V y 4 Mhz.20 A a 3V y 32 Khz.Menor de 1 A en reposo.Caractersticas perifricos:Timer0: Temporizador-Contador de 8 bits, con Predivisor tambin de 8 bits.Timer1: Temporizador-Contador de 16 bits con Predivisor, que puede trabajar conreloj externo en el modo reposo (sleep).Timer2: Temporizador-Contador de 8 bits con registro de perodo de la mismalongitud, con Predivisor y Postdivisor.Dos mdulos de Captura y Comparacin y uno PWM (modulacin por ancho de impulso:La captura es de 16 bits, con resolucin mxima de 12,5 ns.La comparacin es de 16 bits, con resolucin mxima de 200 ns.El bloque PWM tiene una resolucin mxima de 10 bits.-Convertidor multicanal analgico digital de 10 bits.Puerto serie sncrono (SSP), con modo Maestro (SPI) e I2C (maestro/servidor).Transmisor Receptor Universal Sncrono Asncrono (USART/SCI) con deteccinde 9 bits y de direccin.Circuito de deteccin de BROWN-OUT (bajada de tensin).16F 877CARACTERSTICAS16F877

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-

Tabla 18 Caractersticas 16F877

17CXXX

Un PIC17CXXX posee un alto rendimiento que se le puede atribuir a varias caractersticas de la arquitectura RISC. Esta familia de microcontroladores tiene una arquitectura Harvard, es decir con memoria de datos y de programa separadas, usando un bus de comunicacin para cada una. Esta separacin de memoria permite operar con instrucciones simples de 16 bits, contrario a la arquitectura tradicional Von Neumann, permitiendo ejecuciones en un ciclo con velocidades de 121 ns a 33MHz.Puede direccionar directa o indirectamente sus registros o memoria de datos, los registros especiales PC y WREG estn mapeados en la memoria de datos. Los PIC17CXXX tienen un set ortogonal (simtrico) set de instrucciones que hace posible realizar cualquier operacin en cualquier registro usando cualquier direccionamiento, dando una programacin eficiente y simple.A diferencia de la familia PIC16CXXX, permiten el uso de 2 registros de archivos en algunas operaciones de 2 operandos, esto permite mover datos entre estos 2 registros sin pasar por el WREG (Registro de Trabajo) lo que incrementa el rendimiento y reduce el uso de memoria de programa.Posee adems una ALU de 8 bits que puede trabajar con WREG (tambin de 8 bits) o cualquier otro registro. Aaden cuatro nuevas instrucciones (TLRD, TLWT, TABLRD, TABLWT), respecto a la familia PIC16CXXX, para la transferencia de datos entre los datos la memoria y la memoria de programa. Pueden ser utilizadas para auto programar la memoria EPROM.

Figura 26 Diagrama de Bloques del PIC17CXXXClasificacin.A continuacin se muestra la familia de Microcontroladores PIC17CXXX:

Figura 27 Familia de Microcontroladores PIC17CXXXCaractersticasLos PIC17CXXX tienen un repertorio de 58 instrucciones de 16 bits cada una.La memoria de datos puede llegar a tener hasta 1k (1024) registros de 8 bits. La memoria de programa de los PIC17CXXX es EPROM, ROM u OTP. Su sistema de interrupciones incluye el tratamiento de prioridades.Una caracterstica interesante de los PIC17 es su arquitectura abierta, que consiste en la posibilidad de ampliacin del microcontrolador con elementos externos. Para esto, los pines sacan al exterior las lneas de los buses de datos, direcciones y control, a las que se conectan dispositivos de memoria o controladores de perifricos. Esta facultad obliga a estos componentes a tener un elevado nmero de pines partiendo desde los 40 y 44.

Estos microcontroladores pueden trabajar en cuatro modos diferentes como: Microcontrolador Microcontrolador protegido Microcontrolador ampliado MicroprocesadorEn los modos microcontrolador y microcontrolador protegido solo se tiene acceso a la memoria de programa interna del microcontrolador. En los modos microcontrolador ampliado y microprocesador, es posible acceder a ampliaciones externas de la memoria de programa.Estos microcontroladores disponen de una amplia gama de dispositivos de entrada-salida y cuentan con un sistema de gestin de interrupciones vectorizadas muy potente.En la siguiente tabla se muestran las caractersticas ms relevantes de los modelos de esta gama, que slo se utilizan en aplicaciones muy especiales con grandes requerimientos.En la siguiente tabla se muestran las caractersticas ms relevantes de los modelos de esta gama, que slo se utilizan en aplicaciones muy especiales con grandes requerimientos.

Figura 28 Caractersticas PIC17CXXXAplicacionesLa familia PIC17CXXX es ideal para aplicaciones que requieren una ejecucin extremadamente rpida de software complejo. Estos incluyen aplicaciones que van desde el control preciso de un motor hasta el control de la transformacin industrial para la automocin, instrumentacin y telecomunicaciones.

PIC 18C(F)XXXARQUITECTURA DE LOS MICROCONTROLADORES PIC 18

Figura 29 Diagrama PIC 18

Arquitectura Harvard: Utilizada por losMicrocontroladoresPIC, tiene la unidad central de proceso (CPU) conectada a dos memorias (una con las instrucciones y otra con los datos) por medio de dosbuses diferentes. Una de las memorias contiene solamente las instrucciones del programa (Memoria de Programa), y los otros almacenos datos (Memoria de Datos). HISTORIA Y EVOLUCION DE LOS PIC 18.Hacia finales del siglo XX (1999) Microchip se encamina a transformarse en el lder indiscutible de los microcontroladores de 8 bits. El PIC16f84 revolucion el campo de los microcontroladores y la familia PIC16F87X potenci la evolucin de los sistemas de control embebido. Pero el gran salto final lo produce la compaa al responder a una necesidad de mercado, los PIC18. Esta familia, resultado de la convergencia de las tecnologas usadas en las familias PIC16 y PIC17, provoc la segunda revolucin tecnolgica iniciada con el PIC 16F84. Dentro de la familia de los PIC18 contamos con micros de propsito general, as como microcontroladores especficos para conectividad USB y Ethernet. La familia PIC18C fue la evolucin de la primera familia fabricada y presenta por Microchip en junio de 1999. La serie original estuvo formada por 4 dispositivos bsicos: PIC18C242 PIC18C252 PIC18C442 PIC18C452Los cuales rpidamente fueron transformados a versiones FLASH en el 2002 pasando a llamarse PIC18FXX2 (PIC18F242/252/442/452). En el ao 2004 Microchip presenta al mercado su nueva renovacin con los PIC18F2525/2620/4524/4620. CLASIFICACIN PIC18F242 PIC18F252 PIC18F442 PIC18F452 PIC18F2550 PIC18F4550 PIC18K PIC18FK PIC18J

CARACTERSTICASPIC18F242

Tabla 19 Caractersticas PIC18F242

PIC18F252

Tabla 20 Caractersticas PIC18f252

PIC18F442

Tabla 21 Caractersticas PIC18F452

PIC18F452

Tabla 22 Caractersticas PIC18F2550

PIC18F2550

Tabla 23 Caractersticas PIC18F4550

PIC18F4550

Tabla 24 Caractersticas PIC18F4550

APLICACIONESLa familia PIC18 permite una amplia variedad de aplicaciones incluyendo:Industrial: Cerraduras de Puertas Electrnicas. Iluminacin. Sistemas de Alarma.Dispositivos: Energa Inteligente Lavadoras RefrigeradorasMedicina: Dispositivos de Diagnstico Medidores PortablesAutomotores: Accesos automticos. Control interior. Control puerta Garaje. Control de Tablero.

Gua de MicrocontroladoresProgramacin de PIC

8. Programacin de PIC8.1. Instalacin del software necesarioPara realizar las prcticas con microcontroladores necesitaremos los siguientes programas (Software):1. PROTEUS, software para simulacin de circuitos. (Instrucciones y Software Anexos).2. MPLAB, ambiente para grabacin de PIC. (Instrucciones y Software Anexos).3. MIKROC, ambiente para programacin en C. (Instrucciones y Software Anexos).En cuanto a Hardware, es indispensable contar con un grabador de PIC, como PicKit2 o PicKit3, para poder transferir los programas desarrollados al PIC fsicamente.8.2. PIC 16F877AEste PIC pertenece a la familia 16, de gama media, del fabricante Microchip. Es un microcontrolador de 8 bits y posee una arquitectura Harvard - RISC. Harvard, puesto que para la comunicacin entre la CPU y las Memorias de Datos (MD) y Programas (MP) se realizan por buses independientes, al contrario de la arquitectura Von Newman. Esto deriva en una mejora sustancial en el rendimiento del microcontrolador. RISC (Reduced Instruction Set Computing) maneja el concepto de, simpleza frente a complejidad, en las instrucciones que manejar el CPU para sus operaciones. Arquitectura Von Neumann

Memoria de Programa (MP)Memoria de Datos (MD)CPU

Arquitectura Harvard

Memoria de Programa (MP)

CPUMemoria de Datos (MD)

Figura 30 Comparativa de Arquitecturas Harvard y Von Neumann.Este PIC puede encontrarse en presentaciones de 40 pines (presentacin PDIP) y de 44 pines (presentacin PLCC y TQFP), siendo la presentacin PDIP la usada para nuestras prcticas. Cuenta con un repertorio de 35 instrucciones, que son normalmente ejecutadas en un Tcy (Ciclo de instruccin).

Entre sus caractersticas principales podemos destacar:

CaractersticaValor

Memoria de Programa (Tipo)Flash

Memoria de Programa (KB)14

Velocidad del CPU (MIPS)5

Memoria de Datos, RAM (Bytes)368

EEPROM de Datos (Bytes)256

Puertos de Comunicacin1-UART, 1-A/E/USART, 1-SPI, 1-I2C1-MSSP(SPI/I2C)

Puertos de Captura/Comparacin/PWM2 CCP

Timers2 x 8-bits, 1 x 16-bits

ADC (Conversor Analgico - Digital)8 canales de 10-bits

Comparadores2

Rango de Temperaturas (C)-40 to 125

Rango de Operacin (V)2 to 5.5

Pines40

Tabla 25 Caractersticas relevantes del PIC16F877 (Microchip, 2014).

As tambin, mencionamos algunos registros de configuracin, que sern usados en las del PIC, para las prcticas de captulos siguientes. TRISA, TRISB, TRISC, TRISD, TRISDE. Para configuracin de los puertos I/O. STATUS. Para configuracin de los bancos de memoria, estado aritmtico de la ALU, estado de reset, entre otras configuraciones. OPTION. Para configuracin de TMR0, y WDT (Watch Dog Timer), prescaler del TMR0, entre otras configuraciones. INTCON. Contiene bits para habilitar y bits banderas de fuentes de interrupciones. PIR1, PIR2. Contienen bits banderas de interrupciones de ciertas fuentes de interrupcin. PIE1, PIE2. Contienen bits de habilitacin de ciertas fuentes de interrupcion.Para ms detalles acerca de este microcontrolador anexamos el Datasheet del mismo, que se encuentra distribuido de forma gratuita en el sitio web de Microchip (Microchip, 2014).

8.3. Diagrama de pines y funcionesA continuacin presentamos el diagrama de pines del PIC16F877A en su presentacin PDIP:

Figura 31 Pines del PIC16F877A (Microchip, 2014).Tambin la tabla de descripcin de Pines:Nombre del PinPinTipoTipo de BufferDescripcin

OSC1/CLKIN13IST/MOSEntrada del oscilador de cristal / Entrada de seal de reloj externa.

OSC2/CLKOUT14O-Salida del oscilador de cristal.

MCLR/Vpp/THV1I/PSTEntrada 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/AN4234567I/OI/OI/OI/OI/OI/OTTLTTLTTLTTLSTTTLPORTA es un puerto I/O bidireccional

RAO: 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/OTTL/STTTLTTLTTLTTLTTLTTL/STTTL/STPORTB es un puerto I/O bidireccional. Puede ser programado todo como entradas

RB0 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/OSTSTSTSTSTSTSTSTPORTC es un puerto I/O bidireccional

RCO 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/O I/O I/O I/O I/O I/O I/OST/TTLST/TTLST/TTLST/TTLST/TTLST/TTLST/TTLST/TTLEl PORTD es un puerto bidireccional paralelo.

REO/RD/AN5

RE1/WR/AN

RE2/CS/AN78910I/OI/OI/OST/TTLST/TTLST/TTLPORTE es un puerto I/O bidireccional.

REO: puede ser control delecturapara el puerto esclavo paralelo o entrada analgica 5.RE1: 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.31P-Referencia deGNDpara los pines lgicos y de I/O.

Vdd11.32P-Fuente positiva para los pines lgicos y de I/O.

NC---Sin conectar internamente.

Tabla 26 Descripcin de Pines del PIC16F877A (Microchip, 2014).LeyendaI = input (entrada), O = output (salida), I/O = input/output (entrada/salida), P = power (Vcc o GND). = Sin usar o implementar, TTL = Entrada TransistorTransistor Logic, ST = Entrada Schmitt Trigger.La informacin se puede encontrar, de igual manera, en el Datasheet del PIC16F877A que se encuentra como anexo.

9. El lenguaje de programacin MIKROC9.1. Ventajas e inconvenientesEl programa cargado en la memoria Flash del microcontrolador est compuesto por cadenas de unos y ceros los cuales representan las operaciones que realizar. Trabajar en lenguaje binario resulta una tarea bastante complicada por lo que en un inicio se us la notacin hexadecimal para facilitarlo.Sin embargo programar con notacin hexadecimal (HEX) sigue siendo bastante arduo, por lo que se adopta la programacin en lenguaje ensamblador (ASM). Aun as el lenguaje ensamblador tiene sus desventajas, por eso se adopta la programacin en alto nivel con lenguajes como C.Para un mejor entendimiento, presentamos la siguiente comparativa de C frente al leguaje ensamblador. (MikroElektronika, 2014)

Lenguaje EnsambladorLenguaje C (Alto nivel)

Ventajas Frente al codificar en hexadecimal, permite un mejor manejo del cdigo. Frente a C, este permite saber con detalle y exactitud las operaciones que realizara el cdigo.Ventajas Posee un compilador, el cual es capaz de optimizar el cdigo. Transforma el cdigo a lenguaje mquina. Es un lenguaje ampliamente usado, incluso fuera de los microcontroladores. Reduce notablemente, la cantidad de cdigo generado. El cdigo generado puede ser usado en otros microcontroladores sin muchas modificaciones.

Desventajas Una sola operacin involucra muchas lneas de cdigo. El cdigo depender de la arquitectura del microcontrolador. El programador debe conocer profundamente al microcontrolador.Desventajas8. No permite conocer a detalle las operaciones, como en ensamblador.

Tabla 27 Cuadro comparativo, Ensamblador vs C. (MikroElektronika, 2014)

Figura 32 Proceso que se sigue desde C hasta el lenguaje mquina (MikroElektronika, 2014)Es importante decir que el entorno que usaremos, MikroC, pone a disposicin el cdigo hexadecimal y en lenguaje ensamblador del programa que se compile.9.2. Los lenguajes usados para microcontroladoresExiste una gran variedad de lenguajes usados para trabajar con microcontroladores desde el mismo lenguaje ensamblador a otros de alto nivel como: Basic, usado por programas como: PicBasic. MicroBasic. C, usado por programas como: CSS C (CCS). C18, C30, C32 (Microchip). Byte Craft C (Byte Craft). PCW C (PCW). MikroC (MikroElektronika). IAR C (IAR).Como se puede observar, el lenguaje C es de hecho el ms conocido y usado en cuanto a programacin para microcontroladores debido a sus ventajas. Como ya mencionamos anteriormente el usado para las prcticas ser MikroC.9.3. Repertorio de instrucciones MikroCLas instrucciones especifican el flujo que tendr el programa, ante la ausencia de estas la ejecucin sera secuencial. Instrucciones de Seleccin, seleccionan una opcin disponible luego de evaluar valores. Instruccin IF, estado condicional.

if (valor == 1) {proceso1();}else{procesoOtro();}

Instruccin SWITCH, evaluacin para distintas posibles condiciones.switch (valor) {case 0: proceso0(); break;case 1: proceso1(); break;default:break;}

Instrucciones de bucle, permiten ejecutar cdigo repetitivamente en base a condiciones. Instruccin WHILE, las instrucciones dentro del bloque se repiten mientras que se cumpla una condicin.while (valor < n) {proceso1();valor++;}

Instruccin DO, las instrucciones dentro del bloque se repetirn hasta que se cumpla una condicin, a diferencia de WHILE las instrucciones se ejecutarn al menos una vez.do {proceso1();valor++;} while ( valor < n );

Instruccin FOR, las instrucciones se ejecutarn de manera repetitiva. Se usa una variable de conteo para controlar las repeticiones.for ( i = 0, i = 0; i < 10; i++ ){ proceso1();}

Instrucciones de Salto, detienen la ejecucin de un bloque incondicionalmente. Instruccin BREAK, detiene la ejecucin de un bucle, por ejemplo. En la instruccin SWITCH, la instruccin BREAK se usa para evitar que se evalen solo las condiciones necesarias. Instruccin GOTO, se usa para dar un salto a otra seccin de cdigo, de forma incondicional.for (...) {...if (desastre) goto Error;...}Error: /* cdigo de manejo para el error */

Instruccin RETURN, se utiliza para salir de la funcin actual de vuelta a la rutina de llamada, opcionalmente devolviendo un valor.Para ms detalles acerca de otras instrucciones usadas en mikroC, anexamos el documento Gua de Referencia Rpida a mikroC disponible para su descarga en el sitio web de MikroElektronika. (MikroElektronika, 2014)Gua de MicrocontroladoresLenguaje de Programacin MIKRO C

10. PrcticasEn las siguientes prcticas se usarn los paquetes de software instalados previamente en captulos anteriores. Esta gua proporcionar fragmentos de cdigo, imgenes de los circuitos y fragmentos de diagramas de flujo para el funcionamiento de cada prctica. Recomendamos tambin el uso de la plantilla de programacin que se podr encontrar adjunta a este documento. (Mogrovejo, 2014)10.1. Manejo de LEDSPara el manejo de LEDS se armar un circuito con el microcontrolador PIC16F877A, como se muestra en la siguiente figura:

Figura 33 Circuito para el manejo de LEDSPara su funcionamiento el circuito obedecer al siguiente flujograma. Como se podr observar, se envan valores decimales al PORTC, los cuales representan los bits que encendern a los LEDS.

Figura 34 Flujograma para el manejo de LEDSRecomendamos crear la subrutina o procedimiento iConfigPeripherals, donde se configuren los puertos a usar, interrupciones, prescalers, registros, etc. En esta prctica la subrutina se usa para configurar el PORTC como salida digital, puerto al que estn conectados los LEDS.

Figura 35 Flujograma para la subrutina de configuracin.En el lenguaje C, tendremos que el cdigo generado a partir de los flujogramas, ser:void iConfigPeripherals() { TRISC=0; //PuertoC como salidas digitales PORTC=0; //Encerar el puerto C}void main() { iConfigPeripherals(); while(1){ PORTC = 255; //Enciende todos los LEDs Delay_ms(1000); //Pausa de 1 segundo PORTC = 240; //Enciende los LEDs en RC4 a RC7 Delay_ms(1000); //Pausa de 1 segundo PORTC = 15; //Enciende los LEDs en RC0 a RC3 Delay_ms(1000); //Pausa de 1 segundo PORTC = 0; //Apaga todos los LEDs Delay_ms(1000); //Pausa de 1 segundo }}10.2. Manejo de RepeticionesEn esta prctica, similar a la anterior, se hace uso de la misma subrutina iConfigPeripherals y el mismo circuito indicados anteriormente. Manejo de LEDS 10.1.Para el manejo de repeticiones usamos las instrucciones de repeticin o bucle, en el siguiente flujograma mostramos el uso de los bucles FOR, WHILE y DO para encender los LEDS conectados al PORTC de nuestro PIC.

Figura 36 Flujograma para el manejo de RepeticionesEl cdigo que se produce del flujograma es el siguiente: void main() { unsigned char i; iConfigPeripherals(); while(1){ for (i = 0; i < 3; i++){ PORTC = 255; //Enciende todos los LEDs Delay_ms(500); //Pausa medio segundo PORTC = 240; //Enciende los LEDs en RC4 a RC7 Delay_ms(500); //Pausa medio segundo PORTC = 15; //Enciende los LEDs en RC0 a RC3 Delay_ms(500); //Pausa medio segundo PORTC = 0; //Apaga todos los LEDs Delay_ms(500); //Pausa medio segundo }

i = 0; do{ PORTC = 1; //Enciende el LED en RB0 Delay_ms(500); //Pausa medio segundo PORTC = 3; //Enciende el LED en RB1 Delay_ms(500); //Pausa medio segundo PORTC = 7; //Enciende el LED en RB2 Delay_ms(500); //Pausa medio segundo PORTC = 15; //Enciende el LED en RB3 Delay_ms(500); //Pausa medio segundo PORTC = 0; //Apaga todos LEDs Delay_ms(500); //Pausa medio segundo i++; }while(i < 3); }}10.3. Manejo de PulsadoresPara el manejo de pulsadores se modificar el circuito inicial, se agregarn 4 pulsadores que estarn conectados al PORTB. Ntese el uso de una resistencia de PULL-UP para cada pulsador.

Figura 37 Circuito para manejo de PulsadoresEl flujograma que se usar incluye la operacin de los pulsadores, siendo cada uno de ellos los que active cierto funcionamiento de los LEDS. Cada pulsador activar una instruccin IF.

Figura 38 Flujograma para el manejo de PulsadoresSe modifica tambin ligeramente la subrutina iConfigPeripherals para configurar el PORTB como entrada digital donde se colocarn los pulsadores.

Figura 39 Flujograma para la subrutina de configuracin

El cdigo en C que se genera a partir de los flujogramas es el siguiente:

void iConfigPeripherals() { TRISC = 0; //Puerto C como salidas digitales TRISB = 255; //Puerto B como entradas digitales PORTC = 0; //Encerar el puerto C PORTB = 0; //Encerar el puerto B}

void main() { iConfigPeripherals(); while(1){ if (RB0_bit == 0){ //El pulsador en RB0 es activado PORTC = 255; //Enciende todos los LEDs Delay_ms(500); //Pausa de medio segundo PORTC = 0; //Apaga todos los LEDs Delay_ms(500); //Pausa de medio segundo } if (RB1_bit == 0){ //El pulsador en RB1 es activado PORTC = 192; //Enciende los leds en RB7 y RB6 Delay_ms(500); //Pausa de medio segundo PORTC = 48; //Enciende los leds en RB5 y RB4 Delay_ms(500); //Pausa de medio segundo PORTC = 12; //Enciende los leds en RB3 y RB2 Delay_ms(500); //Pausa de medio segundo PORTC = 3; //Enciende los leds en RB1 y RB0 Delay_ms(500); //Pausa de medio segundo } if (RB2_bit == 0){ //El pulsador en RB2 es activado PORTC = 240; //Enciende los leds en RB4 a RB7 Delay_ms(500); //Pausa de medio segundo PORTC = 15; //Enciende los leds en RB0 a RB3 Delay_ms(500); //Pausa de medio segundo } if (RB3_bit == 0){ //El pulsador en RB3 es activado PORTC = 129; //Enciende los leds en RB7 y RB0 Delay_ms(500); //Pausa de medio segundo PORTC = 66; //Enciende los leds en RB6 y RB1 Delay_ms(500); //Pausa de medio segundo PORTC = 36; //Enciende los leds en RB5 y RB2 Delay_ms(500); //Pausa de medio segundo PORTC = 24; //Enciende los leds en RB4 y RB3 Delay_ms(500); //Pausa de medio segundo } PORTC = 0; //Apaga todos los LEDS }10.4. Manejo de DisplaysEl manejo de displays es muy similar al manejo de LEDS, teniendo en cuenta que un display comn de 7 segmentos en realidad es un empaquetado de 7 u 8 LEDS. Para esta prctica usaremos un display de nodo comn conectado al PORTC y 2 pulsadores conectados al PORTB.El circuito que a usarse es:

Figura 40 Circuito para el manejo de un Display de nodo comn.La subrutina de configuracin iConfigPeripherals sigue siendo la misma que para el manejo de pulsadores, ya que usamos de igual manera los puertos PORTB y PORTC.El flujograma para esta prctica es el siguiente:

Figura 41 Flujograma para el manejo de Display nodo Comn.El cdigo generado a partir del flujograma es el siguiente:void main() { iConfigPeripherals(); while(1){ if (RB0_bit == 0){ //El pulsador en RB0 es activado, cuenta de 0 a 9 PORTC = 192; //Numero 0 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 249; //Numero 1 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 164; //Numero 2 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 176; //Numero 3 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 153; //Numero 4 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 146; //Numero 5 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 130; //Numero 6 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 248; //Numero 7 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 128; //Numero 8 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 144; //Numero 9 en el Display Delay_ms(1000); //Pausa de 1 segundo } if (RB1_bit == 0){ //El pulsador en RB1 es activado, cuenta de 9 a 0 PORTC = 144; //Numero 9 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 128; //Numero 8 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 248; //Numero 7 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 130; //Numero 6 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 146; //Numero 5 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 153; //Numero 4 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 176; //Numero 3 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 164; //Numero 2 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 249; //Numero 1 en el Display Delay_ms(1000); //Pausa de 1 segundo PORTC = 192; //Numero 0 en el Display Delay_ms(1000); //Pausa de 1 segundo } PORTC = 255; //Apaga todo el Display }}10.5. Manejo de LCDEn esta prctica usaremos un Display LCD de 2x16 el cual tiene 32 segmentos divididos en 2 lneas, de ah su denominacin, para representar caracteres. El LCD es un sistema microprocesado, para trabajar conjuntamente con el microntrolador PIC MikroC provee una librera dedicada a su manejo.El circuito con el trabajaremos es el siguiente:

Figura 42 Circuito para manejo de LCDLa subrutina de configuracin iConfigPeripherals configura el PORTD como salida digital y llama al procedimiento de inicializacin del LCD.

Figura 43 Flujograma de la subrutina de configuracinMientras que le flujograma ser el siguiente, notar el uso de llamadas a mtodos como Lcd_Out y Lcd_Cmd pues estas son subrutinas propias de la librera LCD provista por MikroC para el manejo del LCD.

Figura 44 Flujograma para el manejo del LCDEl programa en MikroC que se generar es el siguiente. Ntese el uso de los bits de configuracin necesarios para el manejo del LCD. //Configuracion de los bits que usara el LCD sbit LCD_RS at RD2_bit; sbit LCD_EN at RD3_bit; sbit LCD_D4 at RD4_bit; sbit LCD_D5 at RD5_bit; sbit LCD_D6 at RD6_bit; sbit LCD_D7 at RD7_bit;

sbit LCD_RS_Direction at TRISD2_bit; sbit LCD_EN_Direction at TRISD3_bit; sbit LCD_D4_Direction at TRISD4_bit; sbit LCD_D5_Direction at TRISD5_bit; sbit LCD_D6_Direction at TRISD6_bit; sbit LCD_D7_Direction at TRISD7_bit; void iConfigPeripherals() { TRISD = 0; //Puerto D como salidas digitales PORTD = 0; //Encerar el Puerto D Lcd_Init();//Procedimiento para inicializar el LCD}

void main() { iConfigPeripherals(); Lcd_Cmd(_LCD_CURSOR_OFF); //Apaga el cursor del LCD while(1){ Lcd_Out(1,3,"Hola Mundo"); //Mostrar un mensaje Delay_ms(1000); //Pausa de 1 segundo Lcd_Cmd(_LCD_CLEAR); //Limpiar el LCD

Lcd_Out(1,3,"Manejo de LCD"); //Mostrar otro mensaje Lcd_Out(2,8,"2X16"); //Mostrar otro mensaje mas Delay_ms(1000); //Pausa de 1 segundo Lcd_Cmd(_LCD_CLEAR); //Limpiar el LCD

Lcd_Out(1,3,"PIC16F877A"); //Mostrar un mensaje mas Lcd_Out(2,3,"Microchip"); //Mostrar otro mensaje mas Delay_ms(1000); //Pausa de 1 segundo Lcd_Cmd(_LCD_CLEAR); //Limpiar el LCD }}10.6. Manejo de SonidoEl manejo de sonido con MikroC se realiza usando la librera Sound, librera que est disponible en dicho entorno de programacin. La prctica de sonido requiere el siguiente circuito:

Figura 45 Circuito para manejo de sonido.La subrutina de configuracin iConfigPeripherals, para manejar el sonido es:

Figura 46 Flujograma para la subrutina de configuracinMientras que el flujograma en el que se reproducirn los sonidos es el siguiente:

Figura 47 Flujograma para el manejo de sonidosAs tenemos que el cdigo en lenguaje C siguiendo los flujogramas es:void iConfigPeripherals() { TRISB = 255; //Puerto B como entradas digitales PORTB = 0; //Encerar el Puerto B

Sound_Init(&PORTD, 0); //Se configura el pin RD0 como salida del sonido}

void main() { iConfigPeripherals(); while(1){ if(RB0_bit == 0){ Sound_Play(659, 2