This is a circuit I made in an attempt to validate that the 20-pin microcontroller is an AT89Cx051. and the correct LED will turn on based on how much ram the chip has.
While the first step is successful, the second step causes a reset. I don't know if I should blame the chip itself or if there is something I can do to improve my circuit, especially with the clock. I only need to advance the clock by one. Now I did add a 47nF capacitor across the clock button to try to avoid debouncing.
Here's How the circuit runs
- The NORM button (top left) is pressed so RST = 5V. This works.
The first byte of data is verified through the 1st decoder (IC1E) so 1E_DETECT is zero. This works.
I hold clock button down to make the clock a low to high transistion. Sad truth is contents of P1 do not change until I let go of the button (making XTAL high to low transistion which is contrary to what the datasheet indicates).
Upon releasing the button, the circuit resets because the MSB at port 1 is a logic high.
Based on all datasheets I read for AT89C2051, AT89C4051, and AT89C1051, They (Atmel) indicate the data at 1st address (which is always detected correctly by my circuit) is 1Eh. Then they indicate the 2nd byte is 11h, 21h, or 41h depending on how much ram the chip has. Nowhere in their documents does it state that the MSB of P1 is set when reading signature bytes.
So what's the best course of action I should take here?
Complain to the people I bought the IC's from that their chips don't work?
Add/change/remove capacitors and/or resistors?
And in case anyone wondered, All diodes are 1N4148, and resistors for LED's are 1K, and power is 5 VDC regulated. and the diodes arranged in groups of three are 3-input nor gates and I used diodes because it would have been impossible to create a single-sided PCB if I used the actual logic gate chips themselves.