8088 Microprocessor Kit
Wichit Sirichote, firstname.lastname@example.org
Build your own Microprocessor training kit with the 80C88 CMOS Microprocessor.
Simple design single board computer using the 80C88 16-bit microprocessor. The CPU is Harris 80C88 40-pin ceramic package. The oscillator chip is Siemens SAB8284B with 12MHz xtal. The CPU clock is 4MHz. The ROM is now at the highest memory space designed for boot loader with lowest location for running application programs in RAM space. Learn the basic of x86 CPU with this trainer kit is very fun.
The board consumes approx. 180mA at +5V power supply. Most chips produce no heat, only 8284 and 7805 are a bit warm.
The software UART, 2400 bit/s is for Intel hex file downloading.
Hardware schematic (click to enlarge)
Hardware descriptions: U5 is CMOS 80C88 microprocessor in minimum mode. The Address bus is demultiplexed with ALE signal and latched by U6 and U9, 74HC573.
The CPU clock is generated by U8, 8284 chip. The Xtal frequency is 12.000MHz. CPU clock is 12.000MHz/3 = 4.000MHz.
U1 is 32kB EPROM, 27C256. The address space for EPROM is decoded at 0xFC000-0xFFFFF. U2 is 128kB static RAM, 628128. The RAM space is located at 0x00000-0x1FFFF.
U3, memory and I/O spaces decoder chip is made with GAL16V8D. It provides chip selected signals for memory and I/O chips.
U4, the 20-pin 89C2051 microcontroller chip produces 10ms tick. SW1 selects between 10ms tick or manual INTR button. The chip uses PCLK from 8284 chip.
U15, 74HC541 is 8-bit input port (PORT0). PA7 is one bit for serial data RXD signal.
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.
U16, 74HC175 is 4-bit output port (PORT3). Bit 3 is for TxD serial data stream. Bit 4 is for BEEP driver.
U17, 74HC573 is 8-bit output port for 8-bit binary number display. D15 lifts the forward biasing for proper brightness. JR1 is 16-pin socket for text LCD interface. U18, MAX232 converts TTL level to RS232 level.
Q1, KIA7042 is reset chip for power brownout.
PLD equations : U3 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 8088KIT ;
PartNo 16V8 ;
Date 12/1/2014 ;
Revision 01 ;
Designer Engineer ;
Company Fangkhao ;
Assembly None ;
/* *************** INPUT PINS *********************/
PIN 2 = A17;
PIN 3 = A18;
PIN 4 = A19;
PIN 5 = IOM;
PIN 6 = RD;
PIN 7 = WR;
PIN 8 = A8;
PIN 9 = A9;
PIN 1 = A0;
PIN 11 = A1;
FIELD ADDRESS = [A15..A12];
/* *************** OUTPUT PINS *********************/
PIN 12 = ROMCE;
PIN 13 = RAMCE;
PIN 14 = GPIO1;
PIN 15 = PORT3;
PIN 16 = LCD_E;
PIN 17 = PORT0;
PIN 18 = PORT1;
PIN 19 = PORT2;
ROMCE = IOM # !A17 # !A18 # !A19;
RAMCE = IOM # A17 # A18 # A19;
PORT0 = RD # !IOM # !A8 # A9 # A1 # A0;
!LCD_E = (RD & WR) # !IOM # A8 # !A9;
!GPIO1 = WR # !IOM # A8 # A9 # A1 # A0;
!PORT1 = WR # !IOM # A8 # A9 # A1 # !A0;
!PORT2 = WR # !IOM # A8 # A9 # !A1 # A0;
PORT3 = WR # !IOM # A8 # A9 # !A1 # !A0;
PLD equations for 8088 kit.
10ms System Tick: U16, 8051 compatible microcontroller is used to generate 10ms tick. The circuit runs with TTL clock from 8284 chip. The frequency is 12MHz/2. 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.
The source code was written in assembly code. The sample below produces a fixed frequency 100Hz or 10ms tick.
$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 $; RELOAD FA2CH FOR 10MS INTERRUPTTIMER0_SERVICE: PUSH ACC ORL TH0,#0F9H ORL TL0,#07DH ; COMUPTED VALUE IS F97DH ; CPL P3.7 CLR P3.7 ; produce interrupt trigger to Z80 NOP ; NOP ; NOP ; 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 Source code listing of 10ms tick generator.
-CPU: Harris 80C88 CMOS Microprocessor 4MHz
-Memory: 128kB RAM, 32kB EPROM
-Memory and I/O Decoder chip: Programmable Logic Device GAL16V8D
-Display: high brightness 6-digit 7-segment LED
-Keyboard: 32 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
- Power consumption: 180mA @7.5V AC adapter
-Expansion header: 40-pin header
Monitor commands features:
-Enter 8088 instructions using hex code directly
-Test code running with single step or break point
-User registers for status capturing
-Intel hex file downloading using 2400 bit/s RS232 port.
The kit is connected to terminal by hitting any key on the terminal automatically. Serial port format is 2400 bit/s 8n1. To download Intel hex file, type key "L". Then open Send the selected hex file.
Write your own monitor program:
Monitor source code is available for learning. User can modify the source code and reprogram the EPROM.
Steps for customizing your own monitor is as follows.
Step 1 Edit the source code in any text editor.
Step 2 Start location is C000H, No need to change, modify the source code, add more functions. Chang a beep frequency to higher, for indicating that we are testing it in RAM.
Step 3 Use the assembler to translate the assembly source code to the object code in hex file.
Step 4 Download the hex file to RAM with CS setting to 0000. We will test the code in RAM.
Step 5 Press reset, set address to C000, then GO.
Step 6 Repeat Step 1 if need modification
Step 7 If done, the hex file can be programmed to EPROM, but we use 27C256, 32kB EPROM, we must move the hex code from the 2nd block in 64kB space to the first block. EPROM must be erase with UV before we can reprogram it.
Step 8 Program the EPROM, put the new EPROM.
With Big letter LCD. The LCD driver is included in the montior program.
Sample code for testing interrupt with simple vector byte FF on the data bus using 8-bit pull up resistor.
0000 CPU "8086.TBL" ; CPU TABLE
0000 HOF "INT8" ; HEX OUTPUT FORMAT
03FC org 3fch
03FC 00 dfb service_timer&0ffh ; IP = 0500
03FD 05 dfb service_timer>>8
03FE 00 dfb 0 ; CS = 0000
03FF 00 dfb 0
0400 org 400h
0400 FB sti ; enable interrupt
0401 EBFE jmp $ ; jmp here
0500 org 500h
0500 FEC4 inc ah
0502 80FC64 cmp ah,100
0505 7506 jnz skip
0507 B400 mov ah,0
0509 FEC0 inc al
050B E600 out 0,al
050D CF iret
U1 27C256 32kB EPROM
U2 HM628128A 128kB Static RAM
U3 GAL16V8D, programmable logic device
U4 AT89C2051, 8-bit microcontroller
U5 80C88, Harris 16-bit microprocessor
U8 8284, oscillator
Resistors (all resistors are 1/8W +/-5%)
R8 RESISTOR SIP 9
R16,R12 10k RESISTOR SIP 9
C4 10uF 16V
C15 10uF 10V
JP1 HEADER 20X2
JR1 CONN RECT 16
J1 DC Input
SW1 SW MAG-SPDT
S2 30 S2,S4,S5,S6,S7,S8,S10, SW PUSHBUTTON
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
Download Hardware schematic, Quick Start , PLD files, monitor program.
29 August 2016 updated monitor program
Program examples for 8088 kit, ASM files, User's manual.
7 Septemnber 2016