Al analizar el diseño de la ALU para mi microprocesador primero construí un prototipo usando KTechLab. Para ello, tuve construir primero los componentes de los circuitos integrados TTL que utilice. En este post pongo mi librería para tenerlos a la mano y por si pueden ser útiles para alguien.
Advertencia:
He notado que el programa KTechlab tiene problemas en proyectos con muchos circuitos integrados, por lo que se recomienda usar muy pocos al mismo tiempo.
No sé porque siempre me ha fascinado ver estos aparatitos que tienen leds en la noche y con la luz apagada. ¿Será que el brillo les da un carácter misterioso y frío como el de un viaje en una nave espacial o simplemente me recuerdan esas noches tranquilas junto al arbolito de navidad? Quien sabe, pero podría verlo por horas.

Para mí, es una vista hermosa
Por fin mi "microprocesador" corrió su primer programa que realiza operaciones aritméticas y logicas para incluso sacar datos al puerto de salida. También ya realiza el ciclo sin fin que evita que el programa pierda control y que rota a la derecha los bits del acumulador hasta que desaparecen totalmente después de unos ciclos de reloj. Ya siento que es misión cumplida
.
Post relacionados:
- Proyecto: Construyendo un CPU con circuitos básicos (Parte 1)
- Asi voy con mi CPU
- Asi voy con mi CPU II
Después de jugar con impracticos pero divertidos CPUs demuchos circuitos, ahora es el momento de hacer lo contrario: moverse al mundo de los microcontroladores de un sólo chip. Uno muy interesante por su precio ( alrededor de 40 pesos ), facilidad de encontrar en México y versatilidad es el PIC16F84A. Se pueden hacer proyectos muy interesantes e incluso hay sitios donde enseñan como generar video compuesto o programarlo en lenguaje C y después de conocerlo, podemos pasar a mejores chips como el PIC16F628 o el PIC16F886 que tienen mejor hardware, son compatibles y ¡más baratos!.
Pero empecemos con lo más sencillo.
Hola mundo
Quizás la forma más sencilla de probarlo es configurar al puerto A como de entrada y al puerto B como de salida para enviar el estado del puerto A al puerto B. El programa en ensamblador sería el siguiente:
LIST P=16C84
;P=16f84a
INCLUDE <p16c84.inc>
;INCLUDE <p16f84a.inc>
ORG 0
configurar
bsf STATUS, RP0 ; Cambiamos al banco 1
clrf TRISB ; Todo el puerto B se configura como salida
movlw b'00011111' ; Las líneas del Puerto A se configuran como entradas
movwf TRISA
bcf STATUS, RP0 ; Regresamos al banco 0
principal
loop
movf PORTA,W
movwf PORTB
goto loop
END
El diagrama esquemático de las conexiones sería el siguiente:

¡No olvidar poner resistencias de 330 Ohms a los leds!
Para probarlo se puede usar el programa de simulación KTechLab, pero compilando los fuentes indicando que es un pic16c84.
Una vez que funciona en el simulador, se puede construir en un protoboard:
Al programar el pic, es necesario configurar que el tipo de Oscilador es de cristal (XT) y al capturar en la memoria es importante no olvidar que las instrucciones son de 14 bits; por lo que ocupan 2 bytes donde el primer byte es la parte de menor peso.