8088 Microprocessor Kit

Wichit Sirichote, wichit.sirichote@gmail.com

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 ;
Location ;
Device g16v8a;

/* *************** 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.

$mod52
 dseg at 30h
TICK: DS 1
 cseg at 0
   jmp main
       
 org 00bh
timer0_vector:
 JMP timer0_SERVICE
           
   org 100h
;-----initialize data-----------------------------
main: mov r7,#0
   djnz r7,$ 
 mov sp,#60h ; set stack pointer to 60h
 MOV P1,#0FFH
   MOV TICK,#0
 mov tmod,#1 ; set timer mode 1
   setb et0 ; enable timer0 interrupt
   setb ea ; enable all interrupt
   setb tr0 ; run timer0
 SJMP $
; RELOAD FA2CH FOR 10MS INTERRUPT
TIMER0_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.7
 CPL P1.6 ; CHECK TICK FREQUENCY 
 INC TICK
 MOV A,TICK
   CJNE A,#100,SKIP
   
   MOV TICK,#0
   Clr P1.7
   MOV R7,#30
   DJNZ R7,$
   SETB P1.7
SKIP: 
 
READ_MORE: POP ACC
   RETI
 
 end
       
Source code listing of 10ms tick generator. 

Hardware Features:

-CPU: Harris 80C88 CMOS Microprocessor 4MHz
-Oscillator: 8284
-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
-Insert/delete byte
-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 service_timer

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 skip
050D CF iret

0000 end

PARTS LIST

Semiconductors

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
U6,U9,U13,U14,U17 74HC573
U7 74LS14
U8 8284, oscillator
U10 7805
U12,U11 LTC-4727JR
U15 74HC541
U16 74LS175
U18 MAX232A

D2,D7,D8,D9,D10,D11,D12, LED
D13,D14
D3 POWER
D4 1N4007
D15 1N5236A
D16 TVS15V

Q1 KIA7042
Q2 BC327

Resistors (all resistors are 1/8W +/-5%)

R1 680
R2,R5,R6,R7,R9,R20 10K
R3,R4 510
R8 RESISTOR SIP 9
R10 100
R11 1k
R16,R12 10k RESISTOR SIP 9
R13 4.7k
R19,R15 10

Capacitors

C1 22uF
C2,C3,C13,C16,C17,C18 10uF
C4 10uF 16V
C5 1000uF25V
C6,C7,C8,C9,C10 0.1uF
C11,C12 0.1uF
C14,C19,C20 100nF
C15 10uF 10V

Additional parts

JP1 HEADER 20X2
JR1 CONN RECT 16
J1 DC Input
LS1 SPEAKER

SW1 SW MAG-SPDT
SW2 RESET
S1 INTR
S2 30 S2,S4,S5,S6,S7,S8,S10, SW PUSHBUTTON
S11,S12,S13,S14,S16,S17,
S18,S19,S20,S21,S23,S24,
S25,S26,S27,S28,S29,S30,
S31,S32,S33,S34,S35
TP1 +5V
TP2 GND

VB1 SUB-D 9, Male (cross cable)
Y1 12.000MHz

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