Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Proiect: Microsistem cu
microprocesorul 8086
Vornicu Adrian
An II Informatica
Grupa 2.2
An universitar 2007-2008
Tema proiectului
1. Unitatea centrală
Microprocesorul 8086 are 16 linii multiplexate de adrese şi date şi încă patru linii de
adrese care nu fac parte din cele multiplexate. Astfel, având 20 de linii de adrese
microprocesorul poate adresa direct 1 Megaoctet de memorie. Microprocesorul poate lucra
în două moduri: minim şi maxim. În modul minim, folosit pentru aplicaţii simple,
semnalele necesare pentru transferul cu memoria şi porturile sunt generate direct de
microprocesor. În modul maxim, folosit pentru aplicaţii mai complexe, aceste semnale sunt
generate de controlerul de magistrală 8288. În această aplicaţie, microprocesorul este
utilizat în modul minim.
Circuitul 8284A generează tactul CLK către microprocesor şi PCLK către circuitul
specializat al interfeţei seriale. 8284A mai are rolul de a genera READY şi RESET către
microprocesor, sincronizându-le cu tactul. Pentru a genera tactul cu frecvenţa de 5 MHz la
care lucrează microprocesorul, se conectează la circuitul 8284A un cuarţ de 15 MHz.
Semnalul RESET este obţinut prin sincronizarea cu tactul a semnalului /RST, care este
activ în momentul conectării microsistemului la sursa de tensiune (prin încărcarea
condensatorului) şi în momentul apăsării butonului Reset de către utilizator.
Circuitele pentru amplificarea şi demultiplexarea magistralelor sunt trei registre
74LS373 şi două amplificatoare/separatoare bidirecţionale 74LS245. Registrele
memorează adresa şi ieşirile lor formează magistrala de adrese. Încărcarea acestor registre
se realizează când microprocesorul activează semnalul ALE (Address Latch Enable).
Magistrala de date este formată din terminalele B1-B8 ale celor două amplificatoare/sepa-
ratoare bidirecţionale. Acestea permit transferul datelor când microprocesorul activează
semnalul /DEN (Data Enable), iar direcţia este dată de semnalul DT//R.
2. Memoria
Memoria EPROM de 64 Kocteti este formată din două circuite 27C256, iar memoria
SRAM, tot de 64 Kocteti, este formată din două circuite 62256. Decodificatorul 74LS138
realizează o decodificare incompletă, deoarece linia A16 nu intră în decodificator. Harta
memoriei este următoarea:
3. Decodificatorul de porturi
Decodificatorul de porturi este format din: 5 porti SAU, 2 porti ŞI, 8 porti NU şi
două decodificatoare 74LS138. Iesirile decodificatoarelor 74LS138 constituie semnalele
de selecţie pentru porturi. La unele dintre potruri semnalul de selecţie este negata ieşirii
decodificatorului.
Semnalele de selecţie ale porturilor sunt:
SA1 – SA4: cele patru ranguri ale modulului de afişare cu segmente
ST1 şi /ST2: minitastatura
SL1 şi SL2: două grupuri de câte 8 led-uri
/S51: interfaţa serială
/S55: interfaţa paralelă
Interfeţele serială şi paralelă au două spaţii de adrese, spaţiul cu care se lucrează
fiind ales prin intermediul comutatoarelor.
Harta porturilor este următoarea:
SA1: 0400H
SA2: 0C00H
SA3: 0440H
SA4: 04C0H
ST1: 0840H
/ST2: 08C0H
SL1: 0C40H
SL2: 0CC0H
/S51: 0330H sau 0730H în funcţie de poziţia comutatorului
/S55: 0310H sau 0710H în funcţie de poziţia comutatorului
4. Interfetele serială şi paralelă
Interfaţa serială este de tip RS232 şi este formată din circuitul specializat
programabil 8251, circuitul de translatare TTL↔EIA MAX232 şi circuitul contor
temporizator 8253. Nivelurile de tensiune ale interfeţei RS232 sunt EIA:
nivelul 1 logic este cuprins între -25V şi -3V
nivelul 0 logic este cuprins între +3V şi +25V
Semnalul de selecţie al interfeţei seriale este /S51 care este o ieşire a
decodificatorului de porturi. Interfaţa serială are două porturi, pentru o poziţie a
comutatorului, adresele acestora fiind:
0330H pentru transferul datelor
0332H pentru scrierea cuvântului de comandă şi citirea cuvântului de stare,
iar pentru cealaltă poziţie, adresele sunt:
0730H pentru transferul datelor
0732H pentru scrierea cuvântului de comandă şi citirea cuvântului de stare.
Circuitul 8253 generează rata de transfer pentru interfaţa serială, fiind conectat la
terminalele TxC şi RxC ale CSP 8251. Semnalul de selecţie al acestui circuit este /S53 care
este de asemenea o ieşire a decodificatorului de porturi, având adresa 0420H.
CSP contor temporizator 8253 are 4 porturi:
0420H – contorul 0
0422H – contorul 1
0424H – contorul 2
0426H – cuvântul de comandă
Pentru a genera rata de transfer pentru interfaţa serială, circuitul 8253 trebuie
programat în modul 3, cu constanta 16.
Interfaţa paralelă este formată din circuitul specializat 8255 şi circuite de
amplificare formate din porţi ŞI. Semnalul de selecţie a interfeţei paralele este /S55 care
este o ieşire a decodificatorului de porturi.
Interfaţa paralelă este formată din 3 porturi de date(A,B,C) şi un port de comandă.
Adresele porturilor pentru prima poziţie a comutatorului:
A: 0310H
B: 0311H
C: 0312H
Comanda: 0313H
Adresele porturilor pentru cea de-a doua poziţie:
A: 0710H
B: 0711H
C: 0712H
Comanda: 0713H
5. Minitastatura, afişajul şi ledurile
Minitastatura este scanată cu ajutorul a două porturi: unul de ieşire, prin care se
activează coloana, şi unul de intrare prin care se citeşte linia activă. Portul de ieşire este un
registru 74LS373. Semnalul de selecţie al acestuia este ST1, care este o ieşire a
decodificatorului de porturi, având adresa 0840H. Portul de intrare este un circuit cu porţi
cu 3 stări 74LS244, având semnalul de selecţie /ST2, care este o ieşire a decodificatorului
de porturi, având adresa 08C0H.
Cele patru ranguri ale afişajului cu segmente au fiecare câte un port de ieşire.
Porturile afişajului sunt registre 74LS373 ce au semnalele de selecţie SA1, SA2, SA3,
SA4, care sunt ieşiri ale decodificatorului de porturi, având adresele 0400H, 0C00H,
0440H şi 04C0H.
Cele 16 led-uri sunt două grupuri de câte 8 led-uri. Fiecare grup are câte un port de
ieşire format dintr-un registru 74LS373. Porturile au semnalele de selecţie SL1 şi SL2,
care sunt ieşiri ale decodificatorului de porturi, având adresele 0C40H şi 0CC0H.
Programele
Rutina de programare a interfeţei seriale: 8 biţi de date, fără paritate, factor de
multiplicare 16, rata de transfer 9600 bps;
INT 20H
Intrări: AH: pozitia comutatorului semnalului /S51
;programarea contorului 8253
MOV DX,0426H; adresa circuitului 8253
MOV AL,16H ; cuvântul de comandă pentru contorul 0
OUT DX,AL
MOV AL,10H ; constanta pentru contorul 0
MOV DX,0420H
OUT 20H,AL
MOV DX,0422H
MOV AL,88H ; octetul c.m.p.s. al constantei pentru
;contorul 0
OUT DX,AL
CMP AH,1
JE POZ1
MOV DX,0332H
JMP PROG
POZ1:MOV DX,0732H
PROG:
MOV AL,0CEH ; cuvânt de mod
OUT DX,AL
MOV AL,15H ; cuvânt de comandă
OUT DX,AL
MOV AL, ;
RET
CMP AH,1
JE POZ1
MOV DX,0330H
JMP REC
POZ1:MOV DX,0730H
REC: IN AL,DX ; citire şi testare rang RxRDY din
;cuvântul de stare
RCR AL,2
JNC REC
MOV DX,0330H
IN AL,DX ; se preia data de la 8251
MOV CL,AL ; se depune data în registrul CL
RET
CMP AH,1
JE POZ1
MOV DX,0313H
JMP PROG
POZ1:MOV DX,0713H
PROG: MOV AL,81H
OUT DX,AL
RET
CMP AH,1
JE POZ1
MOV DX,0310H
JMP PAR
POZ1: MOV DX,0710H
PAR: IN AL,DX ; citire şi testare BUSY
RCR AL,1
JNC PAR
MOV AL,CL ; se preia caracterul din registrul CL
MOV DX,0310H
OUT DX,AL
OR AL,01H
MOV DX,0312H
OUT DX,AL ; /STB = 1
AND AL,00H
OUT DX,AL ; /STB = 0
OR AL,01H
OUT DX,AL ; /STB = 1
RET
AFIS:
;testam caracterul din AL
CMP AL,00H
JE CAR0
CMP AL,01H
JE CAR1
CMP AL,02H
JE CAR2
CMP AL,03H
JE CAR3
CMP AL,04H
JE CAR4
CMP AL,05H
JE CAR5
CMP AL,06H
JE CAR6
CMP AL,07H
JE CAR7
CMP AL,08H
JE CAR8
CMP AL,09H
JE CAR9
CMP AL,0AH
JE CARA
CMP AL,0BH
JE CARB
CMP AL,0CH
JE CARC
CMP AL,0DH
JE CARD
CMP AL,0EH
JE CARE
CMP AL,0FH
JE CARF
CAR0:
MOV AL,0D0H;combinatia de segmente
OUT AL,DX
RET
CAR1:
MOV AL,0F9H
OUT AL,DX
RET
CAR2:
MOV AL,0A4H
OUT AL,DX
RET
CAR3:
MOV AL,0B0H
OUT AL,DX
RET
CAR4:
MOV AL,9BH
OUT AL,DX
RET
CAR5:
MOV AL,92H
OUT AL,DX
RET
CAR6:
MOV AL,82H
OUT AL,DX
RET
CAR7:
MOV AL,F8
OUT AL,DX
RET
CAR8:
MOV AL,80H
OUT AL,DX
RET
CAR9:
MOV AL,90H
OUT AL,DX
RET
CARA:
MOV AL,88H
OUT AL,DX
RET
CARB:
MOV AL,83H
OUT AL,DX
RET
CARC:
MOV AL,0C6H
OUT AL,DX
RET
CARD:
MOV AL,0A1H
OUT AL,DX
RET
CARE:
MOV AL,86H
OUT AL,DX
RET
CARF:
MOV AL,8EH
OUT AL,DX
RET
Bibliografie