0% au considerat acest document util (0 voturi)
21 vizualizări6 pagini

Colocviu Lab

Încărcat de

andreea elena
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
21 vizualizări6 pagini

Colocviu Lab

Încărcat de

andreea elena
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 6

1.

Tabelul de adrese pentru Z80-PIO

Având în vedere că circuitul Z80-PIO este plasat la adresa de bază A8h în spațiul de adrese I/O și că pinul
B/A este conectat la A1, respectiv pinul C/D la A0, tabelul de adrese pentru PIO va fi următorul:

Adresă I/O Funcție

A8h Port A Data (PB/A=0, PC/D=0)

A9h Port A Control (PB/A=0, PC/D=1)

AAh Port B Data (PB/A=1, PC/D=0)

ABh Port B Control (PB/A=1, PC/D=1)

2. Cuvintele de comandă pentru Z80-PIO

Pentru a seta porturile, trebuie să configurăm modurile de operare ale porturilor și să trimitem valorile
corespunzătoare pentru afișarea cifrei 4.

Configurarea modurilor pentru porturile A și B:

 Port A: Mod de operare Output pentru segmentele display-ului

 Port B: Mod de operare Output pentru controlul catodului comun

Cuvinte de comandă:

 Cuvântul de mod pentru Port A:

 Specificăm că toate liniile PA6 - PA0 sunt ieșiri. Cuvântul de mod pentru port A va fi 0
(toate ieșirile).
 Cuvântul de mod pentru Port B:

 Specificăm că linia PB3 este ieșire pentru catod comun. Cuvântul de mod pentru port B
va fi 0 (toate ieșirile).

3. Valorile care trebuie trimise pe porturi pentru afișarea cifrei 4

Pentru afișarea cifrei 4 pe display-ul cu 7 segmente conectat în conexiune catod comun, trebuie să
aprindem segmentele b, c, f, g.

Segment Linia PIO Stare

a PA0 0

b PA1 1

c PA2 1

d PA3 0

e PA4 0

f PA5 1

g PA6 1

Valoarea ce trebuie trimisă pe Portul A pentru afișarea cifrei 4 va fi: 0111100 în binar, sau 3Ch în
hexazecimal.

4. Codul în limbaj de asamblare

; Setarea modului pentru porturile A si B

LD A, 0 ; Setam toate liniile ca iesiri

OUT (A9h), A ; Setam modul pentru Port A

OUT (ABh), A ; Setam modul pentru Port B

; Trimitem datele pentru afișarea cifrei 4

LD A, 3Ch ; Valoarea pentru afișarea cifrei 4

OUT (A8h), A ; Trimitem valoarea către Portul A

LD A, 08h ; Activăm linia PB3 pentru catodul comun

OUT (AAh), A ; Trimitem valoarea către Portul B


1. Determinarea constantei de timp

Pentru a obține o frecvență de 40 kHz dintr-o frecvență de 5 MHz, trebuie să calculăm constanta de timp
(TC).

Frecvența de intrare (fin) = 5 MHz Frecvența dorită de ieșire (fout) = 40 kHz

Constanta de timp TC se calculează cu formula: TC=finfoutTC=foutfin

TC=5 MHz40 kHzTC=40kHz5MHz TC=5×10640×103TC=40×1035×106 TC=125TC=125

Deci, constanta de timp va fi 125.

2. Configurarea Z80-CTC

Z80-CTC are patru canale, dar vom folosi doar canalul 0 conform cerinței.

Configurarea cuvântului de comandă

Un cuvânt de comandă pentru Z80-CTC este format dintr-un byte cu următoarea structură:

 Bit 7: 1 (indică faptul că acesta este un cuvânt de comandă)

 Bit 6: 0 (nu este folosit)

 Bit 5: 0 (selectează canalul 0)

 Bit 4: 1 (reset contor)

 Bit 3: 1 (timer enable)

 Bit 2: 0 (CT/Timer mode, selectăm mod numărător - Timer)

 Bit 1: 0 (mod trigger - rising edge)

 Bit 0: 0 (nu se generează întreruperi)

Formatul cuvântului de comandă pentru canalul 0 va fi: CMD=10011000=98ℎCMD=10011000b=98h

3. Adresele pentru Z80-CTC


Adresa de bază pentru Z80-CTC este 30h. Z80-CTC folosește adrese consecutive pentru fiecare canal și
pentru registrele de control.

Adresă I/O Funcție

30h Canal 0 - Control

31h Canal 0 - Time Constant

32h Canal 1 - Control

33h Canal 1 - Time Constant

34h Canal 2 - Control

35h Canal 2 - Time Constant

36h Canal 3 - Control

37h Canal 3 - Time Constant

4. Codul în limbaj de asamblare

; Configurarea canalului 0 al Z80-CTC pentru generarea unei frecvențe de 40 kHz

; Setăm cuvântul de comandă pentru canalul 0

LD A, 98h ; Cuvânt de comandă

OUT (30h), A ; Trimitem cuvântul de comandă la adresa 30h (Canal 0 - Control)

; Setăm constanta de timp

LD A, 125 ; Constanta de timp pentru 40 kHz

OUT (31h), A ; Trimitem constanta de timp la adresa 31h (Canal 0 - Time Constant)

; Notă: Frecvența de 40 kHz va fi obținută pe linia ZC/TO1


1. Organigrama

Organigrama pentru programul de asamblare poate fi reprezentată astfel:

1. Inițializare:

 Setează P1.2 ca ieșire pentru LED.

 Setează P1.7 ca intrare pentru buton.

2. Buclă principală:

 Citește starea butonului de pe P1.7.

 Dacă butonul este apăsat (P1.7 = 0), stinge LED-ul (P1.2 = 1).

 Dacă butonul nu este apăsat (P1.7 = 1), aprinde LED-ul (P1.2 = 0).

 Repetă bucla principală.

2. Codul în limbaj de asamblare

; Program pentru 8051 - Aprinderea unui LED când butonul nu este apăsat

; LED pe P1.2 (activ LOW)

; Buton pe P1.7 (activ LOW)

ORG 00H ; Adresa de început a programului

START: MOV P1, #80H ; Setează P1.2 ca ieșire (1) și P1.7 ca intrare (0)

MAIN: JB P1.7, LED_ON ; Dacă P1.7 (buton) este 1 (neapăsat), sare la LED_ON

CLR P1.2 ; Stinge LED-ul (P1.2 = 0)

SJMP MAIN ; Sari la începutul buclei principale

LED_ON: SETB P1.2 ; Aprinde LED-ul (P1.2 = 1)

SJMP MAIN ; Sari la începutul buclei principale


END ; Sfârșitul programului

S-ar putea să vă placă și