Buenas:
Programar en binario quiero decir tener una protoboard concircuitos integrados. Programar en binario es tener una lista primero en un cuaderno a lápiz, muchas tablas de la verdad de lo que queremos hacer.
Por ejemplo:
https://eduardopayan93.files.wordpre...10/8.png?w=640
Antes tenemos una ALU configuraro en aritmética para programarlo en binario, sumar en binario. Para sumar 00000001 + 00010000 = 00010001.
Montábamos circuitos así, con una protoboard.
Ver imagen.
No hay ni un monitor ni discos duros ni tarjetas Micro-SD, prohibido usarlos ya que estamos en lo primero de lo más básico para poder entender bien la electrónica en el mundo binario, más que informática. Los profesores nos deja claro que la madre de la informática es la electrónica y la madre de la electrónica es la electricidad.
Si te fijas en l aprotoboard de la imagen de arriba que puse, colocando cables a 5V o en 0 V que quiere decir 1 y 0 en binario, sobre todo en las entradas de datos.
Colocábamos una dirección en el multiplexor para introducir datos en la memoria RAM en binario y luego seleccionábamos otra dirección. Con un contador y un temporizador bucábamos la secuencia correcta de todo el mapa de memoria RAM hasta coincidir el número almacenado con otro para compararlo y el temporizador se detiene. Tontería que hacíamos pero costaba hacerlas, de novato, claro.
No usamos microcontroladores, solo una ALU para cálculas de aritmética y más cosas, todo a mano, todo. Cunado vez un Altair 8800 o el IMSAI 8080, los conmutadores están bien puesto en la caja pero la mecánica es la misma.
Este tipo de programación se sigue aprendiendo en España para entender a fondo estas cosas, así aprendes a diseñar circuitos y resolver problemas en la electrónica, cosa que muchos informáticos creen saber más que los electrónicos en este campo y no es así, depende de las enseñanzas adquiridad por los centros o de la perosna de forma autodidacta sin estudiso que sabe más que yo. Y los hay.
¿Cómo programaba en binario?
Quitar y poner cables de datos.
En cuanto a C#, es poner binarios, lo transforma las intrucciones en ensamblador y después compila a hex.
La tabla de instrucciones del PIC16F84A la saco de aquí.
Como puedes ver, introduzco en el C# todo en binario.
00001000 1 000 0110
Luego se transforma en ensamblador como vez abajo.
MOVF PORTB,
F
Y lo muestro en una LCD.
Lo de C# lo hago como un emulador para probar su funcionamiento, luego se introduces la misma programación en código de Arduino y muestra los datos introducidos en binario y transformado en ensamblador en una LCD.
Mi idea es programar un microcontrolador
PIC16F84A. Puedes elegir un microprocesador si quieres como un Z80, 8085, 8086 pero he elegido un microcontrodor PIC de nivel medio porque tiene pocas instrucciones y no me pego media vida en terminar el proyecto.
Los 0 y 1 se introduces en estos interruptores como indica abajo 00001000 1 000 0110 en un Altair.
Primero en un papel y a mano escribes este código binario y te mostrará en pantalla algo como esto.
Código ensmablador:
Código:
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
Flag
ENDC
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 ; El programa comienza en la dirección 0.
Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
clrf PORTB ; Las líneas del Puerto B se configuran como salida.
movlw b'00011111' ; Las 5 líneas del Puerto A se configuran como entrada.
movwf PORTA
bcf STATUS,RP0 ; Acceso al Banco 0.
bcf PORTB,0
Principal
btfsc PORTA,0 ; ¿Pulsador presionado?, ¿(Pulsador)=0?
goto Principal ; No. Vuelve a leerlo.
; call Retardo_20ms ; Espera que se estabilicen los niveles de tensión.
btfsc PORTA,0 ; Comprueba si es un rebote.
goto Principal ; Era rebote y sale fuera.
goto Led
EsperaDejePulsar
btfss PORTA,0 ; ¿Dejó de pulsar?, ¿(Pulsador)=1?
goto EsperaDejePulsar ; No. Espere que deje de pulsar.
goto Principal
Led
btfss Flag,0
goto Led_OFF
goto Led_ON
Led_OFF
bcf PORTB,0
movlw .1
movwf Flag
goto Principal
Led_ON
bsf PORTB,0
clrf Flag
goto Principal
INCLUDE <RETARDOS.INC>
END
Cosa que hoy en día se programa directamente en el compilador MPLAB X.
A la hora de compilar te crea un archivo hex como puedes ver abajo y es lo que tienes que grabar dentro del PIC para que funcione. En este caso lo que hace es encender y apagar un Led con el mismo pulsador.
Archivo compilado:
Código:
:020000040000FA
:10000000831686011F308500831206100518062806
:10001000051806280E28051C0B2806280C1C11287C
:100020001528061001308C00062806148C010628BD
:1000300000000000000000000000000008000000B8
:10004000A4302B28000040302B281F302B28000024
:100050000E302B2805308D008D0B2C280800C83061
:100060003E2864303E2832303E2814303E280A3084
:100070003E2805303E2802303E2801308E00F930FF
:100080008D0000008D0B41288E0B3F280800C830E2
:1000900052286430522832305228143052280A3004
:1000A000522805308F0064308E00F9308D0000003A
:0E00B0008D0B57288E0B55288F0B53280800F8
:02400E00F13F80
:00000001FF
Saber más de Intel Hex.
https://es.wikipedia.org/wiki/Intel_HEX
Prgunta corta, respuesta larga.