Open victoriaatria opened 1 year ago
¡Hola Victoria!
El problema de tu ejemplo es que no estás considerando que los valores del display se muestran en base hexadecimal. En este caso:
$15_{16} = 1 \times 16^1 + 5 \times 16^0 = 1 \times 16 + 5 \times 1 = 16 + 5 = 21$
Por lo tanto, lo que te muestra la placa es correcto. Para que estés más segura aún, ve lo que pasa si A = 255 y B = 170. Lo que debería mostrarte la placa es: "FFAA".
Ahora, si te preguntas por qué funciona así, te recuerdo que en la primera clase vimos cómo poder representar rápidamente un número binario en hexadecimal y vice-versa, con eso en mente, es natural que agrupemos de a 4 bits los números para cada display, ya que con 4 bits podemos representar cualquier dígito hexadecimal.
Espero que quede más claro ahora. :)
¡Un abrazo!
Gracias!!
Tengo una duda acerca de los displays. Hasta el momento, al puerto "dis" en la CPU le estamos entregando los 8 bits menos significativos del Reg A + los 8 bits menos significativos del Reg B. Es decir, una señal de 16 bits. Lo que no me queda claro es cómo el display interpreta estos 16 bits.
Por ejemplo, si queremos mostrar los números 21 y 0 de Reg A y Reg B, respectivamente, en binario esto se traduce a: 00010101 y 00000000 Según lo que entiendo, el display_controller va a hacer lo siguiente: 0001 => display A 0101 => display B 0000 => display C 0000 => display D Es decir, va a separar los bits en grupos de 4. Sin embargo, esto en el display mostraría: 1 5 0 0, y no 2 1 0 0 como se esperaría. Cómo "sabe" cómo interpretar los valores que le damos al display? Cómo sabría que quiero que use los primeros dos displays para representar los 8 bits de más a la izquierda, y que no los tome como cuatro números separados?