Forget PIC, AVR and ARM with this powerful microcontroller :-)
This circuit is based on the CMOS chip MC14500. This chip is an ICU
(industrial control unit) built from Motorola few years ago, it is a 1
bit processor that can do some logical operations. This chip is now
discontinued but can be found on ebay and other sites.
My circuit probably doesn't have an application in real world, but can
be useful for didactic purposes, to learn how a simple microprocessor
works.
This is the pinout and internal structure:
The circuit
The circuit diagram is very simple and easy to build.
There aren't
memories, eproms or programming/debugging adapters, and every operation
is done manually using some switches. The clock frequency depends from your fingers speed :-)
The MC14500 has a set of 16 instructions, so I use four dip-switch
(SW1) to select the istruction to execute.
The MC14500 can work at 1Mhz, but in my circuit a clock pulse is
generated manually pressing the SW2 key. A simple monostable based on
NOR ports IC2C and IC2D is used to debounce the switch, to have a
single and clean clock pulse on pin 13 of MC14500. The LED1 connected
to pin 14 with the NOR port IC1C is used to show the clock pulse.
Switch SW4 is used to apply a level 0 or 1 to the Data input of the
microprocessor (pin 3) and the LED2 show the state of this pin. The NOR
port IC1D is used as buffer to drive the LED. This pin is a
bidirectional I/O port, so R9 resistor protect it if the switch SW4 is
closed when it is set
as output.
There are two other leds LED3 and LED4, connected to pin 2 (RR result
register) and pin 15 (WRITE) with two NPN transistors. LED3 show the
status of internal RR register, and LED4 show the WRITE pulse after a
STORE instruction.
Capacitor C2 is used to to reset the microcontroller when power is
applied, and there is another switch (SW3) to reset it manually.
The circuit can be powered from 3-4 AA batteries (4.5V or 6V) or from a
power supply. It can also works at 9 or 12Vcc.
After a reset or power-up the first operation is to enable input and
output with instructions IEN (1010) and OEN (1011) with DATA set to 1 (SW4 closed). Every
instruction must be followed by a clock pulse with SW2.
An example to do a simple AND operation :
1 - 0001 LD load first bit
(position of SW4)
2 - 0011 AND logical AND with
second bit (position of SW4)
3 - 1000 STO store result to
Data Pin (SW4 should be left open)
For a NAND operation the 3rd instruciont changes to STOC :
1 - 0001 LD load first bit
(position of SW4)
2 - 0011 AND logical AND with
second bit (position of SW4)
3 - 1001 STOC store complement result to Data
Pin (SW4 should be left open)
Another example for a 3 bit OR operation :
1 - 0001 LD load first bit
(position of SW4)
2 - 0101 OR logical OR with second bit
(position of SW4)
3 - 0101 OR logical OR with third bit
(position of SW4)
4 - 1000 STO store result to
Data Pin (SW4 should be left open)
Example for EXOR (exclusive OR) :
1 - 0001 LD
load first bit (position of SW4)
2 - 0111 XNOR logical exclusive NOR with
second bit (position of SW4)
3 - 1001 STOC store complement result
to Data Pin (SW4 should be left open)
A basic NOT function :
1 - 0001 LD load bit
(position of SW4)
2 - 1001 STOC store complement result to
Data Pin (SW4 should be left open)
The same result can be done with this program :
1 - 0010 LDC load complement bit
(position of SW4)
2 - 1000 STO store result to
Data Pin (SW4 should be left open)
These are very simple examples, but the operations can be combined to
do a more complicated logic.