…Rectangular area
4.3 Remote control
5.1.7 p/f EIT data content descriptors usage
En esta lección se plantean conceptos generales, que son útiles y necesarios para el entendimiento del funcionamiento interno del microprocesador y microcontrolador. Los temas tratados exploran y retoman conceptos y procedimientos claves en la programación de microprocesadores y microcontroladores.
Bases numéricas
Una base numérica está compuesta por una serie de símbolos que pueden dar sentido y significado a una cifra dentro de un sistema numérico, para la mayoría de las personas el sistema numérico con el que están familiarizados es el sistema numérico decimal. El sistema numérico decimal es un sistema posicional, compuesto por 10 símbolos o guarismos diferentes 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9, que definen la base numérica decimal (base 10), con la cual se puede representar cualquier número del sistema.
Base numérica decimal: la forma de interpretar los números decimales es a través de su posición o lugar que ocupa el digito en el número total, que se pueden relacionar con las denominaciones de unidades, decenas, centenas, etc. Desde un punto de vista analítico, el sistema decimal tiene 10 símbolos representativos (0,1,2,3,4,5,6,7,8,9), para representar símbolos como “12” se usa una combinación de los símbolos mencionados.
Cálculo posicional: El principio del cálculo posicional puede hacerse extensivo a los demás sistemas numéricos mediante la siguiente ecuación:
Donde n es la posición del número comenzando desde cero e incrementando con enteros positivos en la posición desde el punto decimal hacia la izquierda y con enteros negativos desde el punto decimal a la derecha, D es el número y B representa la base numérica de la cifra a convertir, en el caso decimal seria “10”. Ejemplo: El decimal “125” podría representarse con punto decimal así, “125.00” entonces tomando desde el punto decimal hacia la izquierda y comenzando desde cero, el número cinco (5) tendrá la posición cero (0), el numero dos (2) la posición uno (1) y finalmente el número uno(1) la posición (2), siguiendo lo establecido, la ecuación será:
∑ = 50 x100 + 21 x101 + 12 x102 = 5x1 + 2x10 + 1x100 = 5+20+100=125
Base numérica Binaria: La base numérica binaria es un sistema de numeración donde se utilizan dos guarismos identificados como cero (0) y uno (1), con los que se representa cualquier valor, estos guarismos son conocidos como dígitos binarios o bits. Esta base numérica es utilizada como mecanismo de representación de información en sistemas digitales electrónicos en los que se representan los dos estados con niveles diferenciados de voltaje o corriente, usualmente una tensión BAJA es representada por el bit o digito binario cero (0) y una tensión ALTA es representada por el bit o digito uno (1).
Ejemplo: son números binarios: 10010111.0112, 1010112, 0.10112.
Base numérica Hexadecimal: La base Hexadecimal (abreviado Hex) tiene 16 dígitos o guarismos que van del 0 al 9 y de la letra A hasta la F que representan los números del 10 al 15. Esta base numérica es ampliamente utilizada en el área de la informática, electrónica digital y ciencias de la computación, puesto que se utiliza el octeto o byte (conjunto de 8 bits o números binarios), como unidad básica de memoria, donde dos dígitos hexadecimales corresponden a exactamente ocho números binarios, es decir, una byte o un octeto. Entonces cuatro dígitos binarios equivalen a un número hexadecimal o un hexadecimal equivale a cuatro dígitos binarios.
Ejemplo: son números hexadecimales: A09F.0CB16, 1D3E9616, 0.A0D516.
El sistema Octal: El sistema octal también es utilizado en la representación de información y datos en el microprocesador, se compone de ocho dígitos o guarismos (0,1,2,3,4,5,6,7) los cuales siguen una regla similar a la de los
hexadecimales la cual establece que tres dígitos binarios equivalen a un dígito octal y un octal a tres binarios.
Ejemplo: son números Octales: 1346.2538, 64318, 0.2458.
Conversión entre distintas bases
En el aprendizaje del funcionamiento y programación de microprocesadores y microcontroladores, es importante desarrollar destreza en la conversión entre distintas bases numéricas, específicamente, en las siguientes.
Convertir un número decimal a binario: Existen dos maneras de convertir un número de decimal a binario. La primera es utilizar una tabla de equivalencias de binario a decimal siguiendo las potencias de 2 (dos). La segunda es válida para convertir de decimal a cualquier base numérica y consiste en dividir sucesivamente la parte entera del decimal entre la base a la cual se quiere convertir, tomando sus módulos (residuos) y el último resultado. La parte decimal del número se multiplica por la base y se toma el número entero como resultado parcial, la fracción que pueda quedar se multiplica nuevamente por la base.
Ejemplo: En la Figura 17. Se ilustra el procedimiento para convertir un número decimal a su equivalente binario, se ilustra el procedimiento de convertir el número 100,312510 a su equivalente binario, observe como se toma la parte entera 10010 y la parte decimal 0,312510, para desarrollar la conversión a binario utilizando dos procesos distintos. El subíndice indica la base actual del número, es decir, el número 100,3125 es base diez. Los dígitos son cada una de las cifras que componen un número en cualquier sistema numérico, para el sistema binario los dígitos binarios hacen referencia a las cifras individuales representadas por un “uno” o un “cero” que en conjunto forman un número binario.
La parte entera 10010 se convierte a binario mediante divisiones sucesivas por “2” (base binaria), cada residuo y último resultado es una cifra o digito binario, en conjunto forman el numero binario “1100100” que equivale al número decimal “100” o 10010. La parte decimal 0,312510, se convierte a binario mediante multiplicaciones sucesivas por “2” (base binaria), donde del resultado obtenido se toma y separa el número entero para tomar la parte decimal que se vuelve a multiplicar por “2” (base binaria), hasta lograr un numero entero o la cantidad se cifras de precisión requeridas por el usuario, de esta forma el número “0,3125”
equivale al binario “0,0101”. Entonces como resultado el número 100,312510 equivale al número 1100100,01012.
Figura 17. Conversión decimal-binario18
Convertir un binario a decimal: El sistema binario se basa únicamente en dos condiciones: encendido (1) o apagado (0), por lo tanto su base es 2, la fórmula ∑ es aplicable a la conversión de cualquier base a la base decimal cada posición de los dígitos binarios representa un valor particular de “2” elevado a la potencia “n”. Es importante tener claro que el digito ubicado más a la derecha es llamado digito menos significativo (LSB ó de menos valor posicional numérico) y el digito ubicado más a la derecha es el más significativo (MSB ó de más valor posicional numérico).
Ejemplo: Convertir el numero binario 1011012 a su equivalente decimal. Tomando la formula ∑ , se debe tener las siguientes consideraciones. “D” representa el número, “n” la posición del mismo y “B” la base numérica, en este caso “2”. Tomando la anterior ecuación y reemplazando tenemos:
∑ = 15x25 + 04x24 + 13x23 + 12x22 + 01x21 + 10x20
∑ = 1x32 + 0x16 + 1x8 + 1x4 + 0x2 + 1x1 = 32+0+8+4+0+1 = 4510 El numero 1011012 equivale a 4510
Ejemplo: Convertir el número binario 10010111.0112 (el subíndice “2” representa la base, en este caso binaria) a decimal. Colocar el número binario como 10010111.011, y asignar los números que identifican la posición de cada dígito, entonces se obtiene:
∑ = 17 x27 + 06 x26 + 05 x25 + 14 x24 + 03 x23 + 12 x21 + 11 x21 + 10 x20 +
0-1 x2-1 + 1-2 x2-2 + 1-3 x2-3
18
= 1x128 + 0x64 + 0x32 + 1x16 + 0x8 + 1x4 + 1x2 + 1x1 + 0x1/2 + 1x1/4 + 1x1/8 = 128 + 0 + 0 + 16 + 0 + 4 + 2 + 1 + 0 + 1/4 + 1/8 = 151.37510
Conversión entre binarios y hexadecimales: La conversión entre números binarios y hexadecimales, es sencilla notando que cuatro (4) dígitos binarios consecutivos equivalen a un hexadecimal y cada hexadecimal equivale a cuatro (4) binarios, esta agrupación de cuatro dígitos binarios se debe comenzar desde la posición menos significativa desde el punto separador de enteros y fracciones a la izquierda o a la derecha.
Ejemplo: Convertir el numero 11011111010.001111102 a su equivalente
hexadecimal. Siguiendo el procedimiento establecido se forman grupos de cuatro (4) dígitos binarios tomando del punto decimal a la izquierda para la parte entera y del punto decimal a la derecha para la fracción, se pueden agregar ceros para completar los grupos en los extremos en caso de ser necesario, en el presente ejemplo se agrega un cero “0” al grupo del extremo izquierdo y se sigue la conversión presentada en la Figura 18. Para obtener el resultado.
[0110][1111][1010].[0011][1110]2 6 F A . 3 E16
Figura 18. Tabla de Conversión entre números decimales, octales y hexadecimales19
El sistema Octal: La conversión entre el sistema binario y octal es similar al utilizado en la conversión entre binarios y hexadecimales, la Tabla 2. Abarca los primeros 7 números binarios, cada número está compuestos de 3 dígitos binarios y a su vez correspondiente a un digito en el sistema octal.
19
Tabla 2. Conversión entre binarios y octales.
Decimal Binario Octal
0 000 0 1 001 1 2 010 2 3 101 3 4 100 4 5 101 5 6 110 6 7 111 7
Ejemplo: Convertir el numero 11011111010.001111102 a su equivalente octal. Siguiendo el procedimiento establecido se forman grupos de tres (3) dígitos binarios tomando del punto decimal a la izquierda para la parte entera y del punto decimal a la derecha para la fracción, se pueden agregar ceros para completar los grupos en los extremos en caso de ser necesario, en el presente ejemplo se agrega un cero “0” al grupo del extremo izquierdo y el extremo derecho, se sigue
la conversión presentada en la Tabla 2 para obtener el resultado. [011][011][111][010].[001][111][100]2
3 3 7 2 . 1 7 4 8 Complementos en números binarios
Los complementos son utilizados en las computadoras digitales para simplificar la operación de sustracción y manipulación lógica. En todas las bases numéricas, donde “r” representa la base existen dos complementos, el complemento de “r” y el complemento de (r-1). Para la base decimal se tiene el complemento 10 y complemento 9. Para la base binaria se tiene el complemento 2 y complemento 1. Complemento r: Si se tiene un numero positivo “N” en la base “r” con una parte entera de “n” dígitos, el complemento “r” de “N” se define como .
Ejemplo: El complemento 10 de (2940)10 es 104 - 2940 = 10000 – 2940 = 7060. El complemento 10 de un número decimal puede obtenerse dejando todos los ceros menos significativos sin cambio, el primer digito no cero menos significativo se le resta 10 y a los siguientes dígitos más significativos se le resta 9.
Ejemplo: El complemento 2 de (100100)2 es 26 - 100100 = 1000000 - 100100 = 011100. El complemento 2 de un numero binario se forma dejando todos los ceros menos significativos sin cambio hasta el primer “1”, en los siguientes dígitos se cambian los “1” por “0” y “0” por “1”.
Complemento (r-1): Si se tiene un numero positivo “N” en la base “r” con una parte entera de “n” dígitos y una parte fraccionaria de “m” dígitos, el complemento “r-1” de “N” se define como .
Ejemplo: El complemento 9 de (2940)10 es 104 - 100 - 2940 = 10000 - 1 – 2940 = 7059. El complemento 9 de un número decimal puede obtenerse restando 9 a cada digito.
Ejemplo: El complemento 1 de (100100)2 es 26 - 20 - 100100 = 1000000 - 1 - 100100 = 11011. El complemento 1 de un número binario se forma cambiando los “1” por “0” y “0” por “1”.
Códigos binarios
En los sistemas electrónicos digitales se utilizan señales con dos valores distintos o señales binarias y elementos de circuitos con dos estados estables, existe una equivalencia directa entre las señales binarias, los elementos de circuito binario y el digito binario. Un “bit”, por definición es un dígito binario (0-cero o 1-uno). Los sistemas digitales además de representar y manipular números binarios, pueden representar cualquier elemento de información discreta mediante un código binario (conjunto de bits). Un número binario de “n” dígitos o bits, puede representar 2n elementos distintos.
Ejemplo: Si se tiene un grupo de cuatro elementos o cantidades distintas se puede representar mediante un código de 2 bits, a cada cantidad o elemento se le asigna una de las siguientes combinaciones de bits: 00, 01, 10 y 11.
Al proceso de asignar a cada cantidad o elemento un valor o representación en bits se le conoce como codificación binaria. Existen varios códigos binarios que se diseñan con características especiales que permiten el control de errores o facilitan operaciones lógicas o aritméticas, pero el ejercicio de elegir o generar una codificación para un proyecto en particular depende del profesional que diseña el sistema electrónico digital. En los siguientes párrafos se tratan algunos de los códigos más usuales.
Códigos decimales: Son códigos que permiten representar los diez dígitos decimales mediante una combinación de bits, son numerosos los códigos diferentes que se obtienen al ordenar cuatro o más bits en distintas combinaciones. Recordar que con cuatro bits puedo obtener 16 combinaciones distintas, porque 24 = 16. En la Tabla 3. Se presentan algunos de los códigos binarios para dígitos decimales utilizados en sistemas basados en microprocesadores y microcontroladores.
Código BCD: BCD proviene de las iniciales Binary-Coded Decimal o decimal codificado en binario. Es una asignación directa del equivalente en binario, si a cada uno de los dígitos binarios se le asignan respectivamente los pesos 8,4,2,1 se obtiene rápidamente la equivalencia independiente para cada digito decimal. Ejemplo: Para representar el número 12510 en código BCD recurrimos a la Tabla
3 y se obtiene 0001 0010 0101. Observe que no se coloca subíndice debido a que
el número no es un equivalente binario, en este caso es una codificación binaria, también puede observar que para facilidad de comprensión en la operación realizada se ha dejado espacios entre cada grupo de cuatro bits. Para el primer digito decimal “1” la codificación BCD es “0001”, utilizando los pesos asignados se comprueba que, 0001=0x8+0x4+0x2+1x1=1.
No debe confundirse la conversión y la codificación, son dos operaciones diferentes. 12510 equivale al binario 11111012 mientras que al codificarlo se tiene que 12510 codificado en BCD es 0001 0010 0101.
Tabla 3. Códigos binarios para dígitos decimales
Decimal BCD Exceso 3 84-2-1 Gray o
Reflejado 2421 Biquinario 5043210 0 0000 0011 0000 0000 0000 0100001 1 0001 0100 0111 0001 0001 0100010 2 0010 0101 0110 0011 0010 0100100 3 0011 0110 0101 0010 0011 0101000 4 0100 0111 0100 0110 0100 0110000 5 0101 1000 1011 0111 1011 1000001 6 0110 1001 1010 0101 1100 1000010 7 0111 1010 1001 0100 1101 1000100 8 1000 1011 1000 1100 1110 1001000 9 1001 1100 1111 1101 1111 1010000
Código Exceso-3: Es un código sin pesos (sin valor posicional), puesto que su valor se obtiene del código BCD sumando el valor “310” o “0112”. Es un código autocomplementario, es decir el complemento a 9 se obtiene fácilmente cambiando los números “1” por “0” y los “0” por “1”.
Ejemplo: Para comprobar el funcionamiento del código Exeso-3, se toma el número 25710, su complemento 9 es 74210. Al codificar el número 25710 a código exceso-3 se obtiene, 0101 1000 1010, al hallar el complemento 1 del anterior código binario resulta 1010 0111 0101 y al decodificarlo siguiendo el código Exceso-3 se tiene, 1010=7, 0111=4 y 0101=2 que corresponde a 74210 que como se comprueba es el complemento 9 de 25710.
Código 84-2-1: Este código tiene los pesos o valores posicionales 8,4,-2,-1. Es un código autocomplementario, es decir, se obtiene fácilmente el complemento a 9. Ejemplo: El digito 310 se codifica en código 84-2-1 como 0101 puesto que 0101=0x8+1x4+0x(-2)+1x(-1)=0+4+0-1=3. Si se cambia los “1” por “0” y los “0” por “1”, se obtiene 1010, decodificando en código 84-2-1 es, 610. El complemento 9 de 310 es 610.
Código 2421: Este código tiene los pesos o valores posicionales 2,4,2,1. También es un código autocomplementario, es decir, se obtiene fácilmente el complemento a 9.
Ejemplo: El digito 710 se codifica en código 2421 como 1101 puesto que 1101=1x2+1x4+0x2+1x1=2+4+0+1=7. Al hallar el complemento “1” de la anterior codificación se tiene 0010, que al decodificarlo en código 2421 es, 210. El complemento 9 de 710 es 210.
Código Biquinario: Fue uno de los códigos utilizados en los primeros computadores como el Colossus, es un código de siete bits con pesos 5,0,4,3,2,1,0, también tiene propiedades de detección de error, puesto que cada digito decimal se compone de cinco dígitos binarios “0” y dos dígitos binarios “1”, en una transmisión de datos el receptor puede verificar cuantos “1” y “0” hay en cada codificación y determinar si cumple o no con la característica del código biquinario.
Código reflejado: En este código los valores consecutivos difieren solamente en uno de los dígitos binarios. En un comienzo los circuitos lógicos digitales utilizaban contactores o switches electromagnéticos, que generaban picos de ruido con el
cambio de varios bits, el código se diseñó para prevenir estas señales espurias, por lo que el código facilita la corrección de errores. El código reflejado, también llamado código Gray es utilizado para codificar la información analógica representada por cambios continuos en la posición del eje, en mecanismos de giro, para el diseño de mapas de Karnaugh, utilizados en el diseño de circuitos combinacionales y secuenciales, ocasionalmente se utiliza en algoritmos genéticos. En la Tabla 4. Se observa el código reflejado de 4 bits. Para codificar un valor binario a código gray se realiza una compuerta XOR con el mismo número binario aplicando un desplazamiento a la izquierda.
Ejemplo: Se tiene el número binario 1001 equivalente al decimal 9, al aplicar la XOR al mismo número con un desplazamiento a la izquierda se obtiene,
, es decir, el código gray del número binario 1001 es 1101.
Ejemplo: Para codificar el decimal 310 utilizando el código reflejado o Gray con cuatro bits, se procede haciendo la conversión a binario, 310 = 00112 haciendo la operación:
, por tanto 310 codificado a Gray es “0010”.
Tabla 4. Código reflejado o Gray de 4 bits
Código Gray Equivalente Decimal
0000 0 0001 1 0011 2 0010 3 0110 4 0111 5 0101 6 0100 7 1100 8 1101 9 1111 10 1110 11 1010 12 1011 13 1001 14 1000 15
Códigos Alfanuméricos
Es un código binario para un grupo de elementos compuestos de diez dígitos decimales, las 26 letras del alfabeto y símbolos especiales como &,$,(,), entre otros.
Tabla 5. Tabla ASCII y tabla ASCII extendida20
20
El llamado código interno utiliza 6 bits para su codificación, para este código alfanumérico se requiere codificar un mínimo de 10+26=36 elementos distintos, por tanto se requieren un mínimo de seis bits que pueden representar 26 = 64 elementos distintos (con 5 bits no es suficiente 25 = 32). El código ASCII (American Standard Code for Infromation Interchange), mostrado en la Tabla 5., es un código alfanumérico de 7 bits más un bit de paridad para el control de errores, este código tiene una representación amplia de caracteres incluyendo los diez dígitos decimales, las letras del alfabeto (mayúsculas y minúsculas) y caracteres especiales de control para la transmisión de información digital (espacio, (,+,$,*,),-,/, ?), no debe confundirse con los códigos generados por teclado al oprimir ALT + numero, tampoco con los caracteres definidos bajo el estándar ISO-8859-1 que utiliza 8 bits y posee en su rango inicial la codificación ASCII. El código EBCDIC (Extended BCD Interchange Code), es un código de 8 bits con el que se representa caracteres alfanuméricos, caracteres de control y signos de puntuación, existen varias versiones del código EBCDIC.
Ejemplo: Es fácil encontrar en internet e incluso en librerías tablas que relacionan el código ASCII, junto con la combinación de teclado “Alt + „numero‟” para obtener caracteres especiales como la “Ñ” cuando el teclado no la tiene. Como ejemplos de código ASCII tenemos: “$”(ASCII = 0100100); “+” (ASCII = 0101011); “6” (ASCII = 0110110); “U” (ASCII = 1010101).
Operaciones Aritméticas binarias
Los microprocesadores y microcontroladores utilizan los números binarios para representar, manipular y procesar información, estos dispositivos requieren realizar operaciones aritmética binarias, por lo que la mayoría tienen instrucciones para realizar la suma o resta de números binarios y los más avanzados y complejos tienen instrucciones para multiplicar y dividir. Los siguientes ejemplos muestran los principios que rigen las operaciones aritméticas con números binarios.
Ejemplo: Sumar los números 11110010 + 10101011. Reglas:
Ejemplo: Restar los números 11110010 - 10101011. Reglas:
Ejemplo: Multiplicar los números 1010 + 101. Reglas:
Sustracción utilizando complementos: Dentro de la CPU la ALU implementa circuitos digitales del tipo medio sumador y sumador completo, para realizar las operaciones de suma, resta, multiplicación y división. Utilizando los complementos se puede realizar la resta de una forma más eficiente, rápida y con circuitos combinacionales digitales simples. El producto es una serie de sumas y la división es una serie de restas.
Ejemplo: Restar 8343 – 235 utilizando complemento 10. Minuendo = 8343, Sustraendo = 0235, complemento 10 del sustraendo = 9765. ←
, como hay acarreo no se modifica el resultado. Respuesta 8108. En caso de no presentarse acarreo se debe hallar el complemento 10 al resultado y anteponer signo negativo.
Ejemplo: Restar 100111 – 1010 utilizando complemento 2. Minuendo = 100111, Sustraendo = 001010, complemento 2 del sustraendo = 110110.
←
, como hay acarreo no se modifica el resultado. Respuesta 011101. En caso de no presentarse acarreo se debe hallar el complemento 2 al resultado y anteponer signo negativo.
Ejemplo: Restar 3967 – 0284 utilizando complemento 9. Minuendo = 3967, Sustraendo = 0284, complemento 9 del sustraendo = 9715. ←
, como hay acarreo se suma 1 al resultado. Respuesta 3683. En caso de no presentarse acarreo se debe hallar el complemento 9 al resultado y anteponer signo negativo.
Ejemplo: Restar 110001 – 111101 utilizando complemento 1. Minuendo = 110001, Sustraendo = 111101, complemento 1 del sustraendo = 000010. ←
resultado y se antepone el signo negativo. Respuesta - 001100. En caso de presentarse acarreo se debe sumar 1 al resultado.
Representación de números negativos: Para representar números negativos en la mayoría de computadoras modernas utilizando el sistema numérico binario, se realiza mediante la técnica denominada complemento a dos, esta técnica se define como el número obtenido después de convertir todos los ceros a unos y todos los unos a ceros, al resultado se le suma uno.
Ejemplo: Representar el numero decimal 12510 utilizando el complemento 2. 12510 Equivale a 1111101 complemento a 2 0000010 + 0000001 = 0000011.
Bits, Nibbles, Bytes y Palabras
Un bit es la unidad más pequeña de información, pero en su forma más simple un bit representa un digito binario, es decir, un “uno” (1) o un “cero” (0), físicamente los bits requieren de un espacio o celda donde almacenar una cantidad de energía definida en dos estados estables que representen los dígitos binarios, esta energía es llamada voltaje, que es la energía necesaria para mover una carga eléctrica (electrón) de un punto a otro. La Unidad Central de Proceso o CPU, se encarga de procesar la información que se encuentra en grupos de celdas denominadas registros, cada registro se compone de una o varias celdas la cuales almacenan una entidad llamada “bit”, en un comienzo las celdas de almacenamiento se