8080 Microprocessor Kit
Wichit Sirichote, firstname.lastname@example.org
Build a Microprocessor training kit with the 8080 Microprocessor.
I got a very nice suggestion from ebay buyer that "your next design must be 8080". This brought me to design the 8080 microprocessor kit in the Year 2016. The age of CPU chip is more than 40 Years.
This design is three chips system with 8080 CPU, 8224 Oscillator and 8228 bus controller. I used the same platform of my design for microprocessor trainer kit. The board is square PCB with approx. 170mm x 170mm dimensions. The 8080 CPU needs three power supplies, +5V, +12V and -5V. The old day design simply uses linear power supply with multiple turns of a low frequency transformer. However I got the idea to use switching regulators to provide +12V and -5V. For +5V, I used LM2940 low dropout linear regulator. For +12V, I used DC-to-DC converter MC34063. And for -5V I used Intersil 7660. These voltage regulators are placed on the PCB, so the DC input will need only single jack. The kit can be powered with AC adapter +7.5VDC.
I also got suggestion to add the HALT LED as well. So I added the latch, 74HC74 for capturing CPU status. Bit D3 is HALT status. Now if we test the code 76 (HALT instruction), when CPU halted, the HALT LED will be lit. The 74HC74 has two data latch, so I use the rest for indicating the interrupt enable bit. When we enable interrupt, this LED will be ready for interrupt indicator.
The 8288 bus controller provides RST 7 instruction code strobing when we pull INTA pin to +12V with a 1k resistor. This feature makes simple testing for external interrupt. No need additional hardware.
The software UART is also included for connecting the 2400 bit/s terminal, and 10ms tick generator for time trigger experiments.
Build the 8080 computer kit and play it is a very enjoyable time.
Figure 1: Intel 8080 Microprocessor kit
A new design for keypad is shown in Figure 2. Left hand indicators are HALT and INTE Led.
Figure 2: New design hex keypad, clear and nice with classic color PCB.
Hardware descriptions: U1 is NMOS 8080 microprocessor. It needs three power supplies, +5V (80mA), +12V(70mA) and -5V(1mA).
The CPU clock is generated by 8224 chip. The Xtal frequency is 18.432MHz. CPU clock is 18.432MHz/9 = 2.048000MHz.
The system bus controller, U5 is 8228 chip. Icc is approx. 190mA. The 8228 provides data bus buffering and interface signals. INTA is tied to 1k pull-up resistor, to provide RTS7 instruction strobing. Student can test interrupt without the need of external device to supply the RTS instructions on the data bus.
U1, U5 and U7 form three chips 8080 microcomputer system. All are put on the single chip 8085 CPU that used in my design, MTK85, 8085 trainer kit..
U3 is 32kB EPROM, 27C256. The address space for EPROM is decoded at 0x0000-0x7FFF. U2 is 32kB static RAM, 62256. The RAM space is located at 0x8000-0xFFFF. Total memory is 64kB, full of memory space.
U6, memory and I/O spaces decoder chip is made with GAL16V8D. It provides chip selected signals for memory and I/O chips.
The power supply is made with U10, LM2940 for +5V, U8 KA34063 DC-to-DC converter for +12V and U9 ICL7660 for -5V. This design will use only one DC source from AC adapter. The AC adapter with +7.5V 1A is recommended.
U27A, 1/2 of 74HC74 is used to latch the CPU status signal. It captured HALT status from bit D3 of the data bus. U27B is for INTE bit indicator LED.
U16, the 20-pin 89C2051 microcontroller chip produces 10ms tick. SW1 selects between 10ms tick or manual INTR button.
U15, 74HC541 is 8-bit input port (PORT0). Four bits, PA0-PA3 are input signals of the row keypad. PA6 and PA7 are function keys. PA5 pin is RxD pin of 2400 bit/s software controlled UART.
U13, 74HC573 is 8-bit output port (PORT2). The 8-bit output drives the 7-segment LED directly. No current limit resistor. U14 (PORT1) drives 6-digit common cathode pin. The brightness is controlled by PWM. PC7 is speaker output for beep signal and PC6 is TxD pin for 2400 bit/s UART.
U4, 74HC573 is 8-bit output port for 8-bit binary number display. D9 lifts the forward biasing for proper brightness. JR1 is 16-pin socket for text LCD interface. U17, MAX232 converts TTL level to RS232 level.
Q1, KIA7042 is reset chip for power brownout.
Figure 3: Hardware schematic.
PLD equations : U6 is a PLD chip used to select the memory and I/O ports. The address and I/O spaceS can be programmed using PLD equations. The source file of PLD equations is shown in Figure 4. The PLD compiler is ATMELWinCupl. The output file, JEDEC will be used to program the PLD chip by a PLD programmer.
Name 8080Kit ;
PartNo 16V8 ;
Date 12/1/2014 ;
Revision 01 ;
Designer Engineer ;
Company Fangkhao ;
Assembly None ;
/* *************** INPUT PINS *********************/
PIN 2 = A15;
PIN 3 = INTR;
PIN 4 = A14;
PIN 5 = A5;
PIN 6 = A6;
PIN 7 = A7;
PIN 8 = IORD;
PIN 9 = IOWR;
PIN 1 = A13;
PIN 11 = A12;
/* *************** OUTPUT PINS *********************/
PIN 12 = RAMCE;
PIN 13 = ROMCE;
PIN 14 = INT;
PIN 15 = GPIO1;
PIN 16 = LCD_E;
PIN 17 = PORT0;
PIN 18 = PORT1;
PIN 19 = PORT2;
/******************* EQUATIONS *********************/
ROMCE = A15; // 0000-7FFF
RAMCE = !A15; // 8000-FFFF
!GPIO1 = A7 # A6 # A5 # IOWR; // 00
PORT0 = A7 # A6 # !A5 # IORD; // 20
!PORT1 = A7 # !A6 # A5 # IOWR; // 40
!PORT2 = A7 # !A6 # !A5 # IOWR; // 60
!LCD_E = (IOWR & IORD) # !A7 # A6 # A5; // 80-83
INT = !INTR;
Figure 4: PLD equations for 8080 kit.
10ms System Tick: U16, 8051 compatible microcontroller is used to generate 10ms tick. The circuit runs with TTL clock from 8224 chip. The frequency is 18.432MHz/9. The tick signal is output at P3.7. TP1 is 50% duty cycle with frequency of tick/2. D13 is for indicating tick signal. Calibrating the correct tick frequency can be done by testing the pulse frequency at TP1.
Figure 5: 10ms tick generator built with AT89C2051 microcontroller.
SW1 is selector for 10ms tick or SW2 INTR button. The INTR signal is active low. It will be inverterd with PLD to provide active high signal at INT pin of the 8080 CPU.
The source code was written in assembly code. The sample below produces a fixed frequency 100Hz or 10ms tick.
; 10ms systemTick TIMER CHIP FOR 8080 KIT$mod52dseg at 30hTICK: DS 1cseg at 0 jmp mainorg 00bhtimer0_vector:JMP timer0_SERVICE org 100h;-----initialize data-----------------------------main: mov r7,#0 djnz r7,$mov sp,#60h ; set stack pointer to 60hMOV P1,#0FFH MOV TICK,#0mov tmod,#1 ; set timer mode 1 setb et0 ; enable timer0 interrupt setb ea ; enable all interrupt setb tr0 ; run timer0SJMP $; 8080 TTL clock is 18.432MHz/9=2048000 Hz ; Timer 1 clock is 2048000Hz/12 = 170666Hz. ; For 100Hz interrupt, counting must be 1707. ; Load value is 65536-1707=63829 = F955TIMER0_SERVICE: PUSH ACC ORL TH0,#0F9H ORL TL0,#055H ; COMUPTED VALUE IS F955H CLR P3.7 ; produce interrupt trigger to 8080 NOP SETB P3.7CPL P1.6 ; CHECK TICK FREQUENCYINC TICKMOV A,TICK CJNE A,#100,SKIP MOV TICK,#0 Clr P1.7 MOV R7,#30 DJNZ R7,$ SETB P1.7SKIP:READ_MORE: POP ACC RETIend Figure 5: Source code listing of 10ms tick generator.
-CPU: NEC 8080 Microprocessor, 2.048MHz (18.432MHz/9)
-Bus controller: 8228 with RST 7 strobing for interrupt vector
-Memory: 32kB RAM, 32kB EPROM
-Memory and I/O Decoder chip: Programmable Logic Device GAL16V8D
-Display: high brightness 6-digit 7-segment LED
-Keyboard: 28 keys
-RS232 port: software controlled UART 2400 bit/s 8n1
-Debugging LED: 8-bit GPIO1 LED at location 00H
-Tick: 10ms tick produced by 89C2051 for time trigger experiment
-Text LCD interface: direct CPU bus interface text LCD
-Brownout reset: KIA7042 reset chip for power brownout reset
- HALT and INTE bit indicator LEDs.
-+12V and -5V power supply: MC34063 DC-to-DC converter and Intersil ICL7660.
- Power consumption: 500mA @7.5V AC adapter
-Expansion header: 40-pin header
Monitor commands features:
-Enter 8080 instructions using hex code directly
-Test code running with break point
-User registers for status capturing, direct status flag display
-Simple terminal connecting with 2400 bit/s RS232 port.
The kit is connected to terminal by hitting any key on the terminal automatically. The help commands is displayed with key "?". Most commands are compatible with MTK85 kit.
Figure 6: With Big letter LCD.
Sample code for tetsing interrupt with RST 7 strobing by 8228 bus controller.0002 8038 .ORG 8038H 0003 8038 C3 04 81 JMP SERVICE_RST7 0004 803B 0005 8100 .ORG 8100H 0006 8100 0007 8100 FB MAIN EI 0008 8101 C3 01 81 JMP $ 0009 8104 0010 8104 0011 8104 SERVICE_RST7 0012 8104 0013 8104 3C INR A 0014 8105 D3 00 OUT 0 0015 8107 FB EI 0016 8108 C9 RET 0017 8109 0018 8109 .END 0019 8109 0020 8109 tasm: Number of errors = 0
The interrupt vector for RST 7 instruction is located at 0038H in ROM, the kit has relocated it to 8038 in RAM. User can enter the service routine for RST 7 then.
To test this code, enter the instruction hex code to memory 8100 to 8108 and the code for jump instruction at 8038.
Set SW1 to INTR. Press key HOME, then GO. The INTE led will be lit waiting for INTR signal. Try pressing the INTR key. What is happening at the GPIO1 LED?
Now if we set SW1 to 10ms tick signal, try run it again. We will see the binary counting with 100Hz rate.
U1 NEC D8080AP, 8-bit Microprocessor, gold plated pins ceramic package
U2 HM62256B, 32kB SRAM
U3 27C256, 32kB EPROM
U5 AM8228, BUS controller
U4,U13,U14 74HC573, 8-bit data latch
U6 GAL16V8B, PLD
U7 AM8224, oscillator
U8 MC34063A, DC-to-DC converter for +12V generation
U9 ICL7660, voltage converter for -5V generation
U10 LM2940/TO, low drop out +5V regulator
U12,U11 LTC-4727JR, 7-segment LED
U15 74HC541, 8-bit tri-state buffer
U16 AT89C2051, microcontroller
U17 MAX232A, rs232 converter
U27 74HC74, dual data latch for HALT and INTE indicators.
D3 LED 3mm
D15 TVS15V DO-214AC
D18 HALT LED (RED)
D19 INTE LED (Yellow)
Q1 KIA7042, voltage detector
Q2 BC557, PNP transistor
Resistors (all resistors are 1/8W +/-5%)
R14,R11 10k RESISTOR SIP 9
C20,C6 10uF 10V
C11 10uF 16V
C12 1000uF 16V
JP1 HEADER 20X2
JR1 CONN RECT 16
J1 DC input
SW1 ESP switch
S2,S3,S4,S5,S6,S7,S8,S9, SW PUSHBUTTON
TP3 TEST POINT
VB1 SUB-D 9, Male (cross cable)
PCB double side plate through hole
LED cover Clear RED color acrylic plastic
Keyboard sticker printable SVG file
Kit information, please contact Wichit Sirichote
New color display and rare CPU, Tesla 8080A!
Download Hardware schematic, Quick Start , PLD files, monitor program.
Programming book and User's manual rev 1.0 .
Monitor commands with keypad and serial interface are compatible with 8085 Kit.
18 May 2018 fixed RST 3 service rotuine for HL register, monitor3.zip
16 January 2017 updated monitor program for new color 7-segment display, B8080.rar
Sample code/modified monitor program for testing and learning how to write the monitor program
Project1.asm sample code that uses console to control gpio1 LED and LCD written by Jeff Rosengarden , email@example.com
C8080-JRv1.1.asm modified monitor program by Jeff Rosengarden , firstname.lastname@example.org
Last updated,18 May 2018
10 May 2016