Buscas mas, encuentralo aqui

Cargando...

jueves, 26 de junio de 2014

PIC 16F877A ARQUITECTURA

El microcontrolador; consta de un procesador, memoria para programa y datos, periféricos de entrada / salida, convertidores de AD y DA, módulos de transmisión y recepción de datos.
La arquitectura del microcontrolador es cerrada debido a que no se puede tener ningún contacto directo con el procesador interno del microcontrolador, en cambio en un microprocesador la arquitectura es abierta,  debido a que podemos agregar mas dispositivos en hardware dependiendo de las necesidades.
Los microcontroladores cuentan con un set de instrucciones reducido en cambio la mayoría de los microprocesadores tienen gran cantidad de instrucciones. La mayoría de los microcontroladores posee una arquitectura Harvard mientras los microprocesadores  poseen una arquitectura Von Neuman.





Los microcontroladores se aplicación en las industrias para resolver problemas específicos por ejemplo: los  electrodomésticos, en la industria automotriz, en el procesamiento de imagen y video entre otros.

Cracterísticas PIC 16F877A
  • Procesador de arquitectura RISC avanzada
  • Juego de 35 instrucciones con 14 bits de longitud.
  • Todas las instrucciones de un solo ciclo, excepto para el programa ramas, que son de dos tiempos
  • Frecuencia de 20 Mhz
  •  Hasta 8K palabras de 14 bits para la memoria de código, tipo flash.
  •  Hasta 368 bytes de memoria de datos RAM
  • Hasta 256 bytes de memoria de datos EEPROM
  • Hasta 14 fuentes de interrupción internas y externas
  • Pila con 8 niveles
  • Código de protección programable
  • Modo Sleep de bajo consumo
  • Programación serie en circuito con 2 patitas
  • Voltaje de alimentación comprendido entre 2 y 5.5 voltios
  • Bajo consumo (menos de 2 mA a 5 V y 5 Mhz)
  • Hasta 256 x 8 bytes de memoria EEPROM de datos
  • Perro guardián (WDT)
  • Modos de direccionamiento directo, indirecto y relativo


ARQUITECTURA INTERNA DEL PIC 16F877A
El  PIC16F877A es un  procesador tipo RICS que es un procesador de instrucciones reducidas, por su pequeño número de instrucciones, además casi todas se realiza en la misma cantidad de tiempo, posee unidades que trabajan en paralelo conectadas por pipes o tuberias. Este procesador emplea una arquitectura Harvard lo que significa que trabaja las zonas de memoria de programa y datos en forma separada. 


La memoria del Programa en la parte superior izquierda con 8K posiciones por 14 bits, también esta la memoria de datos (RAM) de 368 posiciones por 8 bits. La memoria EEPROM 256 posiciones x 8 bits. El procesador que está formado por la ALU (unidad aritmetica lógica) el registro de trabajo W. Tambien están los periféricos I/O Port A, B, C, D, E el TMR0 (temporizador contador de eventos), TMR1 y TMR2 entre otros. También observamos un registro de instrucción que se carga cada vez que el ALU solicita una nueva instrucción a procesar.




En la parte intermedia encontramos el Status Reg. que es el registro de estado encargado de anotar el estado actual del sistema, cada vez que se ejecuta una instrucción se llevan a cabo cambios dentro del PIC 16F877A como desborde, acarreo, etc. Cada uno de esos eventos está asociado a un bit de este registro. Existe el Program Counter o contador de programa este registro indica la dirección de la instrucción a ejecutar. El registro en cuestión no es necesariamente secuencial, esto es no se incrementa necesariamente de uno en uno ya que puede darse el caso en el que salte dependiendo si hay una instrucción de bifurcación de por medio o puede haber alguna instrucción de llamada a función y/o procedimiento. También tenemos el bloque de la pila, cuya  función es ser un buffer temporal en el que se guarda el contador de programa cada vez que se suscita una llamada a un procedimiento y/o función (incluyendo interrupciones). Por tanto el nivel de anidamineto es de hasta 8 llamadas.

ORGANIZACION DE MEMORIA DEL PIC 16F877A


La memoria del PIC 16F877A se divide en memoria de datos y programa. La de datos a su vez se divide en:

• SFR (Registros de propósito especial) :Son registros que ayudan a configurar el hardware interno asi como sirven para escribir o leer valores de los diferentes componente que constituyen el PIC 16F877A. Por ejemplo con el  registro “TRISB” podemos configurar el modo de trabajo de las líneas del puerto B
• GFR (Registros de propósito general): Estos  son posiciones de memoria que podemos usar para almacenar valores que emplean nuestros programa.





La memoria de datos del PIC 16F877A se divide en cuatro bancos. Las posiciones bajas siempre están reservadas para los SFR en tanto que las altas para los GFR.

El PIC 16F877A también cuenta con una memoria EEPROM, con 256 posiciones, para acceder a la memoria no podemos leer o escribir directamente es decir colocar la dirección y obtener o dejar el valor. Para eso haremos uso de registros adicionales de tal manera que la usaremos indirectamente.

INSTRUCCIONES PIC 16F877A
Este PIC 16F877A consta de 35 instrucciones con las cuales las podemos dividir en tres grupos
Instrucciones orientadas a byte : Estas reservan los 7 bits de menor peso donde se  indica la dirección del registro que será operado. Realizada la operación usamos el bit d para indicar donde será almacenado el resultado.
Instrucciones orientas a bit: Estas se encargan  escribir o leer una posición (bit) dentro de un registro. Una los 7 bits inferiores son destinados para indicar la dirección de registro que vamos a operar y los siguientes tres bit especifican el bit dentro del registro.
Literales o de control: nos sirven para crear bucles o llamar subrutinas a realizar.

PRENDER APAGAR UN LED PIC16F877A ASSEMBLER

Comenzaremos a hacer un programa sencillo en el cual podremos en assembler usando el PIC 16F877A para prender y apagar un led presionando un pulsador como se muestra en el diagrama.

Haremos uso de dos puertos del PIC 16F877A, el puerto B y el puerto D, declararemos al puerto B como entrada y el puerto D será configurado como salida.  En el grafico podemos observar que el pin RB0 está puesto el pulsador y una resistencia en  una configuración pull up, cuando no se está presionando el pulsador se pone un valor alto (5V) a la entrada RB0 y cuando se presiona se le pone un nivel bajo (0V).  En la salida RD0 para que encienda el led su salida debe estar a un nivel bajo por eso al momento de desarrollar el programa en assembler deberemos testear el pin BB0 y si esta en un nivel alto pondremos un valor alto en la salida RD0 que mantendra apagado el led, caso contrario pondremos un valor bajo en la salida RD0 lo cual hara que el led encienda.



PROGRAMA EN ASSEMBLER PARA EL PIC 16F877A
Para realizar el programa utilizaremos el MPLABX 2.0
Abrimos el programa MPLABX IDE.

  • Hacemos clic en file, seleccionamos New Project...
  • En ventana “Choose Project” que emerge seleccionamos “ Microchip Embedded “ y “Standalone Project”  ,luego hacemos clic en “next”.
  • En la ventana que emerge ”Select Device” dejamos el recuadro de “Family” en “all  families” y en el recuadro de “Device” digitamos “PIC16F877A” , luego presionamos “next”.
  • En la ventana “Select Tool”  seleccionamos “Simulator” y cliqueamos “Next”.
  • En “Select compiler” seleccionamos “mpasm(v5.54)[……..”.
  • Ahora seleccionamos la ubicación y nombre del proyecto.
  • Una vez creado el proyecto seleccionamos  New File y aparecerá una ventana “Choose File Type” y seleccionamos “assembler” si no aparece en la lista seleccionamos “Other” aparecerá una nueva lista donde podremos seleccionar “assembler”.
  • Luego podrás ponerle nonbre a File y seleccionar una carpeta dentro del proyecto y listo.
Ahora es momento de escribir el programa en assembler que se grabara en el pic 16f877a será el siguiente:

miércoles, 20 de noviembre de 2013

ARQUITECTURA DEL PROCESADOR 8086


El 8086 es un microprocesador de 16 bits, consta de una unidad de ejecución (EU: Execution Unit) y una unidad interfaz del bus (BIU: Bus Interface Unit).

·         Unidad de Ejecución (EU). Es la encargada del proceso de las instrucciones del CPU. Está conformada por los registros generales, los registros índices y apuntadores, los flags, la unidad aritmética lógica, y la lógica de control que maneja todo el proceso para ejecutar las instrucciones
·         Unidad de Interfaz del Bus (BIU). Realiza la búsqueda de datos e  instrucciones. Asi como también se encarga del control de la interacción del CPU y los elementos externos. Está conformada una cola de 6 bytes para instrucciones, por los registros de segmento  y lógica para controlar los buses externos del microprocesador.



REGISTROS
El  8086 tienen 14 registros de 16 bits, de los cuales 4 son de propósito general que también pueden ser accedidos como ocho registros de 8 bits, 4 registros de segmentos, 2 de índices, 2 punteros de pila  y un registro de indicadores de estado (flags).
Registros de Propósito General
Estos son el AX, BX, CX, y DX, de 16 bits. Cada uno de ellos se pueden dividir en dos registros de 8 bits, llamados registros altos (Hight) AH , BH, CH, DH y DL, y en registros de nivel bajo (Low) AL, BL, CL, y DL .
  • Registro AX: Se denomina acumulador de 16 bits, es utilizado para operaciones que implican entrada/salida,  multiplicación y división (estas dos últimas en conjunto con el registro DX)
  • Registro BX: Es el registro base, también se emplea como acumulador, y es el único registro de propósito general que puede ser un índice para direccionamiento indexado
  • Registro CX: Es conocido como el registro contador, se usa para realizar operaciones de conteo, interacciones con las cadenas y rotaciones.
  • Registro DX: ES el registro de datos. En algunas operaciones se indica mediante este registro el número de puerto de entrada/salida, y en las operaciones de multiplicación y división de 16 bits se utiliza junto con el acumulador AX.
Registros Índice
Los registros SI y DI están disponibles para direccionamiento indexado y para operaciones de cadenas de caracteres.

  • SI: Registro de índice fuente (no se puede subdividir). Sirve como puntero fuente para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.  El SI está asociado con el segmento DS.
  • DI: Registro de índice de destino (no se puede subdividir). Sirve como puntero destino para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto. El DI está asociado con el segmento ES.

Registros de Segmento
Estos definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas áreas pueden solaparse total o parcialmente. No es posible acceder a una posición de memoria no definida por algún segmento: si es preciso, habrá de moverse alguno.
  • Registro CS: El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.
  • Registro DS: La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. Esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos.
  • Registro SS: El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada.
  • Registro ES: Para algunas operaciones con cadenas de caracteres se utiliza el registro extra de segmento para manejar el direccionamiento de memoria. El ES está asociado con el  DI. Un programa que requiere el uso del ES puede inicializarlo con una dirección de segmento apropiada.

Registros Apuntadores Los registros BP y SP están asociados con el registro SS y permiten al sistema acceder a datos en el segmento de la pila.
  • Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros dentro de la pila.
  • Registro SP: El apuntador de pila de 16 bits está asociado con el segmento SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila. El sistema maneja de manera automática este registro, aunque el programa puede hacer ciertas manipulaciones con él.
Registros de Banderas
Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual de la del procesador  y el resultado del procesamiento


  • Bit 0 -  CF (indicador de acarreo): Contiene el acarreo del bit de mayor orden después de una operación aritmética; también almacena el contenido del último bit en una operación de desplazamiento o de rotación.
  • Bit 2  - PF (indicador de paridad): Indica si el número de bits 1, del byte menos significativos de una operación, es par (0=número de bits 1 es impar; 1=número de bits 1 es par).
  • Bit 4  -   AF (indicador  auxiliar): Contiene el acarreo del bit 3. Esta bandera se prueba con las instrucciones DAA y DAS para ajustar el valor de AL después de una suma o resta BCD.
  • Bit 6  -  ZF (indicador de cero): Indica el resultado de una operación aritmética o de comparación (0=resultado diferente de cero; 1=resultado igual a cero).
  • Bit 7 - SF (indicador de signo): Contiene el signo resultante de una operación aritmética (0=positivo; 1=negativo).
  • Bit  5 - TF (indicador de trampa): Permite la operación del procesador en modo de depuración (paso a paso)
  • Bit 9 -  IF (indicador de interrupción): Controla el disparo de las interrupciones (1=habilita las interrupciones; 0=deshabilita las interrupciones). La interrupción no enmascarable es la única que no puede ser bloqueada por esta bandera. El estado de la bandera IF se controla con las instrucciones STI y CLI.
  • Bit 10 - DF (indicador de dirección): Controla la selección de incremento o decremento de los registros SI y DI en las operaciones con cadenas de caracteres.
  • Bit 11  -  OF (indicador de overflow, desbordamiento): Indica desbordamiento del bit de mayor orden después de una operación aritmética de números con signo (1=existe overflow; 0=no existe overflow).
Registró Puntero De Instrucciones (IP)
El registro IP, puntero de instrucciones, apunta  o señala la próxima instrucción a ejecutarse en el programa.










lunes, 18 de noviembre de 2013

CONTADOR DIGITAL 7490 MODULO 2, 3, 4, 5, 6, 7, 8, 9 y 10

Ahora mostraremos las diferentes configuraciones deseables con el contador 7490 o contadores de diferentes módulos. debemos saber que el 7490 es un contador asíncrono y decimal pues puede contar de 0 a 9 en código BCD los cuales pueden ser mostrados en un display haciendo uso de un decodificador de binario a 7 segmentos. También haremos uso de un generador de pulsos elaborado con un 555 en configuración astable.


IMPORTANTE

  •  Recordar que el contador 7490 tiene una compuerta nand interno que tiene como entrada los pines 2 y 3 del contador 7090 y su salida al reset de los FLIP FLOP JK internos, por lo tanto para resetear el contador necesariamente los valores de entrada de los pines 2 y 3 deben ser valores altos a la vez (1 logico).



CONTADOR MODULO 2
Este contador de modulo 2 solo cuenta de 0 a 1 y se reinicia, pues se ha conectado el pin 9 a los pines  2 y 3 de contador 7490 respectivamente haciendo que al momento de querer cambiar al numero 2 este se resetee inmediatamente, reiniciando el conteo. 
Contador modulo 2


 CONTADOR DIGITAL MODULO 3.
Este contador de modulo  cuenta de 0 a 2 y se reinicia, pues se ha conectado los pines  9 y 12  a los pines 2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 3 este se resetee inmediatamente, reiniciando el conteo.



Contador modulo 3


CONTADOR DIGITAL MODULO 4.


Este contador de modulo  cuenta de 0 a 3 y se reinicia, pues se ha conectado  el pin 8  a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 4 este se resetee inmediatamente, reiniciando el conteo.
Contador modulo 4

CONTADOR DIGITAL MODULO 5.
Este contador de modulo  cuenta de 0 a 4 y se reinicia, pues se ha conectado los pines 8 y 12 a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 5 este se resetee, reiniciando el conteo.
Contador modulo 5

CONTADOR DIGITAL MODULO 6.
Este contador de modulo  cuenta de 0 a 5 y se reinicia, pues se ha conectado los pines 8 y 9 a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 6 este se resetee  inmediatamente, reiniciando el conteo.
Contador modulo 6

CONTADOR DIGITAL MODULO 7.
Este contador de modulo  cuenta de 0 a 6 y se reinicia, para este circuito se hace uso de una compuerta nand 7408 para resetear el contado, se ha conectado los pines 8 y 9 a los pines  2 y 1 de la compuerta nand y el pin 3 de la compuerta nad va conectado al pin 2 de contador 7490 como también se conectaron los pines 12 y 3 del contador 7490,  haciendo que al momento de  cambiar al numero 7 este se resetee inmediatamente, reiniciando el conteo.

CONTADOR DIGITAL MODULO 8.
Este contador de modulo  cuenta de 0 a 7 y se reinicia, pues se ha conectado el pin 11 a los pines  2 y 3 del contador 7490,  haciendo que al momento de  cambiar al numero 7 este se resetee inmediatamente, reiniciando el conteo.

CONTADOR DIGITAL MODULO 9
Este contador de modulo  cuenta de 0 a 8 y se reinicia, pues se ha conectado los pines 11 y 12 a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 9 este se resetee inmediatamente, reiniciando el conteo.

CONTADOR DIGITAL MODULO 10.
Este contador de modulo 10 que ya es conocido  cuenta de 0 a 9 y se resetea de manera automática reiniciando el conteo. Los pines 2 y 3 se conectan a tierra.


Materiales para el contador digital
  • contador 7490
  • decodificador 7447
  • un led
  • 2 resistencias de 510
  • compuerta and 7808
  • generador de pulsos
  • fuente de alimentacion de 5 voltios
  • display catodo comun

RELOJ DIGITAL CON CONTADOR 7490 YDECODIFICADOR 7447

El reloj digital esta realizado 

Materiales para el reloj digital

  • U1, U2, U3, U4, U5 y U6         contador 7490.
  • U7, U8, U9, U10, U11 y U12. decodificador 7447.
  • 2 compuertas lógicas 7408.
  • 6 resistencias de 510 Ω.
  • 6 display ánodo común.
  • generador de pulsos
  • fuente de 5 voltios


jueves, 12 de septiembre de 2013

CONTADOR BINARIO 7493 DE 8 BITS


Descripción del contador.
El contador binario, en si es un contador que muestra el resultado en numeración binaria o de base dos, donde a cada salida del contador se le denomina bit, este bit pude tomar solo dos valores “1 lógico” (valor de voltaje alto) o “0 lógico” (valor de voltaje aproximadamente cero),.

Además estos bits de salida del contador binario tienen un orden establecido donde tomando de derecha a izquierda el primero es el bit menos significativo y el ultimo es el bit más significativo. Además este contador ha sido implementado para poder poner sus salidas a cero cuando sea requerido como también la función de poder desconectar las salidas del, circuito integrado encargado de realizar el conteo, de los leds que nos muestran el valor de las salidas.



Funcionamiento: 
En este diseño se le ha encargado la función de conteo binario al circuito integrado, contador binario asíncrono 7493, el cual es de tecnología TTL por lo cual su voltaje de alimentación debe ser de 5 voltios, el contador 7493 cuenta con dos pines Master Reset (Clear) los cuales emplearemos para resetear nuestro contador 7493, estos dos pines serán conectados y de uno de estos puntos se pondrá un swicht para poder conectar los pines Master Reset (Clear) a tierra para poder realizar el conteo y si queremos resetear a cero el contador 7493 pondremos los pines a un voltaje alto.


Una observación que debe hacerse es que el contador 7493 está constituido internamente por cuatro  flip flops  de los cuales solo están conectados tres, por eso debemos realizar una conexión externa entre los pines 12 y 1 como se muestra en el diagrama. 


El contador contara los flancos de bajada de la señal de pulsos que pondremos a su entrada (pin 14). El circuito triestado 74244, incluido en el diagrama es un circuito que funciona como un swith que permite dejar pasar la señal de entrada ya sea valores “1 lógico” (valor de voltaje alto) o “0 lógico” (valor de voltaje aproximadamente cero), como también puede bloquear la señal de entrada y poner a las salida un estado de alta impedancia, no mostrando nada en los leds. Los leds incorporados en el circuito tienen la tarea de hacer visible el conteo realizado de forma binaria por nuestro contador, para el correcto funcionamiento de los leds se debe poner resistencias en serie a estos para poder limitar la cantidad de corriente que para evitar que se fundan los leds, se recomienda que el valor de las resistencias estén en un rango de 200Ω a 1000Ω y de ¼ de wat. 
A continuación mostraremos un contador sencillo que es un circuito clásico.



Ahora se muestra el circuito contador con el integrado triestado 74244 el cual, de ser requerido, nos ayudara a bloquear la salida del contador.



Materiales para el contador binario.




Nota:
Nótese que en el diagrama tanto el contador 7493 como el triestado 74244 no tienen las conexiones a tierra y a los 5 voltios para su funcionamiento. En el contador 7493 el pin 10 va a tierra y el pin 5 va a los 5 voltios. Para el triestado 74244 el pin 10 va a tierra y el pin 20 va a los 5 voltios.

miércoles, 4 de septiembre de 2013

CONTADOR 7490 DE 00 A 99


Este contador de 00 a 99 es de fácil diseño, cuenta con dos circuitos contadores integrados 7490. El contador  7490  es un contador BCD de flanco negativo, muestra en sus cuatro salidas los números en forma binaria, para lograr el conteo es necesario hacer la conexión entre la salida Q0 con la entrada CLK B, además de tener un pin de  reset que pone el contador a 00 cuando dicho pin es puesto a un nivel alto o “1 lógico” reiniciando la labor del contador, para poder observar los valores en el contador en numeración decimal, conectamos la salida del contador al decodificador 7447 el cual hace que podamos ver los valores del contador en los diplays, en el grafico se podrá notar que en las conexiones de salida del decodificador 7447  con el display no tenemos resistencias, como generalmente se hace, pero se ha colocado una resistencia de 500Ω (este valor puede variar entre 200 Ω  a 1000 Ω ) entre el display y el punto de 5 voltios, el cual limitara la corriente que pase por los leds internos.
Diagrama contador de 00 a 99
Contador con triestado


Aquí tenemos un circuito de un contador  alterno, el cual tiene un circuito triestado entre las salidas del contador BCD y el decodificador 7447. Los triestados pueden tener en sus salida un “0 lógico”, “1 lógico” y un estado de alta impedancia, funciona como un interruptor, para nuestro caso este interruptor se conectara cuando le pongamos un “0 lógico” y mostrara el valor de su entrada que puede ser “0 lógico” ó “1 lógico”, pero al ponerlo en “1 lógico ” el interruptor se abrirá y en su salida habrá una alta impedancia, por lo cual no se verá nada en los displays del contador.
Diagrama del contador 00 a 99 con triestado


Lista de componentes
  • 2 contador 7490
  • 2 decodificador 7447
  • 2 Triestado 74ls244
  • 2 diplay ánodo común
  • R1, R2 500Ω
  • Un interruptor doble
  • Un generador de ondas

NOTA
Debe tener en cuenta que las conexiones de alimentación y tierra no están en el grafico del contador, no olvide realizarlos.
Para ver como construir un generador de pulso click