UNIVERSITATEA POLITEHNICA TIMISOARA
Facultatea de Autmatica si Calculatoare
Sepcializarea Informatica
PROIECTAREA MICROSITEMELOR DIGITALE
MICROSITEM CU MICROPROCESOR 8086
Student: Don Calin-Ilie
Anul universitar: 2007-2008
Tema Proiectului
S se proiecteze un microsistem cu urmtoarea structur:
unitate central cu microprocesorul 8086;
64 Ko memorie EPROM, utiliznd circuite 27C256;
64 Ko memorie SRAM, utiliznd circuite 62256;
interfa serial, cu circuitul 8251, plasat n zona 0330H 0332H sau 0730H 0732H, n
funcie de poziia microcomutatorului S1;
interfa paralel, cu circuitul 8255, plasat n zona 0310H 0316H sau 0710H 0716H, n
funcie de poziia microcomutatorului S2;
o minitastatur cu 16 contacte;
16 led-uri;
un modul de afiare cu segmente, cu 4 ranguri
Descrierea hardware-ului
Microsistemul este conceput in jurul microprocesorului 8086 produs de firma Intel. Sistemul
contine 64Ko de memorie EPROM si 64Ko de memorie SRAM, posibilitate de conectare cu
periferice seriale si paralele, interfata cu utilizatorul prin minitastatura cu 16 contacte si afisaje cu
LED-uri si segmente.
Unitatea centrala (Anexa 1)
Microprocesorul 8086
Produs de firma Intel
Capacitate de adresare directa a memoriei pana la 1 Mo
Operatii cu numere cu/fara semn pe 16 si 8 biti
Operatii la nivel de bit, octet sau cuvant
Generator/divizor de tact 8284A
Produs de firma Intel
Foloseste ca si intrare o sursa de semnal TTL sau un cristal de cuart
Registru 74ALS373
Produse de firma Philips
Latch transparent pe 8 biti cu trei stari
Amplificator/separator bidirectional 74ALS245
Produs de firma Fairchild
Este folosit pentru amplificarea/separarea magistralei de date a microprocesorului
Memoria (Anexa 2)
Memorie EPROM 27256 (256Kb = 32Kb x 8 biti = 32Ko)
Produs de General Semiconductor
Timp de acces de maxim 150ns
Poate fi stersa prin expunere la UV
Memorie SRAM KM62256CL-L (256Kb = 32Kb x 8biti = 32Ko)
Produs de Samsung
Timp de acces de 55ns
Decodificator/demultiplexor 74ALS138
Produs de Philips
E foloit pentru decodificare si selectia cipului de memorie
Interfata seriala si paralela (Anexa 3 si 4)
Interfata seriala 8251A
Produsa de Intel
Intrarile si iesirile sunt compatible TTL
Conversia TTL EIA e realizata de cip-ul MAX232
Transmisie full-duplex cu buffer dublu
Capaila operatii sincrone si asincrone
Convertor TTL-EIA MAX232
Conversia se bazeaza pe surse de tensiune capacitive
Decodificatorul de porturi foloseste aceleasi ciruite de decodificare/demultiplexare ca si cele
pentru memorie (74ALS138).
Intefata paralela 8255A
Produsa de Intel
Compatibil TTL
24 de pini IO programabili
Se poate programa in 3 moduri de functionare
Compatibila cu familia de microprocesoare Intel
Interfata cu utilizatorul (Anexa 5)
Pentru cele 16 LED-uri am considerat LED-uri de culoare rosie. Comanda acestora
realizandu-se pe 0 logic cu niveluri TTL.
Pentru afisajul cu segmente cu 4 ranguri am ales varianta cu catod comun (comanda pe 1
logic), controlul afisajului realizandu-se prin software iar pentu controlul unui modul am ales
varianta nemultiplexata.
Aceasta configuratie are avantajul implementarii prin software a controlului afisajului.
Pentru operatii ce necesita interventia utilizatorului am intodus o tastatura mecanica cu 16
contacte, control-ul acesteia realizand-ul prin soft, prin scanare (polling).
SERIALC equ 0332h
SERIALD equ 0330h
PARARCC equ 0316h
PARAA equ 0310h
PARAB equ 0312h
PARAC equ 0314h
CHAR_0
CHAR_1
CHAR_2
CHAR_3
CHAR_4
CHAR_5
CHAR_6
CHAR_7
CHAR_8
CHAR_9
CHAR_A
CHAR_B
CHAR_C
CHAR_D
CHAR_E
CHAR_F
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
equ
0C0h
0F9h
0A2h
0B0h
099h
092h
082h
0F8h
080h
090h
088h
08Ch
0C9h
0AEh
089h
081h
;int 20h
;rutina de programare a interfetei seriale 8251
; 8 biti, fara paritate, factor x16, rata 9600bps
; /RTS = 1, comanda receptie, comanda transmisie, /DTR = 1
INT_20:
mov DX,
mov AL,
out DX,
mov DX,
mov AL,
out DX,
mov DX,
mov AL,
out DX,
mov AL,
out DX,
IRET
01002h
014h
AL
01000h
41h
AL
SERIALC
0CEh
AL
015h
AL
;int 21h
;rutina de transmitere a caracterului din CL
INT_21:
MOV DX, SERIALC
IN
AL,DX ; citire si testare rang TxRDY din cuvantul de stare
RCR
AL,1
JNC
INT_21
MOV
AL,CL ; se preia data din registrul CL
MOV
DX, SERIALD
OUT
DX,AL
IRET
;int 22h
;rutina de receptie a caracterului in CL
INT_22:
MOV DX, SERIALC
IN
AL,DX ; citire si testare rang RxRDY din cuvntul de stare
RCR
AL,2
JNC
INT_22
MOV
DX,SERIALD
IN
AL,DX ; se preia data de la 8251
MOV
CL,AL ; se depune data in registrul CL
IRET
;int 23h
;rutina de programare a interfetei paralele 8255
; grup A - mod 0
; port A - iesire
; port C superior - iesire
; grup B - mod 0
; port B - iesire
; port C inferior - intrare
INT_23:
MOV DX, PARARCC
MOV
AL,81H
OUT
DX,AL
IRET
;int 24h
;rutina de emisie a unui caracter din CL
INT_24:
MOV DX,PARAC
IN
AL,DX ; citire si testare BUSY
RCR
AL,1
JNC
INT_24
MOV
AL,CL
; se preia caracterul din registrul CL
MOV
DX,PARAA
; si e pun pe portul A care este cu memorare
OUT
DX,AL
MOV
AL,01H
; se trimite un semnal de strobe pe portul B
MOV
DX,PARAB
OUT
DX,AL ; /STB = 1
AND
AL,00H
OUT
DX,AL ; /STB = 0
OR
AL,01H
OUT
DX,AL ; /STB = 1
IRET
;int 25h
;rutina de scanare a tastaturii
;tasta apasata se stocheaza in CL
; 0 1 2 3
; 4 5 6 7
; 8 9 A B
; C D E F
INT_25:
;se
MOV
MOV
OUT
;se
MOV
IN
pune 0 pe prima coloana si se verifica tastele 0 4 8 C
AL, 0FEh
DX,840H
DX,AL
verifica pe rand tastele
08C0H, DX
AL, DX
;citeste prima coloana
MOV CL, 00h
AND AL, 80H
JNZ INT_25_END
;seteaza ca si activa tasta 0
;verifica daca tasta activa e 0
;daca e se iese din intrerupere, daca nu
;scaneaza tastele urmatoare
MOV CL, 04h
;seteaza ca si activa tasta 4
AND AL, 40H
;verifica daca tasta activa e 4
JNZ INT_25_END
;daca e se iese din intrerupere, daca nu
;scaneaza tastele urmatoare
MOV CL, 08h
;seteaza ca si activa tasta 8
AND AL, 20H
;verifica daca tasta activa e 8
JNZ INT_25_END
;daca e se iese din intrerupere, daca nu
;scaneaza tastele urmatoare
MOV CL, 0Ch
;seteaza ca si activa tasta C
AND AL, 10H
;verifica daca tasta activa e C
JNZ INT_25_END
;daca e se iese din intrerupere, daca nu
;scaneaza tastele urmatoare
;se pune 0 pe coloana a doua si se verifica tastele 1 5 9
MOV AL, 0FDh
MOV DX,840H
OUT DX,AL
;se verifica pe rand tastele
MOV DX, 08C0H
IN AL, DX
;citeste a doua coloana
;TASTA 1
MOV CL, 05h
AND AL, 80H
JNZ INT_25_END
;TASTA 5
MOV CL, 05h
AND AL, 40H
JNZ INT_25_END
;TASTA 9
MOV CL, 09h
AND AL, 20H
JNZ INT_25_END
;TASTA D
MOV CL, 0Dh
AND AL, 10H
JNZ INT_25_END
;se
MOV
MOV
OUT
;se
se
se
se
se
D
pune 0 pe coloana a treia si se verifica tastele 2 6 A E
AL, 0FBh
DX,840H
DX,AL
verifica pe rand tastele
MOV DX, 08C0H
IN AL, DX
;citeste a doua coloana
;TASTA 2
MOV CL, 02h
AND AL, 80H
JNZ INT_25_END
;TASTA 6
MOV CL, 06h
AND AL, 40H
JNZ INT_25_END
;TASTA A
MOV CL, 0Ah
AND AL, 20H
JNZ INT_25_END
;TASTA E
MOV CL, 0Eh
AND AL, 10H
JNZ INT_25_END
;se pune 0 pe coloana a patra si se verifica tastele 3 7 B F
MOV AL, 0F8h
MOV DX,840H
OUT DX,AL
;se verifica pe rand tastele
MOV DX, 08C0H
IN AL, DX
;citeste a doua coloana
;TASTA 3
MOV CL, 03h
AND AL, 80H
JNZ INT_25_END
;TASTA 7
MOV CL, 07h
AND AL, 40H
JNZ INT_25_END
;TASTA B
MOV CL, 0Bh
AND AL, 20H
JNZ INT_25_END
;TASTA F
MOV CL, 0Fh
AND AL, 10H
JNZ INT_25_END
JMP INT_25
INT_25_END: IRET
;int 26h
;rutina de aprindere a unui led
;in CL va fi pus numarul led-ului
INT_26:
MOV AX,01h;
SHL AX,CL
MOV DX,0CC0H
OUT DX, AL
MOV DX,0C40H
MOV AL, AH
OUT DX, AL
IRET
;int 27h
;rutina de afisare a unui carater hexa pe un anumit rang
;CL caracterul ce va fi afisat
;CH rangul
INT_27:
CMP CL,00h
JE PRINT_0
CMP CL,01h
JE PRINT_1
CMP CL,02h
JE PRINT_2
CMP CL,03h
JE PRINT_3
CMP CL,04h
JE PRINT_4
CMP CL,05h
JE PRINT_5
CMP CL,06h
JE PRINT_6
CMP CL,07h
JE PRINT_7
CMP CL,08h
JE PRINT_8
CMP CL,09h
JE PRINT_9
CMP CL,0Ah
JE PRINT_A
CMP CL,0Bh
JE PRINT_B
CMP CL,0Ch
JE PRINT_C
CMP CL,0Dh
JE PRINT_D
CMP CL,0Eh
JE PRINT_E
CMP CL,0Fh
JE PRINT_F
PRINT_0: MOV
JMP PRINT
PRINT_1: MOV
JMP PRINT
PRINT_2: MOV
JMP PRINT
PRINT_3: MOV
JMP PRINT
PRINT_4: MOV
JMP PRINT
PRINT_5: MOV
JMP PRINT
PRINT_6: MOV
JMP PRINT
PRINT_7: MOV
JMP PRINT
PRINT_8: MOV
JMP PRINT
PRINT_9: MOV
JMP PRINT
PRINT_A: MOV
JMP PRINT
PRINT_B: MOV
JMP PRINT
PRINT_C: MOV
JMP PRINT
PRINT_D: MOV
JMP PRINT
PRINT_E: MOV
JMP PRINT
PRINT_F: MOV
JMP PRINT
AL, CHAR_0
AL, CHAR_1
AL, CHAR_2
AL, CHAR_3
AL, CHAR_4
AL, CHAR_5
AL, CHAR_6
AL, CHAR_7
AL, CHAR_8
AL, CHAR_9
AL, CHAR_A
AL, CHAR_B
AL, CHAR_C
AL, CHAR_D
AL, CHAR_E
AL, CHAR_F
PRINT:
CMP CH,00h
JE PRINT_r0
CMP CH,01h
JE PRINT_r1
CMP CH,02h
JE PRINT_r2
CMP CH,03h
JE PRINT_r3
PRINT_r0:
MOV DX,04C0H
OUT DX,AL
JMP INT_27_END
PRINT_r1:
MOV DX,0440H
OUT DX,AL
JMP INT_27_END
PRINT_r2:
MOV DX,00C0H
OUT DX,AL
JMP INT_27_END
PRINT_r3:
MOV DX,0040H
OUT DX,AL
JMP INT_27_END
INT_27_END: IRET
A0
A1
A2
A3
A4
A5
A6
A7
15 MHz
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
1
11
OC
G
U2
17
16
+5 V
10 K
C
X1
33
MN
5
8
10
22
19
21
READY
CLK
RESET
PCLK
18
INTR
OSC
12
READY
CLK
RESET
X2
4
6
3
7
14
1
15
13
RDY1
RDY2
AEN1
AEN2
EFI
CSYNC
ASYNC
F/C
11
RES
SWITCH
8284A
47 uF
30
31
17
23
HLDA
HOLD
NMI
TEST
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
AD8
AD9
AD10
AD11
AD12
AD13
AD14
AD15
A16/S3
A17/S4
A18/S5
A19/S6
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
39
38
37
36
35
BHE/S7
34
DEN
DT/R
M/IO
26
27
28
RD
WR
ALE
INTA
32
29
25
24
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
74LS373
A8
A9
A10
A11
A12
A13
A14
A15
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
1
11
OC
G
74LS373
A16
A17
A18
A19
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
1
11
OC
G
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
ADDRESS BUS
DATA BUS
74LS373
8086MIN
D0
D1
D2
D3
D4
D5
D6
D7
2
3
4
5
6
7
8
9
A1
A2
A3
A4
A5
A6
A7
A8
19
1
G
DIR
B1
B2
B3
B4
B5
B6
B7
B8
18
17
16
15
14
13
12
11
B1
B2
B3
B4
B5
B6
B7
B8
18
17
16
15
14
13
12
11
74LS245
D8
D9
D10
D11
D12
D13
D14
D15
Title
UNITATEA CENTRALA
Size
A
Date:
Document Number
1
Tuesday, January 08, 2008
5
Rev
Sheet
of
4
2
3
4
5
6
7
8
9
A1
A2
A3
A4
A5
A6
A7
A8
19
1
G
DIR
74LS245
A15-A1
D
D15-D0
U11
D15-D8
U1
10
9
8
7
6
5
4
3
25
24
21
23
2
26
27
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
20
22
1
CE
OE
VPP
O0
O1
O2
O3
O4
O5
O6
O7
11
12
13
15
16
17
18
19
27256
10
9
8
7
6
5
4
3
25
24
21
23
2
26
27
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
20
22
1
CE
OE
VPP
D15-D8
11
12
13
15
16
17
18
19
O0
O1
O2
O3
O4
O5
O6
O7
17
16
15
14
13
12
11
10
4
3
28
2
9
5
8
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
6
1
27256
27
I/O1
I/O2
I/O3
I/O4
I/O5
I/O6
I/O7
18
19
20
22
23
24
25
I/O8
26
D7-D0
17
16
15
14
13
12
11
10
4
3
28
2
9
5
8
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
WE
WE
OE
OE
CS
27
CS
62256
/RD
/BHE
U19
D7-D0
U2
I/O1
I/O2
I/O3
I/O4
I/O5
I/O6
I/O7
18
19
20
22
23
24
25
I/O8
26
62256
U21A
1
3
2
SN74S32
/WR
U22A
1
A0
B
3
2
U20
SN74S32
A17
A18
A19
M//IO
1
2
3
A0
A1
A2
4
5
6
E1
E2
E3
O0
O1
O2
O3
O4
O5
O6
O7
15
14
13
12
11
10
9
7
74AC138
Title
CONECTAREA MEMORIILOR
Size
Document Number
Custom2
Wednesday, January 09, 2008
Date:
5
Rev
Sheet
1
1
of
M//IO
1
2
3
A0
A1
A2
4
5
6
E1
E2
E3
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
15
14
13
12
11
10
9
7
SA1
SA2
SA3
SA4
ST1
/ST2
74AC138
SL1
SL2
A4
A5
C
A10
A11
A12
A13
3
1
3
A14
A15
A6
2
3
1
3
3
A7
1
2
3
A0
A1
A2
4
5
6
E1
E2
E3
2
1
3
A8
A9
2
3
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
15
14
13
12
11
10
9
7
S2
/S55
S1
/S51
74AC138
Title
DECODIFICATORUL DE PORTURI
Size
A
Date:
5
Document Number
<Doc>
Tuesday, January 08, 2008
2
Rev
<RevCode>
Sheet
of
1
D7-D0
VCC
U4
10 uF
U1
27
28
1
2
5
6
7
8
21
20
12
13
10
11
PCLK
C
/S51
D0
D1
D2
D3
D4
D5
D6
D7
RESET
CLK
C/D
RD
WR
CS
TXRDY
TXE
TXC
15
18
9
TXD
RXD
19
3
RXRDY
RXC
SY/BR
14
25
16
DSR
DTR
22
24
CTS
RTS
17
23
10 uF
MAX232
10 uF
10 uF
/S55
34
33
32
31
30
29
28
27
D0
D1
D2
D3
D4
D5
D6
D7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
4
3
2
1
40
39
38
37
5
36
9
8
35
6
RD
WR
A0
A1
RESET
CS
PB0
18
PC0
14
8255
8251
/RD
/WR
A1
A2
RESET
U6
B
VCC
M/IO
A
74ALS04
2
74ALS00
1
3
A12
19
20
A0
A1
11
14
16
G0
G1
G2
9
15
18
CLK0
CLK1
CLK2
22
23
21
RD
WR
CS
OUT0
OUT1
OUT2
D0
D1
D2
D3
D4
D5
D6
D7
10
13
17
8
7
6
5
4
3
2
1
D0-D7
8253
Title
INTERFATA SERIALA SI PARALELA
Size
A
Date:
5
Document Number
<Doc>
Thursday, January 10, 2008
2
Rev
<RevCode>
Sheet
of
1
CC
CC
D3A
1
A
CC
D3A
1
A
DP
CC
D3A
1
A
DP
D3A
1
A
DP
DP
10 9
8
5
4
2
3
7
330 330 330 330 330 330 330 330
10
U1
SA1
D0
D1
D2
D3
D4
D5
D6
D7
11
1
G
OC
10
330 330 330 330 330 330 330 330
330 330 330 330 330 330 330 330
U2
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
10
LDS-C32R
LDS-C32R
3
4
7
8
13
14
17
18
2
5
6
9
12
15
16
19
SA2
74ABT373A
U3
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
11
1
G
OC
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
SA3
74ABT373A
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
11
1
G
OC
330 330 330 330 330 330 330 330
LDS-C32R
LDS-C32R
U4
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
SA4
74ABT373A
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
11
1
G
OC
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
74ABT373A
VCC
D7-D0
VCC
U6
SL1
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
11
1
G
OC
U7
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
SL2
74ABT373A
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
11
1
G
OC
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
2
5
6
9
12
15
16
19
74ABT373A
U5
ST1
3
4
7
8
13
14
17
18
D0
D1
D2
D3
D4
D5
D6
D7
11
1
G
OC
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
U8
2
5
6
9
12
15
16
19
2
4
6
8
11
13
15
17
74ABT373A
1
19
1A1
1A2
1A3
1A4
2A1
2A2
2A3
2A4
1Y1
1Y2
1Y3
1Y4
2Y1
2Y2
2Y3
2Y4
18
16
14
12
9
7
5
3
D7
D6
D5
D4
1G
2G
74ABT244
/ST2
Title
INTERFATA CU UTILIZATORUL
Size
Document Number
Custom<Doc>
Date:
5
Tuesday, January 08, 2008
Rev
<RevCode>
Sheet
1
1
of
00000H
SRAM
0FFFFH
F0000H
EPROM
FFFFFH
HARTA MEMORIEI