domingo, 29 de agosto de 2010

35 instrucciones que reconoce la CPU de los PIC de medio rango, incluyendo su mnemónico, tiempo de ejecución, código de máquina y afectación de banderas:




Informaciòn obtenida de:

                                   http://www.scribd.com/doc/101172/pic16f877-en-espanol1

domingo, 22 de agosto de 2010

Numeros Negativos

     En los sistemas digitales en una cantidad binaria necesitaremos asignar el signo a la posición de un bit y la magnitud a una serie de bits que pueden ir del bit más significativo al menos significativo, lo que puede traer consigo confusión al no saber si se trata de un sobre flujo, acarreo o el signo de alguna de las cantidades involucradas con dicha operación aritmética.

     Primero ubicamos el número de bits con el fin de establecer números negativos, fijaremos el bit de la extrema izquierda solo a representar el signo, por ejemplo, si trabajaremos con un byte sabemos que contiene 8 bits (bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0) con los cuales podemos representar 256 objetos diferentes, designaremos el bit7 para el signo del número, por tanto cada número dígase positivo o negativo se maneja como objeto aunque se trate de su equivalente negativo (43 y -43) tomando esta situación en cuenta simplemente se divide la cantidad posible de representar objetos por la mitad, una parte para los números positivos (0....127) y otra para los negativos (-1....-128) por ultimo debemos hacer notar que si el bit asignado para el signo es cero el número se toma como positivo pero si el bit asignado para el signo es uno el número será negativo.

     Si los signos de los números que se suman son diferentes, cualquier acarreo obtenido es falso y deberá ser ignorado; y si los signos de los números que se suman son iguales, el acarreo es verdadero y actúa como el bit signo. En ausencia de acarreo se considera que este es cero, así la respuesta es positiva.

viernes, 20 de agosto de 2010

Descripción del PIC 16F877

Descripción General del PIC16F877

La Familia del PIC16F877
El microcontrolador PIC16F877 de Microchip pertenece a una gran familia de microcontroladores de 8 bits (bus de datos) que tienen las siguientes características generales que los distinguen de otras familias:
- Arquitectura Harvard
 - Tecnología RISC
- Tecnología CMOS
Estas características se conjugan para lograr un dispositivo altamente eficiente en el uso de la memoria de datos y programa y por lo tanto en la velocidad de ejecución. Microchip ha dividido sus microcontroladores en tres grandes subfamilias de acuerdo al número de bits de su bus de instrucciones:

Subfamilia instrucciones nomenclatura
Base - Line 33 instrucciones de12 bits PIC12XXX y PIC14XXX
Mid – Range 35 instrucciones de 14 bits PIC16XXX
High - End 58 instrucciones de 16 bits PIC17XXX y PIC18XXX
• Existen algunas excepciones, como el PIC16C5X que maneja 33 instrucciones
 Algunos autores manejan una “gama enana” consistente en los PIC12C508 y PIC12C509 en empaque de 8 patitas y con un bus de instrucciones de 12 o de 14 bits.

Variantes principales
Los microcontroladores que produce Microchip cubren una amplio rango de dispositivos cuyas características pueden variar como sigue:
- Empaquetado (desde 8 patitas hasta 68 patitas)
- Tecnología de la memoria incluída (EPROM, ROM, Flash)
- Voltajes de operación (desde 2.5 v. Hasta 6v)
- Frecuencia de operación (Hasta 20 Mhz)

Empaquetados
Aunque cada empaquetado tiene variantes, especialmente en lo relativo a lasdimensiones del espesor del  paquete, en general se pueden encontrar paquetes tipo PDIP (Plastic Dual In Line Package), PLCC (Plastic Leaded Chip Carrier),





Nomenclatura

Además de lo mostrado en la tabla anterior, en el nombre específico del microcontrolador pueden aparecer algunas siglas que dependen del rango de voltaje manejado y del tipo de memoria ROM incluida, como se muestra en la siguiente tabla:

Oscilador

Los PIC de rango medio permiten hasta 8 diferentes modos para el oscilador. El usuario puede seleccionar alguno de estos 8 modos programando 2 bits de configuración del dispositivo denominados: FOSC1 y FOSC0, ubicados en un registro especial de configuración en la localidad 2007H de la memoria de programa:

 
Los tres modos LP, XT y HS usan un cristal o resonador externo, la diferencia sin  embargo es la ganancia de los drivers internos, lo cual se ve reflejado en el rango de frecuencia admitido y la potencia consumida. En la siguiente tabla se muestran los rangos de frecuencia así como los capacitores recomendados para un oscilador en base a cristal.

Cristal externo: En los tres modos mostrados en la tabla anterior se puede usar un cristal o resonador cerámico externo. En la siguiente figura se muestra la conexión de un cristal a las patitas OSC1 y OS2 del PIC.
 

Circuito RC externo: En los modos RC y EXTRC el PIC puede generar su señal oscilatoria basado en un arreglo RC externo conectado a la patita OSC1 como se muestra en la siguiente figura:

Este modo sólo se recomienda cuando la aplicación no requiera una gran precisión en la medición de tiempos.

Rangos.- La frecuencia de oscilación depende no sólo de los valores de Rext y Cext, sino también del voltaje de la fuente Vdd. Los rangos admisibles para resistencia y capacitor son:

Rext: de 3 a 100 Kohms

Cext: mayor de 20 pf

Oscilador externo.- También es posible conectar una señal de reloj generada mediante un oscilador externo a la patita OSC1 del PIC. Para ello el PIC deberá estar en uno de los tres modos que admiten cristal (LP, XT o HS). La conexión se  muestra en la siguiente figura:

Oscilador interno de 4Mhz.- En los PIC’s que poseen este modo de oscilación, (modo INTRC) el PIC usa un arreglo RC interno que genera una frecuencia de 4Mhz con un rango de error calibrable de ± 1.5%. Para calibrar el error de oscilación se usan los bits CAL3, CAL2 , CAL1 Y CAL0 del registro OSCCAL. Calibración del oscilador interno.- El fabricante ha colocado un valor de calibración para estos bits en la última dirección de la memoria de programa. Este dato ha sido guardado en la forma de una instrucción RETLW XX. Si no se quiere perder este valor al borrar el PIC (en versiones EPROM con ventana) primero se deberá leer y copiar. Es una buena idea escribirlo en el empaquetado antes de borrar la memoria).

 Características generales del PIC16F877

La siguiente es una lista de las características que comparte el PIC16F877 con los dispositivos más cercanos de su familia:
 

 CPU:

- Tecnología RISC

- Sólo 35 instrucciones que aprender

- Todas las instrucciones se ejecutan en un ciclo de reloj, excepto los saltos que requieren dos

- Frecuencia de operación de 0 a 20 MHz (200 nseg de ciclo de instrucción)

- Opciones de selección del oscilador  Memoria:

- Hasta 8k x 14 bits de memoria Flash de programa

- Hasta 368 bytes de memoria de datos (RAM)

- Hasta 256 bytes de memoria de datos EEPROM

- Lectura/escritura de la CPU a la memoria flash de programa

- Protección programable de código

- Stack de hardware de 8 niveles

Reset e interrupciones:

- Hasta 14 fuentes de interrupción

- Reset de encendido (POR)

- Timer de encendido (PWRT)

- Timer de arranque del oscilador (OST)

- Sistema de vigilancia Watchdog timer.

Otros:

- Modo SLEEP de bajo consumo de energía

- Programación y depuración serie “In-Circuit” (ICSP) a través de dos patitas

- Rango de voltaje de operación de 2.0 a 5.5 volts

- Alta disipación de corriente de la fuente: 25mA

- Rangos de temperatura: Comercial, Industrial y Extendido

- Bajo consumo de potencia: o Menos de 0.6mA a 3V, 4 Mhz o 20 μA a 3V, 32 Khz o menos de 1μA corriente de standby (modo SLEEP).
Diagrama de Bloques del PIC16F877

En la siguiente figura se muestra a manera de bloques la organización interna del PIC16F877, Se muestra también junto a este diagrama su diagrama de patitas, para tener una visión conjunta del interior y exterior del Chip.
 Descripción de la CPU

La CPU es la responsable de la interpretación y ejecución de la información (instrucciones) guardada en la memoria de programa. Muchas de estas instrucciones operan sobre la memoria de datos. Para operar sobre la memoria de datos además, si se van a realizar operaciones lógicas o aritméticas, requieren usar la Unidad de Lógica y Aritmética (ALU). La ALU controla los bits de estado (Registro STATUS), los bits de este registro se alteran dependiendo del resultado de algunas instrucciones.

Ciclo de instrucción

El registro Program Counter (PC) es gobernado por el ciclo de instrucción como se muestra en la siguiente figura. Cada ciclo de instrucción la CPU lee (ciclo Fetch) la instrucción guardada en la memoria de programa apuntada por PC y al mismo tiempo ejecuta la instrucción anterior, esto debido a una cola de instrucciones que le permite ejecutar una instrucción mientras lee la próxima:
 

Como puede verse, cada ciclo de instrucción (Tcy = 4Tosc) se compone a su vez de cuatro ciclos del oscilador (Tosc= 1/Fosc)). Cada ciclo Q provee la sincronización para los siguientes eventos:

Q1: Decodificación de la instrucción

Q2: Lectura del dato (si lo hay)

Q3: Procesa el dato

Q4: Escribe el dato

Debido a esto cada ciclo de instrucción consume 4 ciclos de reloj, de manera que si la frecuencia de oscilación es Fosc, Tcy será 4/Fosc.Registros de la CPU. Registro PC.

Registro de 13 bits que siempre apunta a la siguiente instrucción aRegistro de Instrucción.

 Registro de 14 bits. Todas las instrucciones se colocan en él para ser decodificadas por la CPU antes de ejecutarlas.

Registro W.- Registro de 8 bits que guarda resultados temporales de las operaciones realizadas por la ALU

Registro STATUS.- Registro de 8 bits, cada uno de sus bits (denominados Banderas) es un indicador de estado de la CPU o del resultado de la última operación como se indica en la siguiente figura:

Z.- Este bit se pone (=1) para indicar que el resultado de la última operación fue cero, de lo contrario se limpia (=0)

C.- Bit de acarreo/préstamo’ de la última operación aritmética (en el caso de préstamo (resta), el bit se invierte antes de guardarse)

DC.- Acarreo/

prestamo proveniente del cuarto bit menos significativo. Funciona igual que el bit C, pero para operaciones de 4 bits.

Las restas se realizan sumando el complemento a dos del segundo operando, por ejemplo, para los datos 4FH y 25H: ejecutarse. En la siguiente sección se dan mayores detalles en el manejo de este registro.

Conjunto de Instrucciones de Rango Medio En la siguiente tabla se resumen las 35 instrucciones que reconoce la CPU de los PIC de medio rango, incluyendo su mnemónico, tiempo de ejecución, código de máquina y afectación de banderas:
Descripción de algunas instrucciones.

Para obtener la descripción detallada de cada instrucción de la tabla anterior se deberá consultar la sección 29 del manual del fabricante (PICmicro Mid-Range MCU Reference Manual). A continuación sólo se ejemplificarán algunas instrucciones con el propósito de clarificar la operación que realizan.
 
En el siguiente ejemplo se ejemplifica el efecto de algunas instrucciones sobre el registro W, sobre el registro de propósito general 20h de memoria RAM.
Formato General de las Instrucciones.
Cada instrucción en lenguaje de máquina (binario) del PIC contiene un código de operación (opcode) el cual puede ser de 3 a 4 o 6 bits, dependiendo del tipo de instrucción.

A continuación se describe el formato para cada tipo de instrucción de los PIC de rango medio:


El bit d especifica el destino del resultado de la operación:

d = 0: destino W

d = 1: destino f

f = dirección de 7 bits del archivo de registros.Operaciones con el archivo de registros orientadas a bytes
Operaciones con el archivo de registros orientadas a bits
b : Especificación en tres bits del bit sobre el que se va a operar

f = dirección de 7 bits del archivo de registros.

Operaciones con literales y de control

Formato general:

k : Literal = Valor de un operando de 8 bits

Formato para CALL y GOTO:

k : Literal = Valor de un operando de 8 bits

 Organización de la memoria del PIC

Los PIC tienen dos tipos de memoria: Memoria de Datos y Memoria de programa, cada bloque con su propio bus: Bus de datos y Bus de programa; por lo cual cada bloque puede ser accesado durante un mismo ciclo de oscilación.

La Memoria de datos a su vez se divide en

- Memoria RAM de propósito general

- Archivo de Registros (Special Function Registers (SFR))

.- La Memoria de Programa

Los PIC de rango medio poseen un registro Contador del Programa (PC) de 13 bits, capaz de direccionar un espacio de 8K x 14, como todas la instrucciones son de 14 bits, esto significa un bloque de 8k instrucciones. El bloque total de 8K x 14 de memoria de programa está subdividido en 4 páginas de 2K x 14. En la siguiente figura se muestra esta organización.
 

Observación1: No todos los PIC tienen implementado todo el espacio de 8K de memoria de programa (Consultar las hojas de datos del PIC específico).
Observación2: El fabricante puede grabar datos de calibración en localidades de memoria de programa por lo que se deberán anotar en papel antes de borrar los dispositivos con ventana transparente.

Vector de Reset.- Cuando ocurre un reset el contenido del PC es forzado a cero, ésta es la dirección donde la ejecución del programa continuará después del reset, por ello se le llama “dirección del vector de reset”.

Vector de interrupción.- Cuando la CPU acepta una solicitud de interrupción ejecuta un salto a la dirección 0004h, por lo cual a ésta se le conoce como “dirección del vector de interrupción”. El programador deberá colocar en esta dirección la Rutina de Atención a la Interrupción (Interrupt Service Routine (ISR))., o bien un salto al inicio de ella.

El registro PCLATH no es modificado en esta circunstancia, por lo cual habrá que tener cuidado al manipular el registro PC (saltos y llamadas a subrutina) dentro de la Rutina de Atención a la Interrupción Manejo del Contador del Programa (PC)

El registro contador del programa (PC) especifica la dirección de la instrucción que la CPU buscará (fetch) para ejecutarla. El PC consta de 13 bits, separados en dos partes: como se muestra en la figura siguiente
alto es llamado registro PCH. Este último contiene los bits PC<12:8> y no se puede leer o escribir directamente Todas las actualizaciones al registro PCH deben ser hechas a través del registro PCLATH.

En la siguiente figura se ilustran las cuatro situaciones y las maneras correspondientes en que el PC puede ser actualizado.
Paginación

Para saltar entre una página y otra, los bits más significativos del PC deberán ser modificados. Debido a que las instrucciones GOTO y CALL sólo pueden direccionar un bloque de 2K (pues usan una dirección de 11 bits) deben existir otros dos bits que acompleten los 13 bits del PC para moverse sobre los 8K de memoria de programa.

Estos dos bits extra se encuentran en un SFR denominado PCLATH (Program Counter Latch High) en sus bits PCLATH<4:3>. Por esto antes de un GOTO o un CALL el usuario deberá asegurarse que estos bits apunten a la página deseada.

Si las instrucciones se ejecutan secuencialmente el PC cruza libremente los límites de página sin necesidad de que el usuario escriba en el PCLATH

Memoria de Stack

La memoria de stack es una area de memoria completamente separada de la memoria de datos y la memoria de programa. El stack consta de 8 niveles de 13 bits cada uno. Esta memoria es usada por la CPU para almacenar las direcciones de retorno de subrutinas. El apuntador de stack no es ni leíble ni escribible.

Cuando se ejecuta una instrucción CALL o es reconocida una interrupción el PC es guardado en el stack y el apuntador de stack es incrementado en 1 para apuntar a la siguiente posición vacía. A la inversa, cuando se ejecuta una instrucción RETURN, RETLW o RETFIE el contenido de la posición actual del stack es colocado en el PC y el apuntador de stack es decrementado en 1.

􀂾 Nota 1: PCLATH no se modifica en ninguna de estas operaciones

􀂾 Nota 2: Cuando el apuntador de stack ya está en la posición 8 y se ejecuta otro CALL se reinicia a la posición 1 sobrescribiendo en dicha posición. No existe ningún indicador que avise de esta situación. Así que el usuario deberá llevar el control para que esto no ocurra.

 La Memoria de Datos

La memoria de datos consta de dos áreas mezcladas y destinadas a funciones distintas:

• Registros de Propósito Especial (SFR)

• Registro de Propósito General (GPR)

Los SFR son localidades asociadas específicamente a los diferentes periféricos y funciones de configuración del PIC y tienen un nombre específico asociado con su función. Mientras que los GPR son memoria RAM de uso general. Bancos de memoria

Toda la memoria de datos está organizada en 4 bancos numerados 0, 1, 2 y 3.

Para seleccionar un banco se debe hacer uso de los bits del registro STATUS<7:5> denominados IRP, RP1 y RP0. Hay dos maneras de acceder a la memoria de datos: Direccionamiento directo e indirecto. La selección de bancos se basa en la siguiente tabla
Cada banco consta de 128 bytes (de 00h a 7Fh). En las posiciones más bajas de cada banco se encuentran los SFR, y arriba de éstos se encuentran los GPR. Toda la memoria de datos está implementada en Ram estática.

Direccionamiento Directo

Para acceder una posición de memoria mediante direccionamiento directo, la CPU simplemente usa la dirección indicada en los 7 bits menos significativos del código de operación y la selección de banco de los bits RP1:RP0 como se ilustra en la siguiente figura.
Direccionamiento indirecto

Este modo de direccionamiento permite acceder una localidad de memoria de datos usando una dirección de memoria variable a diferencia del direccionamiento directo, en que la dirección es fija. Esto puede ser útil para el manejo de tablas de datos.

El registro INDF.- En la figura anterior se muestra la manera en que esto se realiza. Para hacer posible el direccionamiento indirecto se debe usar el registro

INDF. Cualquier instrucción que haga un acceso al registro INDF en realidad accesa a la dirección apuntada por el registro FSR (File Select Register).

La selección de banco en el caso de direccionamiento indirecto se realiza mediante los bits IRP (STATUS<7>) y el bit 7 del registro FSR, como se muestra en la figura.

El registro INDF mismo al leerse de manera indirecta (con FSR=0) producirá un cero. Y al escribirse de manera indirecta no es afectado.

A continuación se muestra un ejemplo del uso de este direccionamiento para limpiar las localidades RAM 20h a 2Fh.
En el siguiente ejemplo se muestra la manera como se switchea mediante instrucciones dentro del programa de un banco a otro
El Archivo de Registros

Aunque el archivo de registros en RAM puede variar de un PIC a otro, la familia del PIC16F87x coincide casi en su totalidad. En la siguiente figura se muestra a detalle el mapa de este archivo de registros y su organización en los cuatro bancos que ya se describieron.
 
Cada uno de los registros de propósito especial, está asociado a un dispositivo interno del μcc. En el siguiente capítulo se tratará con detalle el uso de cada uno de estos dispositivos y de los registros asociados a él.
 
Informacion obtenida de : http://www.bairesrobotics.com.ar/data/pic16f877-guia%20detallada%20parte2.pdf

viernes, 13 de agosto de 2010

Descripcion del microprocesador Z80

Descripcion del microprocesador Z80.

DESCRIPCION GENERAL
Los registros internos contienen 208 bits de memoria lectura/escritura que son accesibles por el
programador. Estos registros incluyen 2 sets de 6 registros de propósito general, los cuales
Podrían ser usados individualmente como registros de 8 bits o como pares de registros de 16
bits.




Además tiene dos sets de registros acumulador y de bandera. Un grupo de instrucciones de
intercambio que hacen que el registro principal o alternativo sean accesibles al programador. El
set alternativo permite operaciones en modo foreground- background o podría ser reservado
para respuesta muy rápida de interrupciones.

El Z80 además contiene un Stack Pointer, contador de programas, 2 registros índices, un
registro de refresco (contador), y un registro de interrupciones.
La CPU es fácil de incorporar en un sistema, puesto que requiere una simple fuente de energía
de 5 volt.

Registros
Los registros constituyen una especie de pequeña memoria interna al microprocesador. El Z-80 tiene registros de 8 y 16 bits, si bien los de 8 bits se pueden agrupar de 2 en 2 para formar uno de 16 bits. Todas las operaciones que realiza el Z-80 se hacen entre números contenidos en los registros, o bien, entre un registro y una posición de memoria; por eso se dice que el Z-80 es un microprocesador orientado hacia los registros. La posibilidad de agrupar dos registros de 8 bits para formar uno de 16, permite al Z-80 realizar operaciones de 16 bits a pesar de ser un microprocesador de 8 bits.
El Z-80 tiene, en total, 18 registros de 8 bits y 4 registros de 16 bits. Algunos son de uso general y otros tienen asignadas funciones específicas.
Como se ve, los registros cumplen en Código Máquina una función similar a la de las variables en Basic. La configuración de registros del Z-80 se muestra .

Registros del Z-80.

FAMILIA DEL MICROPROCESADOR Z – 80
Zilog tiene diseñado cinco componentes que proporcionan un vasto soporte para el
Microprocesador Z – 80. Estos son:
• PIO (Paralled Input / Output), opera en ambos modos de transferencia: de datos I / O
(con hand shake), y en el modo bit (sin hand shake).
El PIO podría ser configurado como interfaz con dispositivos periféricos paralelos
standard como impresoras y teclados.
• CTC (Counter / Timer Circuit).
• DMA (Controlador de acceso directo a memoria), proporciona una puerta bidireccional
para operaciones de transferencia de datos y tiene la facultad de terminar la trayectoria
de datos como resultado de un acuerdo preestablecido.
• SIO (Serial Input / Output Controller), ofrece dos canales, capaces de operar en una
variedad de modos programables, para ambos es síncrona y asíncrona la comunicación,
incluyendo Bi – Sync y SDLC.
• DART (Dual Asynchonous Receiver / Trasmitter), dispotivo que provee comunicación
serie asíncrona a bajo costo. Tiene dos canales y una interface de control de modem
Completa.


Registros alternativos
El Z-80 tiene dos grupos de 8 registros de 8 bits cada uno, que pueden ser usados de forma alternativa mediante una instrucción de intercambio de contenidos. Cada uno de estos grupos lleva un acumulador, un indicador de estado y 6 registros de uso general.
ACUMULADOR (Acumulador "A"):
El Acumulador recibe los resultados de todas las operaciones aritméticas y lógicas que realiza en microprocesador que es, de hecho, el registro más usado del Z-80. Existen dos acumuladores, uno en cada grupo de registros alternativos (ver FIGURA 2) que se denominan respectivamente A y A'.
REGISTRO DE ESTADO (Flags "F"):
El registro de estado indica la ocurrencia de determinadas condiciones, tales como: paridad, cero, signo, acarreo, desbordamiento, que se producen tras una operación aritmética o lógica y que serán de gran utilidad en los saltos condicionales.
En la figura se puede ver la disposición de los distintos indicadores dentro del registro de estado.

Indicadores de estado en el registro "F".
Existen dos registros de estado, uno en cada grupo de registros alternativos, se denominan respectivamente F y F'.
REGISTROS DE USO GENERAL ("B", "C", "D", "E", "H", "L"):
Cada grupo de registros alternativos tiene 6 registros de uso general que se denominan respectivamente B, C, D, E, H, L y B', C', D', E', H', y L'. Pueden agruparse de dos en dos para formar los registros BC, DE, HL y BC', DE' y HL'. Una instrucción de intercambio de contenidos, permite seleccionar entre parejas de registros de uno u otro grupo.
Su aplicación es de uso general, si bien, algunos tienen funciones específicas asignadas en determinadas instrucciones, por ejemplo "HL" actúa como acumulador en las operaciones aritméticas de 16 bits, "B" actúa como contador en los bucles de iteración (instrucción DJNZ) y finalmente, en las transferencias de bloques, "HL" indica el origen, "DE" el destino y "BC" el número de bytes a transferir.
En el Sistema Operativo del Spectrum, el registro "BC" actúa como un puente de comunicación con el Basic, ya que cada vez que ejecutamos la función USR, lo que obtenemos como resultado es, precisamente, el contenido del registro "BC" en el momento de retornar, lo que nos permitirá pasar datos con facilidad desde Código Máquina a Basic.
Unidad Aritmética-Lógica
Otro componente fundamental del microprocesador es la ALU o Unidad Aritmética-Lógica que es la encargada de realizar todas las operaciones en el interior del microprocesador. Las operaciones que puede realizar son:


El desplazamiento consiste en una rotación, bit a bit, de un registro o una posición de memoria, puede incluir el indicador de acarreo del registro F. El efecto de rotar a la izquierda es el de multiplicar el número por 2, y el de rotarlo a la derecha es el de dividirlo por 2.
La comparación consiste en cotejar el acumulador con otro número y alterar los indicadores del registro F de acuerdo con el resultado de la comparación, permaneciendo inalterado el contenido del acumulador.
Probar un bit consiste en ver si es "uno" o "cero" y anotar el resultado en el indicador de cero del registro F.
Incrementar es sumar "1", decrementar es restar "1".
La suma y la resta pueden ser con o sin acarreo.
El ajuste decimal consiste en transformar el número Hexa contenido en el acumulador y comprendido entre "00" y "FF", en un número decimal codificado en binario (BCD) comprendido entre "00" y "99".
Registro de instrucciones
El registro de instrucciones no es accesible por el programador, se carga durante la lectura de una instrucción, con el contenido de la posición de memoria direccionada por el "PC", y retiene la instrucción hasta que es decodificada por el microprocesador.
Buses
Para comunicarse con la memoria y los periféricos, el Z-80 utiliza una serie de líneas eléctricas denominadas BUSES. Cada una de estas líneas se corresponde con una patilla del chip Z-80. Existen tres buses:
Bus de direcciones de 16 bits formado por 16 líneas eléctricas denominadas A0-A15.
Bus de datos de 8 bits, formado por 8 líneas eléctricas denominadas D0-D7.
Bus de control de 13 bits formado por 13 líneas eléctricas denominadas: M1,MREQ,IORQ,RD,WR,RFSH,HALT,WAIT,INT,NMI,RESET,BUSRQ y BUSAK.
Las tres patillas restantes hasta las 40 del chip son: la entrada de la señal de "reloj" (3,500,000 impulsos por segundo), la entrada de alimentación eléctrica (+5 voltios) y la conexión común a MASA.
Se dice que una entrada o salida está a nivel alto ("1") cuando su tensión con respecto a MASA es de +5V. Y se dice que está a nivel bajo ("0") cuando su tensión con respecto a MASA es de 0V.
Señales eléctricas del Z-80:

Configuración de patillas del Z-80.

Palabra de datos del Z-80
Como hemos visto anteriormente, el Z-80 es un microprocesador de 8 bits, esto quiere decir que cada vez que se accede a la memoria, lee un octeto completo, que puede ser un código de operación o un dato.
Un octeto puede almacenar 256 números distintos (2 elevado a 8) pero el Z-80 tiene más de 256 instrucciones diferentes, por lo que algunos códigos de operación ocupan más de un byte. Por otro lado, en un gran número de instrucciones, el operando se ensambla como uno o varios bytes que siguen al código de operación. En la figura se pueden ver los distintos formatos de instrucción del Z-80.


Formatos de instrucción del Z-80.



Ciclos o tiempos
Para realizar las operaciones secuencialmente, el Z-80 necesita sincronizar todas sus señales internas y externas y disponer, por tanto, de un patrón de tiempo. Es lo que se denomina: Reloj del microprocesador.
El reloj del microprocesador está constituido por un oscilador electrónico controlado por un cristal de cuarzo, que entrega tres millones y medio de impulsos por segundo (3.5 MHz). Estos impulsos se introducen en el Z-80 a través de la patilla 6 denominada "RELOJ", y el microprocesador utiliza un número determinado de estos impulsos para cada operación.
La primera versión del Z-80 no aceptaba señales de reloj superiores a 2.5 MHz.


 
Cronograma de un ciclo típico de instrucción.


Instrucciones del Z-80
El Z-80 puede ejecutar un gran número de instrucciones, podemos ordenarlas en los siguientes grupos:
CARGA E INTERCAMBIO
Permiten desplazar datos entre registros, o entre estos y posiciones de memoria. También se puede intercambiar el contenido de dos registros, o el de dos grupos alternativos.
ARITMETICAS Y LOGICAS
Permiten realizar operaciones aritméticas o lógicas entre el acumulador y un registro o posición de memoria. Los resultados se almacenan en el acumulador, y los indicadores del registro «F» se ponen a «1» o a «0» en función del resultado de la operación.
BUSQUEDA Y TRANSFERENCIA DE BLOQUES
Se trata de las más poderosas instrucciones del Z-80, es posible transferir todo un bloque de memoria con una sola instrucción; también es posible examinar todo un bloque de memoria para buscar un determinado dato de un byte.
ROTACION Y DESPLAZAMIENTO
Permiten la rotación bit a bit del dato almacenado en un registro o una posición de memoria, las rotaciones pueden incluir el indicador de acarreo del registro «F».
MANIPULACION DE BITS
Permiten tratar de forma independiente cada bit de un registro o una posición de memoria, es posible poner un bit a «1», ponerlo a «0» o examinar si es «1» o «0».
SALTO LLAMADA Y RETORNO
Permite alterar la secuencia normar del programa para saltar a otro lugar de la memoria o ejecutar una subrutina. También es posible retornar desde una subrutina al punto donde se la llamó.
ENTRADA Y SALIDA
Permiten leer y escribir datos en los ports de entrada/salida, con lo cual se comunica el ordenador con el mundo exterior.
CONTROL CPU
Se utilizan para controlar el propio funcionamiento del microprocesador, inhibir o habilitar interrupciones, cambiar el modo de interrupción, detener el funcionamiento del microprocesador, etc.

                                  http://www.speccy.org/curso-cm/contenido/cap3.html
        




Tarea#2
Diferentes tipos de sensores y sus caracteristicas principales.

El sensor, en forma general se define como un dispositivo capaz de detectar diferentes tipos de materiales o sea recibe una señal o estímulo y responde a este con una señal eléctrica de salida, además, consta de algún elemento sensible a una magnitud física —como por ejemplo la intensidad o color de la luz, temperatura, presión, magnetismo, humedad— y debe ser capaz, por su propias características, o por medio de dispositivos intermedios, de transformar esa magnitud física en un cambio eléctrico que se pueda alimentar en un circuito que la utilice directamente, o sino en una etapa previa que la condicione (amplificando, filtrando, etc.), para que finalmente se la pueda utilizar para el control

El transductor se define como un dispositivo que transforma una variable física (fuerza, presión, temperatura, velocidad, etc.) en otra.
Un sensor se entiende como transductor en la medida que se tenga una variable a medir y se requiera de una señal eléctrica de salida. Además estos pueden ser de tipo invasivo, esto se refiere a que el sensor debe estar en contacto directo para detectar o transformar la variable física y de de tipo no invasivo, esto es que el sensor puede detectar o transformar la variable física sin necesidad de estar en contacto directo.

Los transductores analógicos proporcionan una señal analógica continua, por ejemplo voltaje o corriente eléctrica. Esta señal puede ser tomada como el valor de la variable física que se mide.




El sensor analógico debe poseer ciertas propiedades indispensables como: calibración, rango de funcionamiento, confiabilidad, velocidad de respuesta, exactitud precisión, sensibilidad, linealidad entre otros. Esto con el fin de que el control de la variable que se mida, se lleve a cabo de la mejor manera y en el menor tiempo posible.


Clasificación de los sensores
Los sensores pueden ser clasificados por diferentes criterios:
Funcionamiento
a) Sensores de deflexión: en este tipo de sensores, la deformación de un material se emplea para medir una magnitud física.

b) Sensores de comparación: como su nombre lo indica se basa en la comparación de fuerzas aplicadas, este funcionamiento se puede observar en las balanzas, donde el operario coloca un cuerpo de igual masa al que se mide, con el objetivo de encontrar un balance entre ambos pesos que permita mantener el equilibrio.

Según su aporte de energía
Se pueden dividir en moduladores (activos) y generadores (pasivos); los modulares se caracterizan por utilizar una fuente de energía auxiliar para alimentar la señal de salida, mientras que en los pasivos la energía de la señal de salida es suministrada por la entrada.

Según el tipo de salida
Esta clasificación se hace según el tipo de señal a ser medida, la cual puede ser analógica o digital.

Según el orden
     También pueden ser clasificados según el orden: primero, segundo o de orden superior. Esta clasificación se hace según el número de elementos almacenadores de energía independientes que contenga el sensor.

Según el tipo de variable física a medir
     La clasificación subdivide a los sensores de acuerdo a la magnitud física por medir, tal es el caso de caudal, temperatura, presión, nivel, entre otros.

Clasificación de los sensores



Ejemplos:
Sensores de luz
o Elementos sensibles
 LDRs o Fotorresistores (resistores variables por la incidencia de la luz)
 Fotoceldas o celdas fotovoltaicas
 Fotodiodos
 Fototransistores
 CCD
 Cámaras de vídeo

o Módulos integrados
 Reflectivo
 De ranura

Sensores de presión y fuerza
o Elementos sensibles
 Microinterruptores
 Sensores de presión
 Sensores de fuerza
o Sensores
 Sensores de contacto (sandwich, bigotes, antenas)
 Piel robótica

• Sensores de sonido
o Elementos sensibles
 Micrófonos
 Captadores piezoeléctricos
o Módulos integrados
 Rangers (medidores de distancia) ultrasónicos

• Sensores para medición de distancia
o Módulos integrados
 Medidores de distancia ultrasónicos
 Medidores de distancia por haz infrarrojo

Sensores de gravedad (posición)
o Acelerómetros, sensores de vibración
o Sensores pendulares (Inclinómetros)
o Contactos de mercurio
o Giróscopos

Sensores de temperatura
o Termistores
o RTDs (Termorresistencias)
o Termopares, Termocuplas
o Diodos
o Circuitos integrados
o Pirosensores (a distancia)

Sensores de humedad
o Sensores capacitivos
o Sensores resistivos
o Módulos integrados

Sensores de velocidad
o Tacómetros
o Codificadores (encoders)

Sensores de magnetismo
o Efecto Hall
o Brújulas electrónicas
o Interruptores magnéticos

Sensores de ubicación geográfica
o GPS
o Receptores de radiobalizas

• Sensores de proximidad
o Sensores capacitivos
o Sensores inductivos



Sensores de posición lineal o angular
     Los transductores de posición se utilizan para determinar la posición de un objeto con respecto a un punto de referencia. Las posiciones pueden ser lineales o angulares. Los medidores de ángulos o transductores de desplazamiento angular son poco utilizados en los sistemas de control, fundamentalmente se utilizan cuando se desea medir la variación producida en el eje rotor de un sistema motor-reductor.

Sensores de Pequeños desplazamientos o deformaciones
     Los sensores de desplazamiento, son un tipo de sensores usados para medir longitud, los cuales tienen la precisión para medir desde unos cuantos micrómetros hasta unos metros. Las principales ventajas de este tipo de transductores son su sensibilidad y lo poco que son afectados por la humedad.

Sensores de velocidad
     La medición de velocidad angular tiene gran relevancia en las aplicaciones industriales. Esto se realiza mediante los tacómetros, que pueden ser mecánicos o eléctricos.

     Tacómetros mecánicos: El más sencillo es el contador de revoluciones. Consiste en un tornillo sin fin que se acopla al eje cuya velocidad se quiere medir. Tacómetros eléctricos:

a) Dinamos Tacométricas (tacodinamo), estos proporcionan
Una señal de corriente continúa.
b) Alternadores tacométricas (taco alternador), estos proporcionan una señal alterna senoidal con frecuencia y amplitud proporcionales a la velocidad de rotación.

Sensores de fuerza
     El método que tiene por objeto la medida de las deformaciones superficiales de los cuerpos, se denomina Extensometría. Las galgas extensiométricas, es un procedimiento ampliamente utilizado para convertir las deformaciones en señales eléctricas proporcionales.

Existen varios tipos de galgas extensiométricas, dentro de las cuales se pueden mencionar:
a) Galgas extensiométricas semiconductoras: el elemento sensible es una banda de cristal semiconductor con cierto grado de contaminación.

b) Galgas extensiométricas de resistencia eléctrica: cuando se sujeta una longitud de cable dentro de su límite de tensión, ocasiona que se incremente la longitud, que se de un decremento del diámetro, y que cambie su resistencia eléctrica, entonces el material conductor es unido a un elemento elástico en condiciones de deformación, y es posible medir el cambio en la resistencia y con esto se puede calcular la fuerza.

Sensores de nivel
     A partir de la medida de nivel de un líquido en un tanque conociendo su geometría, dimensiones y densidad, puede determinarse el volumen y la masa. Algunos transductores eléctricos de nivel son:
Medidor de nivel de flotador magnético: este consiste en un flotador que se desliza a lo largo de un tubo guía colocado verticalmente en el interior del tanque, este flotador posee un imán, en su movimiento, arrastra a otro más pequeño que está dentro del tubo guía. El segundo imán está sujeto a un cable el cual mueve un índice en una escala exterior.
Medidor de nivel de tipo desplazamiento: presenta un flotador parcialmente
sumergido en el líquido y conectado mediante un brazo a un tubo de torsión unido rígidamente al tanque.

     Medidor de presión diferencial: tiene un diafragma en contacto con el líquido del tanque, que mide la presión hidrostática en un punto del fondo de un tanque, en un tanque abierto la presión hidrostática es proporciona a la altura del líquido en ese punto y a su peso específico.
P = Hγ
P = presión1
H = altura1
γ = peso específico del líquido1
Medidor de nivel conductivo: posee uno o varios electrodos y un relé electrónico que es excitado cuando el líquido moja dichos electrodos.

Sensores de presión
     Esta medida es común en procesos que involucran gases y líquidos, los instrumentos de medición se clasifican en tres grupos: mecánicos, electromecánicos, y electrónicos.

Sensores de flujo y caudal
Para medir el caudal, se puede realizar de varias formas según sea el tipo de fluido, de presión deseada, el control que se requiera y el tipo de caudal.

Los medidores volumétricos, son un gran grupo de sensores que realizan las mediciones con elementos que dan lugar a una presión diferencial al paso del fluido.
Dentro de los sensores más destacados de este tipo están:
a) La placa-orificio o diafragma: este es un sistema que consta de una placa
perforada, en donde se da una restricción de flujo de área constante, la presión
va a depender del flujo que atraviesa la restricción. Utilizando un sensor de
presión, se obtiene la presión diferencial la cual es proporcional a la raíz
cuadrada del caudal. con esto se obtiene la medida del caudal.
b) La tobera: esta se ubica en la tubería con dos tomas, presenta una toma anterior y una posterior, este sistema permite caudales 60 % mayores a los que permite la placa-orificio, cuando ambas están en el mismo servicio.
c) El tubo pitot: este instrumento mide la presión dinámica, o sea mide la
diferencia de la presión total y la estática. Es sensible a variaciones de velocidad en la sección trasversal del tubo, y se emplea generalmente para medir grandes caudales.
d) Medidor de turbina: Los medidores de turbina consisten en un rotor que gira al paso del fluido con una velocidad directamente proporcional al caudal.

El tubo annubar: Este es la innovación del tubo pitot, el cual consta de un tubo que mide la presión total, este tubo esta dispuesto a lo largo de un diámetro transversal, presenta una serie de orificios, todos de diámetros iguales que captan el caudal, otro tubo en su interior se encarga de promediar las presiones obtenidas. Posterior a se encuentra el tubo de presión estática con un orificio en el centro. se le conoce también con el nombre de tubo pitot de canal cerrado.

f) El rotámetro: consiste en un medidor de caudal de área variable, en el cual un flotador cambia de posición dentro de un tubo, el cambio de posición es proporcional al flujo del fluido.

Sensores de temperatura
     La obtención de medias de temperatura, es de las más frecuentes y de mayor importancia en la automatización industrial, es por esto que se vuelve cada vez más importante tener una comprensión clara de las ventajas y desventajas de los distintos métodos de medida de esta variable, para lograr que sistema sea el óptimo.
     Dentro de los sensores empleados para la medida de la temperatura, están los basados en resistencias térmicas, básicamente son un enrollamiento de hilo muy fino del conductor entre capas de material aislante, estos son colocados dentro de distintos encapsulados no conductores como el vidrio o la cerámica.



Información obtenida de:
http://eie.ucr.ac.cr/uploads/file/proybach/pb_08_II/pb0811t.pdf
http://axxon.com.ar/rob/Sensores_general.htm

microcontroladores: Señales analógicas y digitales...

Microcontroladores: Señales analógicas y digitales.

     El mundo actual nos demanda constantemente estar a la vanguardia lo más posible en cuanto a tecnología se refiere, para no quedarnos estancados y saber cómo se nos puede facilitar de sobre manera nuestra vida cotidiana.

     Y para esto tenemos que tener un conocimiento mínimo sobre el funcionamiento de los aparatos y tecnologías que estamos utilizando actualmente o queremos utilizar a futuro, refiriéndome a conocimientos básicos a lo analógico y lo digital. Ya que dichos aparatos y dispositivos modernos requieren procesar la señales analógicas que reciben y convertirlas en señales digitales para poder funcionar, por dar un ejemplo sencillo y conocido mencionare las grabadoras y reproductoras de música en CDs ya que podría decirse que son unos de los equipos digitales más conocidos.

     Ya que el sonido, independientemente de que sea natural o artificial, posee intensidad, tono, timbre y frecuencia, lo cual los diferencia a unos de los otros y permite representarlos gráficamente como una onda senoidal, de amplitud y frecuencia variable, ya que la conversión digital – analógica, analógica - digital en electrónica, es un dispositivo que convierte una entrada digital la cual suele ser generalmente binaria, es decir valores en un rango de ceros y unos únicamente, a una señal analógica generalmente voltaje o carga eléctrica, Ya que en el mundo real las señales analógicas varían constantemente, pueden variar lentamente con factores que intervienen como la temperatura o la señal de audio, puesto que lo que ocurre con las señales analógicas es que suelen ser algo difíciles de manejar, guardar y después recobrar con exactitud. Y si esta información analógica se convierte a digital, se puede manejar con más facilidad, es decir que no representaría problema, ya que la información manipulada puede volver a tomar su valor analógico si se desea con un convertidor digital a analógico que tiene una tensión de referencia estable y fija como entrada, ya que hay que definir en un principio que tan exacta será la conversión entre la señal analógica y la digital, para lo cual se tendrá que definir la resolución que esta poseerá.

     Dicha resolución puede definirse de dos maneras, ya que en la primera se define el número máximo de bits de salida digital, cuyo dato nos permite determinar el número máximo de combinaciones en su salida digital. Este número máximo está dado por: 2n donde n es el número de bits.

     Aunque también la resolución suele entenderse como el voltaje necesario de la señal analógica, para lograr que en la salida de señal digital haya un cambio del bit menos significativo.
Y una forma simple para calcular la resolución se utiliza la siguiente fórmula: Resolución = VoFS / [2n - 1], en donde n es el número de bits del ADC, y VoFS representa el voltaje que hay que poner a la entrada del convertidor para obtener una conversión máxima en donde todas las salidas son uno.

     Ya que la salida analógica correspondiente a cada una de las combinaciones dependerá del voltaje de referencia que estemos usando, que a su vez dependerá del voltaje máximo que es posible tener a la salida analógica. Puesto que mientras más bits tenga el convertidor más exacta será la conversión, y si se tiene diferentes tipos de convertidor digital a analógico y todos ellos pueden tener una salida máxima de voltios, se puede ver que la resolución y exactitud de la salida analógica es mayor cuando más bits tenga.

     Ya que para convertir una señal analógica en digital, el primer paso consiste en realizar un muestreo (sampling) de ésta, o lo que es igual, tomar diferentes muestras de tensiones o voltajes en diferentes puntos de la onda senoidal, ya que la frecuencia a la que se realiza el muestreo se denomina razón, tasa o también frecuencia de muestreo y se mide en kilohertz (kHz).

     Para realizar esa tarea, el conversor ADC (Analog-to-Digital Converter - Conversor Analógico Digital) tiene que efectuar los siguientes procesos como el Muestreo de la señal analógica, la cuantización de la propia señal, y la codificación del resultado de la cubanización, en código binario.

     Una vez realizado el muestreo, el siguiente paso es la cuantización de la señal analógica. Para esta parte del proceso los valores continuos de la sinusoide se convierten en series de valores numéricos decimales discretos correspondientes a los diferentes niveles o variaciones de voltajes que contiene la señal analógica original.

     Por tanto, la cuantización representa el componente de muestreo de las variaciones de valores de tensiones o voltajes tomados en diferentes puntos de la onda sinusoidal, que permite medirlos y asignarles sus correspondientes valores en el sistema numérico decimal, antes de convertir esos valores en sistema numérico binario.

     Después de realizada la cuantización, los valores de las tomas de voltajes se representan numéricamente por medio de códigos y estándares previamente establecidos. Lo más común es codificar la señal digital en código numérico binario.

     Ya que la codificación permite asignarle valores numéricos binarios equivalentes a los valores de tensiones o voltajes que conforman la señal eléctrica analógica original.


     En cuanto a la conversión digital - analógica con sus respectivas siglas (CDA), es un dispositivo electrónico que sirve para convertir una secuencia de ceros y unos, es decir código binario, en una tensión de valor proporcional al número que representa esa señal digital, ya que un convertidor Digital/Analógico (DAC), es un elemento que recibe información de entrada digital, en forma de una palabra de "n" bits y la transforma a señal analógica, cada una de las combinaciones binarias de entrada es convertida en niveles lógicos de tensión de salida

     Un conversor digital-analógico o DAC es un dispositivo para convertir datos digitales en señales de corriente o de tensión analógica.

     Así que estos suelen ser utilizados constantemente en los reproductores de discos compactos, en los reproductores de sonido y de cintas de vídeo digitales, y en los equipos de procesamiento de señales digitales de sonido y vídeo.

     Así que como podemos ver lo analógico y digital se presentan constantemente en nuestra vida diaria más de lo que nosotros pudiésemos imaginar como en el ejemplo del sonido que por lo que podemos ver se encuentra de una u otra forma en nuestro entorno, y el tipo de señales que este involucra además de los dispositivos que solemos utilizar frecuentemente, y el lenguaje que utilizan el cual generalmente suele ser el binario, y el tipo de procesos que estos atraviesan para llegar a ser lo que finalmente se pretende de ellos o se espera, es decir que cumplan con la función para lo que fueron diseñados. Además con los estándares de calidad que estos requieran.