Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Sa seze un microsistem

tehnica mecanica


ENUNŢUL PROBLEMEI:





Sa se proiecteze un microsistem cu urmatoarele resurse:

- memoria SRAM, 8 Ko

Proiectul trebue sa contina:

schemele la nivel de detaliu

rutinele de programare pentru circuitele specializate

rutinele pentru transmisia si receptia unui caracter pe interfata seriala

rutina pentru transmisia unui caracter pe interfata paralela

un program care afiseaza cate un caracter diferit pe fiecare rang al afisajului

















DESCRIEREA PROIECTULUI


In componenta acestui microsistem se gasesc urmatoarele circuite:

- Z80 cu rol de unitate centrala de procesare

- circuit 28C64 memorie fixa EPROM de 8 Ko

- circuit 6264 memorie SRAM de 8 Ko

- circuite 74LS138 decodificator adrese pentru porturi si memorii

- circuit 74LS04 porti inversoare

- circuite 74LS08 porti SI

- circuit CD4093 porti SI-NU Trigger Schmitt

- circuit 74LS74 bistabil de tip D folosit ca divizor in generatorul de tact

- circuite 74LS574 pentru comanda afisajului

- circuit programabil 8253

- circuit specializat interfata seriala 8251

- circuit specializat interfata paralela 8255

- circuit MAX232 care asigura translatarea nivelelor de tensiune TTL si EIA

- cristal de quartz 4.9152 MHz

- afisaj cu 7 segmente cu anod comun

- cateva componente pasive rezistori si condensatoare


















A 15

A 14

A 13

A 12

A 11

A 10

A 9

A 8

A 7

A 6

A 5

A 4

A 3

A 2

A 1

A 0

Circuit

















EPROM

































SRAM

































Camp de adrese liber


















Se observa ca pentru spatiul ocupat de EPROM A15 = A14 = A13 = 0 si pentru spatiu ocupat de SRAM A15 = A14 = 0, A13 = 1.


Ecuatiile semnalelor de selectie sunt:


CSEPROM = /A15 * /A14 * /A13

CSSRAM = /A15 * /A14 * A13


Dar avand in vedere ca la circuitele de memorie folosite semnalul /CS este activ la 0 logic rezultatul ecuatiilor de mai sus va trebui negat, problema aceasta am rezolvato folosind un circuit decodificator 74LS138 care are iesirile active la 0 logic.


segmentul a la rangul 0

segmentul b la rangul 1

segmentul c la rangul 2

segmentul d la rangul 3

segmentul e la rangul 4

segmentul f la rangul 5

segmentul g la rangul 6

punctul zecimal pz la rangul 7

Rezulta ca pentru aprinderea unui segment va trebui generat un 0 logic pe rangul magistralei de date conectat cu segmentul care se doreste aprins.


Conectarea si descrierea interfetelor seriala si paralela


Interfata seriala este realizata cu circuitul specializat programabil 8251. Acesta preia datele pe linii paralele de la procesor si le transmite serial catre periferic si viceversa. Datele initiale pentru transferul serial sunt: comunicare asincrona, cu 1 bit de stop, 8 biti de date, fara paritate, factor de multiplicare 16 si rata de transfer 9600 bps. Aceste cerinte se pot realiza programand circuitul prin cuvintele de mod si comanda. Pentru a asigura o rata de transfer de 9600 bps cu un factor de multiplicare 16 aven nevoie de un clock pe care il vom aplica pinilor RXC si TXC cu frecventa de 16 * 9600 = 153600 Hz = 153,6KHz. Pentru a obtine acest clock am folosit un circuit specializat contor temporizator 8253 programat in mod divizor (modul 2), caruia i-am aplicat tactul microsistemului care are valoarea 2,4576MHz. Constanta de divizare cu care am programat circuitul 8253 se calculeaza in felul urmator:












Primele instructiuni ale programului sunt pentru initializarea indicatorului de stiva SP, deoarece la adresa FFFF care se initializeaza automat dupa RESET dublu registru SP nu este conectata memorie, cea mai mare adresa la care se sfarseste memoria SRAM de 8 Ko este 3FFFH, ca urmare SP va trebui initializat cu aceasta adresa. Daca aceasta initializare nu se face, dupa prima instructiune de chemare (CALL) a unei rutine intreg microsistemul se va bloca, deoarece nu isi mai poate recupera adresa de intoarcere in programul principal care o salveaza automat in stiva in timpul unei instructiuni CALL sau la acceptarea unei cereri de intrerupere, in proectul de fata nu este cazul, deoarece nu am folosit sistemul de intreruperi.


LD HL,3FFFH ;initializeaza indicatoru de stiva

LD SP,HL ;cu cea mai mare adresa din SRAM


Programul intreg al microsistemului este urmatorul:


Programul pentru microsistemul cu Z80 *


ORG 0


INIT_MICROSISTEM:

LD HL,3FFFH ;initializeaza indicatoru de stiva

LD SP,HL ;cu cea mai mare adresa din SRAM

CALL PROG_8253 ;programeaza divizorul pentru serial

CALL PROG_8251 ;programeaza interfata seriala

CALL PROG_8255 ;programeaza interfata paralela


LD A,80H ; afiseaza cifra 8

OUT (80H),A ; pe DS1


LD A,0F8H ; afiseaza cifra 7

OUT (90H),A ; pe DS2


LD A,82H ; afiseaza cifra 6

OUT (0A0H),A ; pe DS3


LD A,92H ; afiseaza cifra 5

OUT (0B0H),A ; pe DS4


LD A,99H ; afiseaza cifra 4

OUT (0C0H),A ; pe DS5


LD A,0B0H ; afiseaza cifra 3

OUT (0D0H),A ; pe DS6


LD A,0A4H ; afiseaza cifra 2

OUT (0E0H),A ; pe DS7


LD A,0F9H ; afiseaza cifra 1

OUT (0F0H),A ; pe DS8


CALL RECEPT_SERIAL ;receptioneaza un caracter de pe serial

CALL TRANS_SERIAL ;transmite caracterul receptionat "efect echo"

CALL TRANS_PARALEL ;transmite caracterul pe paralel (conversie serial-paralel)


END_PROG:

JP END_PROG ;sfarsit program, bucla infinita







Rutinele programului *



PROG_8253: ;programarea 8253 in mod divizor cu 10h

LD A,14H ;incarca cuvantul de comanda pentru 8253

OUT (03H),A

LD A,10H ;incarca constanta de divizare

OUT (0),A

RET


PROG_8251: ;programarea interfetei seriale

LD A,4EH ;incarca cuvantul de mod

OUT (11H),A

LD A,15H ;incarca cuvantul de comanda

OUT (11H),A

RET


PROG_8255: ;programarea interfetei paralele

LD A,81H ;incarca cuvantul de comanda

OUT (23H),A ;transmite pe portul cuvantului de comanda

RET


TRANS_SERIAL: ;transmite un caracter pe serial

IN A,(11H) ;citirea octetului de stare

BIT 0,A ;se testeaza daca circuitul este disponibil

JP Z,TRANS_SERIAL

LD A,C ;se preia data din registrul C

OUT (10),A

RET


RECEPT_SERIAL: ;receptioneaza un caracter pe serial

IN A,(11H) ;citeste octetul de stare

BIT 1,A ;testeaza daca 8251 are un caracter disponibil

JP Z,RECEPT_SERIAL

IN A,(10H) ;citeste caracterul de la 8251

LD C,A ;depune caracterul citit in registrul C

RET


TRANS_PARALEL: ;transmite un caracter respectand dialogul de tip CENTRONIX

IN A,(22H) ;citeste si testeaza BUSY

BIT 0,A

JP NZ,TRANS_PARALEL

LD A,C ;citeste caracterul din registrul C

OUT (20H),A ;transnite caracterul la 8255

SET 0,A ;/STB = 1

OUT (21H),A

RES 0,A ;/STB = 0

OUT (21H),A

SET 0,A ;/STB = 1

OUT (21H),A

RET


END




Mai departe sunt schemele microsystemului:


Document Info


Accesari: 2677
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )