Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Microsisteme cu microcontroelere
Proiect
Profesor îndrumător :
Prof. Univ. Dr. Ing. Șerban Gheorghe
Student:
Georgescu Radu Antonio EA 411
1
Cuprins:
TEMA DE PROIECTARE....................................................................................................................................................................... 3
CAPITOLUL 1 ..................................................................................................................................................................................... 4
Proiectarea Hardware: .................................................................................................................................................................. 4
1.1 Alegere celulă LED 7 segmente ........................................................................................................................................... 4
1.2 Proiectare circuite de amplificare ....................................................................................................................................... 4
1.2.1 Calcul circuite de amplificare ...................................................................................................................................... 7
1.3 Proiectare hardware afișaj multiplexat ........................................................................................................................... 11
1.4 Proiectare hardware tastatură multiplexată ..................................................................................................................... 13
1.5 Circuitul pentru reset microcontroller si oscilatorul cu cuarț ........................................................................................... 15
1.6 Proiectarea memoriilor .................................................................................................................................................... 16
1.6.1 Proiectarea memoriei ROM ...................................................................................................................................... 16
1.6.2 Proiectarea memoriei RAM ...................................................................................................................................... 20
1.7Manual de utilizare ............................................................................................................................................................ 23
1.8 SCHEMA HARDWARE FINALA ........................................................................................................................................... 24
Capitolul 2 ....................................................................................................................................................................................... 25
Proiectarea Software: ................................................................................................................................................................. 25
2.1 Organigrame generale....................................................................................................................................................... 25
2.1.1. Organigrame detaliate Program Principal .................................................................................................................. 26
2.1.1.a Programarea circuitelor de intrare/ieșire: .......................................................................................................... 26
2.1.1.b Programarea lucrului cu întreruperi.................................................................................................................... 27
2.1.1.c Organigrama detaliată gestionare activități Program Principal ......................................................................... 28
2.1.2 Organigrame detaliate TIMER0 .................................................................................................................................. 31
2.2 Tabelul de variabile definitive ............................................................................................................................................ 35
2.3 Cod ASM 8051 .................................................................................................................................................................. 36
2
TEMA DE PROIECTARE:
Să se proiecteze un microsistem electronic prin care se permite comanda și controlul unei
tabele cu afișare numerică, de tip text curgător la stînga, folosind celule LED cu șapte segmente.
Microsistemul se va proiecta folosind un MCU de tip 8051, configurat cu pinul EA = 0,
frecvența semnalului de ceas aplicat fiind 10.24 MHz.
Microsistemul va conține 10 kocteți memorie ROM, de tip 2716/2Kx8(organizarea 2Kx8),
respectiv 16 kocteți memorie RAM de tip 6216/2Kx8(cu organizarea 2Kx8).
Microsistemul va conține circuit(e) port paralel de tip 8255.
Microsistemul va gestiona o tastatură cu 18 taste și un afișaj matriceal cu 12/3x4
(cu organizarea 3x4) celule LED cu 7 segmente, având terminalul comun Anod și culoarea Yellow.
Atât tastatura cât și afișajul vor fi comandate în tehnica multiplexată. Celulele LED cu 7 segmente vor
fi așezate din punct de vedere mecanic pe o singură linie.
Tabela va dispune de un software realizat în limbaj de asamblare prin care se va permite
programarea informației numerice care se va afisa curgător (deplasare la stangă), cu orice valori
numerice, inclusiv spații goale.
Tabela va avea două moduri de lucru: programarea și funcționarea propriu-zisă.
În modul programare, va putea fi accesată orice celulă LED din tabelă care va putea fi programată cu
orice valoare numerică sau spațiu liber. Celula LED cu șapte segmente care urmează să fie programată
va fi iluminată intermitent (ON-OFF) cu o perioada de 1.1 sec și factor de umplere 1/2.
In modul funcționare propriu-zisă, informatia numerica va fi afisata pe celulele LED, deplasarea
textului la stănga facându-se cu viteza de 4.2 caractere/secundă.
Se cer:
- Proiectul în format scris care va conține 2 mari capitole: proiectarea hardware și proiectarea
software;
- Proiectarea hardware va conține demersul de proiectare pentru conectarea memoriilor, circuitelor
I/O, precum și o schemă hardware generala, cu toate circuitele utilizate și conexiunile dintre ele; va
fi prezentat modul de programare a tabelei prin folosirea tastelor (manualul de utilizare);
- Proiectarea software va conține organigrame generale, organigrame detaliate, software-ul în limbaj
de asamblare precum și lista (tabelul) variabilelor folosite pe parcursul proiectului, intr-un format
indicat (nr.crt., denumire variabilă, descriere variabilă, mod reprezentare, valoare de inițializare,
adresa de plasare în memoria RAM)
3
CAPITOLUL 1
Proiectarea Hardware:
Conform specificațiilor de proiectare, celulă LED 7 segmente cu terminal comun ANOD și culoare
YELLOW, am ales următoarea celulă LED http://www.farnell.com/datasheets/2244651.pdf
de la Vishay, cu următorele specificații:
Conform structurii afișajului multiplexat, 12 celule LED cu organizarea 3x4 , pentru fiecare
Segment al unui LED avem nevoie de un curent de 10𝑚𝐴, de unde rezultă că, pentru fiecare linie de
digiți avem nevoie de 4𝑥10𝑚𝐴 = 40𝑚𝐴 curent pe care trebuie să-l furnizăm prin fiecare circuit de
amplificare 𝐶𝐴1
4
ANOD 1 ANOD 2 ANOD 3 ANOD 4 D2
LED-YELLOW
Fig 2: Structura afisaj și circuite de amplificare Fig 3: Circuit de amplificare 𝐶𝐴1 pentru fiecare segment
Pentru a furniza curentul necesar fiecărui segment (40𝑚𝐴) am ales un transistor de mică
putere NPN în comutație și circuitul din figura 3.
https://www.tme.eu/Document/5df5e5de3563f28ea4fe4d6a436504e0/bc546.pdf
NPN BC 546 de la Diotec cu următoarele specificații :
5
Pentru circuitul de amplificare și comanda pe anozi 𝐶𝐴2 avem nevoie de un curent de 840𝑚𝐴
din calculul următor :
- pe fiecare segment avem un curent de 40𝑚𝐴, fiecare LED are 7 segmente și,dacă toate ar fi
aprinse simultan curentul ar fi 7𝑥40𝑚𝐴 = 280𝑚𝐴. Pe fiecare coloana comandată de câte un anod
avem 3 celule LED => curentul necesar pe fiecare coloană 3𝑥280𝑚𝐴 = 840𝑚𝐴
Pentru circuitul de amplificare am ales
un transistor de mica putere NPN in
comutație BC 546 (acelasi de mai sus)
iar pentru a comanda anozii am ales
un transistor PNP de medie putere
în comutație BD 136 de la ON Semiconductor Fig 5: Circuit de amplificare 𝐶𝐴2
6
1.2.1 Calcul circuite de amplificare
+5V +5V
Circuit de amplificare anozi x4
R2
R3 Q2
BD136
R1(1) Q1
R1
BC546
D2
LED-YELLOW
R4(1) Q3
R4
BC546
Putererea disipata de RL: 𝑃𝐷𝑅𝐿 = 𝑅𝐿 · (𝐼𝐿𝐸𝐷 )2 = 57.5𝛺 · (40𝑚𝐴)2 => 𝑃𝐷𝑅𝐿 = 92𝑚𝑊
Calcul rezistenta 𝑅4 :
ℎ𝑓𝑒 𝑄3 = 120 => pentru un curent de colector de 40mA in baza trebuie sa avem :
𝐼𝐶𝑄3 40𝑚𝐴 5𝑉−𝑉𝐵𝐸𝑄3 4.3𝑉
𝐼𝐵𝑄3 = = => 𝐼𝐵𝑄3 = 333,3𝑢𝐴 => 𝑅4 = = 333.3𝑢𝐴 => 𝑅4 = 12.9𝐾𝛺
𝛽 120 333.3𝑢𝐴
2
Putererea disipata de 𝑅4 𝑃𝐷𝑅4 = 𝑅4 · (𝐼𝐵𝑄3 ) = 12.9𝐾𝛺 · (333.3𝑢𝐴)2 => 𝑃𝐷𝑅4 = 1.43𝑚𝑊
Puterea disipata de 𝑄3 𝑃𝐷𝑄3 =𝐼𝐶𝑄3 · 𝑉𝐶𝐸𝑄3 = 40𝑚𝐴 · 0.2𝑉 = 8𝑚𝑊 𝑃𝐷𝑄3 = 8𝑚𝑊
7
Rezultatul simularii imi arata un curent de colector
D1
LED-YELLOW
(curentul prin LED) de 43.3mA din cauza ca am
considerat 𝛽𝑄3 = 120 si, din simulare, a iesit 132.
D1(K)
I=0.0433619
RL
57.5
R4(1) R4(2) Q3
R4 I=0.000327788
BC546
12.9k
Puterea disipata de 𝑄1 𝑃𝐷𝑄3 =𝐼𝐶𝑄1 · 𝑉𝐶𝐸𝑄1 = 80𝑚𝐴 · 0.2𝑉 = 8𝑚𝑊 𝑃𝐷𝑄3 = 16𝑚𝑊
8
Puterea disipata de 𝑄2 𝑃2 =𝐼𝐶𝑄2 · 𝑉𝐶𝐸𝑄2 = 1𝐴 · 0.5𝑉 = 0.5𝑊 𝑃𝐷𝑄2 = 500𝑚𝑊
+5V
+5V
R2
120
I=0.0841278
+5V
R2(2)
I=0.0403221
R3 Q2
BD136
102.5 I=0.0407521
Q2(B)
R3(1)
I=0.0810742
I=0.0433757
Q2(C)
R1(1) R1(1) R1(2) Q1
V=5
R1 I=0.000648712
BC546
6.45k D1
LED-YELLOW
D1(K)
I=0.0433757
Fig 10: Simulare circuit 𝐶𝐴2
9
Fig 12 : Blocul circuitelor de amplificare
Circuitele de amplificare de pe fiecare anod, prin comanda primita, asigura aprinderea sau
stingerea coloanei de LED-uri aferente astfel:
- La comanda “1” logic se satureaza tranzistorul Q1, 𝑉𝐶𝐸𝑄1 = 0.2𝑉 => tensiunea in baza
tranzistorului Q2 <<tensiunea in emitorul tranzistorului PNP Q2 => Q2 in saturatie => aprinde coloana
de LED-uri aferente
- La comanda “0” logic, tranzistorul Q1 blocat, tensiunea in baza transitorului Q2≈ cu tensiunea
in emitorul lui Q2 => Q2 blocat
10
1.3 Proiectare hardware afișaj multiplexat
Frecventa pentru aprinderea ledurilor trebuie aleasă astfel încât ochiul uman să nu sesizeze
momentul când unele dintre leduri sunt stinse. Frecvența critică la care ochiul incă sesizează
pâlpâirea este 47𝐻𝑧. Pentru aprinderea multiplexată a LED-urilor alegem frecventa de 50𝐻𝑧.
1
Perioada aferentă frecvenței de 50𝐻𝑧 𝑇 = = 0.02𝑠 = 20𝑚𝑠
50𝐻𝑧
t
ANOD 2
coloana
2
t
ANOD 3
coloana
3
t
ANOD 4
coloana
4
5ms t
20ms
ca2
ca3
ca4
ca1
ca2
ca3
ca4
ca1
ca2
ca3
ca4
a2
a1 b2
b1 c2
c1 d2
d1 e2
e1 f2
f1 g2
g1
12
1.4 Proiectare hardware tastatură multiplexată
8255-2 14
PC0
15
PC1
16
col1
col2
col3
col4
col5
col6
PC2
17
PC3 a0 a0
13
PC4
PC5
12
11
Fig 16: Arhitectura hardware a tastaturii și porturile folosite
PC6
PC7
10 pentru identificare tastei apăsate
8255A
Comanda multiplexată a tastaturii, prin baleierea acesteia presupune emiterea unui “0” logic
pe fiecare din liniile matricei tastaturii. La fiecare emitere a unui “0” logic pe una dintre linii
presupune testarea fiecarei din cele 6 coloane => la fiecare baleiere se testează toate cele 18 taste.
Pentru ca ambele structuri hardware (afisarea multiplexată si tratarea tastaturii multiplexate)
se desfașoară in cadrul intreruperii TIMER care-mi oferă intreruperi la fiecare 5 ms și , la tratarea
afișării multiplexate avem aceeași perioadă de baleiere a coloanelor afișajului LED) iau si pentru
tratarea fiecarei taste din tastatură aceeasi perioada de 5ms => Timpul necesar pt baleierea unei
linii a tastaturii 5msx6=30ms
Timpul necesar pentru baleierea intregii tastaturi 5msx18=90ms (sau 30msx3linii)
Frecvența corespunzătoare pt baleierea intregii tastaturi la o perioadă de 90ms :
1 1000 11𝑡𝑎𝑠𝑡𝑒
𝑓= = ≈ 11 => putem administra o viteza de
90𝑚𝑠 90 𝑠
Pentru ca numărul de linii de iesire (3) + numărul de linii de intrare (6) =9, depăsesc numărul
de pini ai unui port, trebuie sa folosesc 2 porturi de la primul circuit 8255: PA cu pinii PA0,PA1,PA2
pentru baleierea liniilor tastaturii și, PB cu pinii PB0÷PB5 pentru citirea informației pe coloane
Pentru identificarea tastei apăsate am nevoie de testarea liniei și apoi a coloanei respective în
cazul în care o tastă e apăsată.
13
linie 1 5ms
Tastele folosite :
- M pentru programarea celulelor
- Stânga, Dreapta pentru a naviga stânga/dreapta spre celula pe vrem s-o programăm
- Sus,Jos pentru a incrementa/decrementa valoarea digitului curent
Pentru baleierea liniilor tastaturii restul biților portului PA, nefolosiți , îi trec in “1” logic,
urmând ca, la baleierea codului liniilor tastaturii, pentru a nu baleiea toti cei 8 biți ai portului, să
introduce o interogare suplimentară când codul depășește valoarea codului de baleiere pentru
ultima linie.
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 linia 3 PA2 1 1 0 1
x x col6 col5 col4 col3 col2 col1 x PA3 1 1 1 0
0 0 1 1 1 1 1 1 x PA4 1 1 1 1
masca testare coloana 0011.1111=3Fh
x PA5 1 1 1 1
Fig 18: Cod mascare coloană x PA6 1 1 1 1
x PA7 1 1 1 1
FEh FDh FBh F7h
14
Pentru testarea tastei apăsate trebuie să testez și codul de linie și codul de coloană pentru a
vedea care dintre taste e apăsată
LINIE
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 Cod linie
M 1 1 1 1 1 1 0 1 FDh
SUS 1 1 1 1 1 1 1 0 FEh
JOS 1 1 1 1 1 0 1 1 FBh
STANGA 1 1 1 1 1 1 0 1 FDh
DREAPTA 1 1 1 1 1 1 0 1 FDh
COLOANĂ
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 Cod coloană Cod linie Cod coloană
M 0 0 1 1 1 1 0 1 3Dh M FDh 3Dh
SUS 0 0 1 1 1 1 0 1 3Dh SUS FEh 3Dh
JOS 0 0 1 1 1 1 0 1 3Dh JOS FBh 3Dh
STANGA 0 0 1 1 1 1 1 0 3Eh STANGA FDh 3Eh
DREAPTA 0 0 1 1 1 0 1 1 3Bh DREAPTA FDh 3Bh
Fig 20: Codurile pentru tastele folosite
În cadrul circuitului electric, rezistențele 𝑅230 ÷ 𝑅235 = 10𝐾𝛺 cu rol de limitare curent
C1
XTAL1
RESET
C3 10pF
10uF
R1
100
X1 C2
RST
2
R2 XTAL2
8.2k
CRYSTAL
FREQ=10.24MHz 10pF
15
1.6 Proiectarea memoriilor
U8
8 9
A0 D0
7 10
A1 D1
6 11
A2 D2
5 13
A3 D3
4 14
A4 D4
3 15
A5 D5
2 16
A6 D6
1 17
A7 D7
23
A8
22
A9
19
A10 Fig 23 : Structura blocului de memorie 2716
18
CE
20
OE
21
VPP
2716
Fig 22 : Circuitul 2716 Proteus
Conectarea liniilor 𝐴0 ÷ 𝐴10 se face la magistrala de adrese a microcontrolerului 8051 iar liniile
𝐷0 ÷ 𝐷7 la magistrala de date a microcontrolerului 8051
Chiar dacă pentru adresarea blocului de memorie avem nevoie de doar 11 linii de adrese, adresarea
va fi completă, folosind toate cele 16 linii de adrese ale magistralei de adrese
16
Întocmirea tabelului de adresare pentru circuitele de memorie folosite. Cu ajutorul tabelului
putem vedea adresa individuală a fiecărui circuit de memorie ROM
Zona I - A15÷A14 - cuprinde linii ale tabelului care rămân nemodificate pe toată gama de adrese
folosite pentru memorii
Zona II - A13÷A11 cuprinde linii de adrese care permit selecția individuală a circuitelor de memorie
Zona III - A10÷A0 cuprinde liniile de adrese care se aplica tuturor circuitelor de memorie (numărul
acestora este identic cu numărul intrarilor de adrese ale circuitelor respective)
Deoarece avem 3 linii de selecție a circuitelor de memorie, circuitul de decodificare si selecție
trebuie sa asigure un număr de minim 3 intrări de selecție si un număr de minim 5 ieșiri (câte
circuite de memorie avem de selectat)
Aleg un DMUX care, la 3 intrări de selecție => 23 = 8 iesiri => DMUX 1:8 circuitul 74138
Fig 25: Circuitul DMUX și conectarea acestuia la magistrala de adresa cu liniile de selecție 𝐴11 ÷ 𝐴13
17
̅̅̅̅𝑅𝑂𝑀0 ÷ 𝐶𝐸
Ieșirile DMUX-ului 𝐶𝐸 ̅̅̅̅𝑅𝑂𝑀4 selectează care dintre circuitele de memorie ROM e
̅̅̅̅̅̅̅̅ de la
selectat în vederea adresării iar validarea circuitelor memoriei ROM se face cu semnalul 𝑃𝑆𝐸𝑁
microcontrolerul 8051
În circuitul electric al microsistemului , memoriile ROM ca și memoriile RAM, se găsesc in
blocuri ierarhice.
A[0..15]
ROM
U4
D[0..7]
D0 2 19 A0 A0 D0
D0 Q0 A0 D0
D1 3 18 A1 A1 D1
D1 Q1 A1 D1
D2 4 17 A2 A2 D2
D2 Q2 A2 D2
D3 5 16 A3 A3 D3
U1 D3 Q3 A3 D3
D4 6 15 A4 A4 D4
D4 Q4 A4 D4
19 39 D0 D5 7 14 A5 A5 D5
XTAL1 XTAL1 P0.0/AD0 D5 Q5 A5 D5
38 D1 D6 8 13 A6 A6 D6
P0.1/AD1 D6 Q6 A6 D6
37 D2 D7 9 12 A7 A7 D7
P0.2/AD2 D7 Q7 A7 D7
18 36 D3 A8
XTAL2 XTAL2 P0.3/AD3 ALE A8
35 D4 11 A9
P0.4/AD4 LE A9
34 D5 1 A10
P0.5/AD5 OE A10
33 D6 A11
P0.6/AD6 A11
9 32 D7 74HCT573 A12
RST RST P0.7/AD7
A13
A12 ROM 10K
A13
P2.0/A8
21 A8 A14
A14
2716 5X(2KX8)
22 A9 A15
P2.1/A9 A15
23 A10
P2.2/A10
29 24 A11
PSEN PSEN P2.3/A11
30 25 A12
ALE ALE P2.4/A12 PSEN
31 26 A13
EA P2.5/A13 PSEN
27 A14
P2.6/A14
28 A15
P2.7/A15
1 10
com.a1 P1.0 P3.0/RXD
2 11 CCT003
com.a2 P1.1 P3.1/TXD
3 12
com.a3 P1.2 P3.2/INT0
4 13 A0
com.a4 P1.3 P3.3/INT1
5 14 A1
P1.4 P3.4/T0
6 15
P1.5 P3.5/T1
7 16
P1.6 P3.6/WR WR
8 17
P1.7 P3.7/RD RD RAM
80C51
A0 D0
A0 D0
A1 D1
A1 D1
A2 D2
A2 D2
A3 D3
A3 D3
A4 D4
A4 D4
A5 D5
A5 D5
A6 D6
A6 D6
A7 D7
A7 D7
A8
A8
A9
A9
A10
A10
A5
A11
A12
A11 RAM 16K
A12
A13
A13
6216 8X(2KX8)
A14
A14
A15
A15
WR WR CS 8255A
RD RD CS 8255B
CCT004
Fig 26: Blocurile ierarhice ale memoriilor ROM și RAM și conectarea lor la magistralele de adrese si date
18
BA0÷BA15
D0
D1
D2
D3
D4
D5
D6
D7
BD0÷BD7 PSEN
D0
D1
D2
D3
D4
D5
D6
D7
A[0..15] U9 D[0..7]
A0 8 9 D0
A0 D0
A1 7 10 D1
𝐶𝐸 𝑅 0 𝑃𝑆𝐸𝑁 A0
A2 6
A1
A2
D1
D2
11 D2
A3 5 13 D3
+5V A3 D3
A4 4 14 D4
A1 A4 D4
A5 3 15 D5
A5 D5
A6 2 16 D6
A2 A6 D6
R236 A7 D7
𝐶𝐸 𝐸 A8
1
23
A7 D7
17
A3 1k A8
A9 22
A0÷ 10
A9
A10 19
BA0÷BA10 11 ROM0 A4
21
A10
U3 A11
2716 2Kx8 A5
A11 1 15 18
A Y0 CE
A12 2 14 20
A6 B Y1 OE/VPP
A13 3 13
D0÷D7 C Y2
12 2732
A7 Y3
11
Y4 U2
8 A8
6
E1 Y5
10
A14 4 9 A0 8 9 D0
𝐶𝐸 𝑅 1 A9
A15 5
E2
E3
Y6
Y7
7 A1 7
A0
A1
D0
D1
10 D1
A2 6 11 D2
A2 D2
74HCT138 A3 5 13 D3
A10 A3 D3
A4 4 14 D4
A4 D4
A5 3 15 D5
A11 A5 D5
A6 2 16 D6
𝐶𝐸 𝐸 A7 1
A6 D6
17 D7
A12 A7 D7
A8 23
A8
A0÷ 10
A9 22
A13 A9
BA0÷BA10 11 ROM1 A10 19
A10
21
2716 2Kx8 A14 A11
18
A15 CE
20
OE/VPP
D0÷D7
2732
8 U5
𝐶𝐸 𝑅 2 A0 8
A0 D0
9 D0
A1 7 10 D1
A1 D1
A2 6 11 D2
A2 D2
A3 5 13 D3
A3 D3
A4 4 14 D4
A4 D4
A5 3 15 D5
A5 D5
𝐶𝐸 𝐸 A6 2
A6 D6
16 D6
A7 1 17 D7
A7 D7
A8
A0÷ 10
23
A8
BA0÷BA10 11 ROM2 A9
A10
22
A9
19
A10
2716 2Kx8 21
A11
18
CE
D0÷D7 20
OE/VPP
2732
8
𝐶𝐸 𝑅 3 U6
A0 8 9 D0
A0 D0
A1 7 10 D1
A1 D1
A2 6 11 D2
A2 D2
A3 5 13 D3
A3 D3
A4 4 14 D4
A4 D4
𝐶𝐸 𝐸 A5 3
A5 D5
15 D5
A6 2 16 D6
A6 D6
A7 1 17 D7
A0÷ 10
A7 D7
A8 23
BA0÷BA10 11 ROM3 A9 22
A8
A9
2716 2Kx8 A10 19
A10
21
A11
18
D0÷D7 20
CE
OE/VPP
8 2732
𝐶𝐸 𝑅 4 U7
A0 8 9 D0
A0 D0
A1 7 10 D1
A1 D1
A2 6 11 D2
A2 D2
A3 5 13 D3
A3 D3
A4 4 14 D4
𝐶𝐸 𝐸 A5 3
A4 D4
15 D5
A5 D5
A6 2 16 D6
A6 D6
A0÷ 10
A7 1 17 D7
BA0÷BA10 11 ROM4 A8 23
A7
A8
D7
A9 22
2716 2Kx8 A10 19
A9
A10
21
A11
D0÷D7 18
CE
20
OE/VPP
8
2732
Pentru memoria RAM cerința proiectului era o memorie 6216/2Kx8 dar, din cauza lipsei
circuitului respective în Proteus, am folosit o memorie similară 6116/2Kx8
U21
8 9
A0 D0
7 10
A1 D1
6 11
A2 D2 𝐶𝐸 𝐸 𝑊𝐸
5 13
A3 D3
4 14
A0÷ 10
A4 D4 11 RAM
3 15
A5 D5 6116 2Kx8
2 16
A6 D6
1 17
A7 D7 D0÷D7
23
A8
22
A9
19 8
A10
18 Fig 30 : Structura blocului de memorie 2716
CE
20
OE
21
WE
6116
Fig 29 : Circuitul 6116 Proteus RAM0
RAM1
RAM2
RAM3
Pentru circuitul 6116/2kx8 avem 21 · 210 = 11 linii de adrese RAM4
RAM5
Pentru memoria de 16Kocteti avem nevoie de
RAM6
16𝑘·8 RAM7
= 8𝑥1 circuite de memorie 6116 organizate pe 8 linii si 1 coloana
2𝑘·8
Conectarea liniilor 𝐴0 ÷ 𝐴10 se face la magistrala de adrese a microcontrolerului 8051 iar liniile
𝐷0 ÷ 𝐷7 la magistrala de date a microcontrolerului 8051
Chiar dacă pentru adresarea blocului de memorie avem nevoie de doar 11 linii de adrese, adresarea
va fi completă, folosind toate cele 16 linii de adrese ale magistralei de adrese.
20
Întocmirea tabelului de adresare pentru circuitele de memorie folosite. Cu ajutorul tabelului
putem vedea adresa 21ndividual a fiecărui circuit de memorie RAM și a circuitelor 8255
BA1 BA0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Hexa Circuit
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000h
RAM0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 07FFh
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0800h
RAM1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0FFFh
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1000h
RAM2
0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 17FFh
0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1800h
RAM3
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFh
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000h
RAM4
0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 27FFh
0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2800h
RAM5
0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 2FFFh
0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 3000h
RAM6
0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 37FFH
0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 3800h
RAM7
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3FFFh
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000h 8255(1) PA
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4001h 8255(1) PB
0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 4002h 8255(1) PC
0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 4003h 8255(1) RCC
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 4800h 8255(2) PA
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 4801h 8255(2) PB
0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 4802h 8255(2) PC
0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 4803h 8255(2) RCC
zona II zona III
zona I
Zona I - A15 - cuprinde linii ale tabelului care raman nemodificate pe toata gama de adrese
folosite pentru memorii
Zona II - A14÷A11 cuprinde linii de adrese care permit selectia individuala a circuitelor de memorie
Zona III – A10÷A0 cuprinde liniile de adrese care se aplica tuturor circuitelor de memorie (numarul
acestora este identic cu numarul intrarilor de adrese ale circuitelor respective)
Deoarece avem 4 linii de selectie a circuitelor de memorie circuitul de decodificare si selectie
trebuie sa asigure un numar de minim 4 intrari de selectie si un numar de minim 9 iesiri (cate
circuite de memorie avem de selectat)
Aleg un DMUX care, la 4 intrari de selectie => 24 = 16 iesiri => DMUX 1:16 circuitul 74154
21
U9 U18
23 1 23 1 CE RAM0
A 0 A11 A 0
22 2 22 2 CE RAM1
B 1 A12 B 1
21 3 21 3 CE RAM2
C 2 A13 C 2
20 4 20 4 CE RAM3
D 3 A14 D 3
5 5 CE RAM4
4 4
18 6 18 6 CE RAM5
E1 5 E1 5
19 7 19 7 CE RAM6
E2 6 A15 E2 6
8 8 CE RAM7
7 7
9 9 CS 8255A
8 8
10 10 CS 8255B
9 9
11 11
10 10
13 13
11 11
14 14
12 12
15 15
13 13
16 16
14 14
17 17
15 15
74HCT154 74HCT154
Fig 32: Circuitul DMUX 1:16 și conectarea acestuia la magistrala de adresa cu liniile de selecție 𝐴11 ÷ 𝐴14
U12 U11
D0 9 8 A0 A0 8 9 D0
D0 D0 A0 A0 D0
D1 10 7 A1 A1 7 10 D1
D1 D1 A1 A1 D1
D2 11 6 A2 A2 6 11 D2
D2 D2 A2 A2 D2
D3 13 5 A3 A3 5 13 D3
D3 D3 A3 A3 D3
D4 14 4 A4 A4 4 14 D4
D4 D4 A4 A4 D4
D5 15 3 A5 A5 3 15 D5
D5 D5 A5 A5 D5
D6 16 2 A6 A6 2 16 D6
D6 D6 A6 A6 D6
D7 17 1 A7 A7 1 17 D7
D7 D7 A7 A7 D7
RAM1 23 A8 A8 23
A8 A8
A0 22 A9 A9 22 RAM0
A0 U20 A9 A9
19 A10 A10 19
A10 A10
A1 A11 23 1
A1 A 0 CE RAM0
A12 22 2 18 18
B 1 CE RAM1 CE CE RAM1 CE RAM0 CE
A2 A13 21 3 20 20
A2 C 2 CE RAM2 OE RD RD OE
A14 20 4 21 21
D 3 CE RAM3 WE WR WR WE
A3 5
A3 4 CE RAM4
18 6 6116 6116
E1 5 CE RAM5
A4 A15 19 7
A4 E2 6 CE RAM6
8
7 CE RAM7 U14 U13
A5 9
A5 8 CS 8255A
10 D0 9 8 A0 A0 8 9 D0
9 CS 8255B D0 A0 A0 D0
A6 11 D1 10 7 A1 A1 7 10 D1
A6 10 D1 A1 A1 D1
13 D2 11 6 A2 A2 6 11 D2
11 D2 A2 A2 D2
A7 14 D3 13 5 A3 A3 5 13 D3
A7 12 D3 A3 A3 D3
15 D4 14 4 A4 A4 4 14 D4
13 D4 A4 A4 D4
A8 16 D5 15 3 A5 A5 3 15 D5
A8 14 D5 A5 A5 D5
17 D6 16 2 A6 A6 2 16 D6
15 D6 A6 A6 D6
A9 D7 17 1 A7 A7 1 17 D7
A9 D7 A7 A7 D7
74HC154 23 A8 A8 23
A8 A8
A10 22 A9 A9 22
A10 A9 A9
19 A10 A10 19
A10 A10
A11
A11
18 18
CE CE RAM3 CE RAM2 CE
A12 20 20
A12 OE RD RD OE
21 21
WE WR WR WE
A13
A13
6116 6116
A14
A14
A15 U17 U16
A15
D0 9 8 A0 A0 8 9 D0
D0 A0 A0 D0
D1 10 7 A1 A1 7 10 D1
D1 A1 A1 D1
D2 11 6 A2 A2 6 11 D2
D2 A2 A2 D2
D3 13 5 A3 A3 5 13 D3
RD D3 A3 A3 D3
D4 14 4 A4 A4 4 14 D4
D4 A4 A4 D4
D5 15 3 A5 A5 3 15 D5
WR D5 A5 A5 D5
D6 16 2 A6 A6 2 16 D6
D6 A6 A6 D6
D7 17 1 A7 A7 1 17 D7
D7 A7 A7 D7
23 A8 A8 23
A8 A8
22 A9 A9 22
CS 8255A A9 A9
19 A10 A10 19
A10 A10
CS 8255B
18 18
CE CE RAM5 CE RAM4 CE
20 20
OE RD RD OE
21 21
WE WR WR WE
6116 6116
U19 U18
D0 9 8 A0 A0 8 9 D0
D0 A0 A0 D0
D1 10 7 A1 A1 7 10 D1
D1 A1 A1 D1
D2 11 6 A2 A2 6 11 D2
D2 A2 A2 D2
D3 13 5 A3 A3 5 13 D3
D3 A3 A3 D3
D4 14 4 A4 A4 4 14 D4
D4 A4 A4 D4
D5 15 3 A5 A5 3 15 D5
D5 A5 A5 D5
D6 16 2 A6 A6 2 16 D6
D6 A6 A6 D6
D7 17 1 A7 A7 1 17 D7
D7 A7 A7 D7
23 A8 A8 23
A8 A8
22 A9 A9 22
A9 A9
19 A10 A10 19
A10 A10
18 18
CE CE RAM7 CE RAM6 CE
20 20
OE RD RD OE
21 21
WE WR WR WE
6116 6116
D[0..7]
22
1.7 Manual de utilizare
Microsistemul proiectat afișează un text programabil, doar din cifrele zecimale, care se
deplasează de la dreapta la stânga cu o viteza de 4.2 caractere pe secundă și prezintă 2 moduri de
programare accesibile prin tratarea tastei “M”:
Modul de programare (M=1): presupune supravegherea tastelor active din tastură (“M”,
“stânga”,”dreapta”,”sus”,”jos”. La intrarea în modul programare, primul digitul reacționează prin
aprinderea și stingerea ON-OFF cu o perioadă de 1.1 secunde. Programarea se poate asupra celulei
care flash-ează
Acțiunile posibile pentru utilizator în modul de programare al celulelor LED:
- Tastele Stânga,Dreapta permit deplasarea stânga/dreapta printre celulele afișajului LED
pentru a putea programa digitul dorit.
- Tastele Sus,Jos permit acționarea la nivelul unui LED asupra căruia s-a decis programarea prin
incrementarea sau decrementarea valorii zecimale afișate de celula LED respective
Modul de operare normal (M=0): presupune defilarea textului către stânga cu viteza
specificată și supravegherea tastei “M” (în modul de operare normal celelalte taste sunt inactive)
23
1.8 SCHEMA HARDWARE FINALA
a0
b0
c0
d0 +5V +5V +5V +5V +5V +5V
e0
f0
g0
ca2
ca3
ca4
ca1
ca2
ca3
ca4
ca1
ca2
ca3
ca4
a2
a1 b2 SUS
b1 c2
c1 d2
d1 e2
e1 f2 linia1
f1 g2
g1 STANGA M DREAPTA
linia2
A[0..15] JOS
ROM
U4
D[0..7]
D0 2 19 A0 A0 D0
D0 Q0 A0 D0 linia3
D1 3 18 A1 A1 D1
D1 Q1 A1 D1
D2 4 17 A2 A2 D2
D2 Q2 A2 D2
D3 5 16 A3 A3 D3
U1 D3 Q3 A3 D3
D4 6 15 A4 A4 D4
D4 Q4 A4 D4
19 39 D0 D5 7 14 A5 A5 D5
col1
col2
col3
col4
col5
col6
XTAL1 XTAL1 P0.0/AD0 D5 Q5 A5 D5
38 D1 D6 8 13 A6 A6 D6
P0.1/AD1 D6 Q6 A6 D6
37 D2 D7 9 12 A7 A7 D7
P0.2/AD2 D7 Q7 A7 D7
18 36 D3 A8
XTAL2 XTAL2 P0.3/AD3 ALE A8
35 D4 11 A9
P0.4/AD4 LE A9
34 D5 1 A10
P0.5/AD5 OE A10
33 D6 A11
P0.6/AD6 A11
9 32 D7 74HCT573 A12
RST RST P0.7/AD7
A13
A12 ROM 10K
21 A8 A14
A13
2716 5X(2KX8) U10 CIRCUITE AMPLIFICARE
P2.0/A8 A14
22 A9 A15 D0 34 4
P2.1/A9 A15 D0 PA0 pa0 a0 a0
23 A10 D1 33 3
P2.2/A10 D1 PA1 pa1 b0 b0
29 24 A11 D2 32 2
PSEN PSEN P2.3/A11 D2 PA2 pa2 c0 c0
30 25 A12 D3 31 1
ALE ALE P2.4/A12 PSEN D3 PA3 pa3 d0 d0
31 26 A13 D4 30 40
EA P2.5/A13 PSEN D4 PA4 pa4 e0 e0
27 A14 D5 29 39
P2.6/A14 D5 PA5 pa5 f0 f0
28 A15 D6 28 38
P2.7/A15 D6 PA6 pa6 g0 g0
D7 27 37
D7 PA7
1 10
com.a1 P1.0 P3.0/RXD
2 11 CCT003 5 18
com.a2 P1.1 P3.1/TXD RD RD PB0 pb0 a1 a1
3 12 36 19
com.a3 P1.2 P3.2/INT0 WR WR PB1 pb1 b1 b1
4 13 A0 9 20
com.a4 P1.3 P3.3/INT1 A0 PB2 pb2 c1 c1
5 14 A1 8 21
P1.4 P3.4/T0 A1 PB3 pb3 d1 d1
6 15 35 22
P1.5 P3.5/T1 RST RESET PB4 pb4 e1 e1
7 16 23
P1.6 P3.6/WR WR PB5 pb5 f1 f1
8 17 6 24
P1.7 P3.7/RD RD RAM CS PB6
25
pb6 g1 g1
PB7
80C51
A0 D0 8255-1 14
A0 D0 PC0 pc0 a2 a2
A1 D1 15
A1 D1 PC1 pc1 b2 b2
A2 D2 16
A2 D2 PC2 pc2 c2 c2
A3 D3 17
A3 D3 PC3 pc3 d2 d2
A4 D4 13
A4 D4 PC4 pc4 e2 e2
A5 D5 12
A5 D5 PC5 pc5 f2 f2
A6 D6 11
A6 D6 PC6 pc6 g2 g2
A7 D7 10
A7 D7 PC7
A8
A8
A9
A9 com.a1 com.a1 ca1 ca1
A10 8255A
A10 com.a2 com.a2 ca2 ca2
A5
A11
A12
A11 RAM 16K com.a3 com.a3 ca3 ca3
A12 com.a4 com.a4 ca4 ca4
A13
A13
6216 8X(2KX8)
A14 CCT001
A14 U15
A15
A15
D0 34 4
+5V D0 PA0 linia1
D1 33 3
D1 PA1 linia2
D2 32 2
WR WR CS 8255A D2 PA2 linia3
D3 31 1
RD RD CS 8255B D3 PA3
D4 30 40
D4 PA4
D5 29 39
D5 PA5
RESET
D6 28 38
D6 PA6
D7 27 37
D7 PA7
CCT004
R1 C3 RD
5
RD PB0
18
col1
100 10uF 36 19
WR WR PB1 col2
9 20
C1 A0 PB2 col3
8 21
A1 PB3 col4
35 22
RST XTAL1 RST RESET PB4 col5
23
1
PB5 col6
10pF 6 24
CS PB6
R2 PB7
25
8.2k X1 C2 8255-2 14
PC0
2
15
XTAL2 PC1
CRYSTAL 16
PC2
FREQ=10.24MHz 10pF 17
PC3
13
PC4
12
PC5
11
PC6
10
PC7
8255A
24
Capitolul 2
Proiectarea Software:
Fig 34: Organigrama generală Program Principal Fig 35: Organigrama generală Program TIMER 0
25
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0800h
RAM1
0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0FFFh
0 0 Organigrame
2.1.1. 0 1 0 detaliate
0 0 Program
0 0 0 Principal
0 0 0 0 0 0 1000h
RAM2
0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 17FFh
0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1800h
RAM3
2.1.1.a
0 Programarea
0 0 1 circuitelor
1 de intrare/ieșire:
1 1 1 1 1 1 1 1 1 1 1 1FFFh
În microsistemul
0 0 1 0 prezentat
0 0 avem
0 0 2 0circuite
0 0 8255,0 01 și0 2. Circuitul
0 8255-1 operează
0 2000h
RAM4
ca port
0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 27FFh
paralel, din porturile PA, PB, PB se oferă informația de afișat către liniile displayului LED(grupul A și
0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 2800h
grupul B 0programate
0 1
ca
0
ieșiri),
1
circuitul 8255-2 furnizează
1 1 1 1 1 1 1 1 1 1
codul de baleiaj pentru
1 2FFFh
RAM5tastatura
multiplexată
0 pe
0 pinii
1 PA0,
1 PA1
0 și
0 PA2
0 (programate
0 0 0 0 ca 0 ieșiri
0 0în grupul
0 0 A 3000h
al portului) și primește
RAM6
informația0 de0citit1de pe
1 coloanele
0 1 1tastaturii
1 1 multiplexate
1 1 1 1 pe 1 𝑃𝐵
1 pinii ÷ 𝑃𝐵5 (grupul B al portului
1 0 37FFH
0 0
8255-2 programat 1ca intrări).
1 1 0 0 0 0 0 0 0 0 0 0 0 3800h
RAM7
0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3FFFh
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000h 8255(1) PA
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4001h 8255(1) PB
0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 4002h 8255(1) PC
0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 4003h 8255(1) RCC
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 4800h 8255(2) PA
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 4801h 8255(2) PB
0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 4802h 8255(2) PC
0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 4803h 8255(2) RCC
zona II zona III
Fig 36: Adresele pentru comanda circuitelor 8255
zona I
Programarea TIMER0:
Programarea întreruperilor pentru 5ms
Frecvența oscilatorului din cerințe, 10.24MHz. 𝐶/𝑇̅ =0 regim timer, frecvența oscilatorului local
10.24𝑀𝐻𝑧
este divizată cu 12 => 𝑓0 = = 853.333, (3)𝐻𝑧
12
1
Perioada aferentă frecvenței 𝑇0 = = 1.171𝑢𝑠
853.333,(3)𝐻𝑧
5000
Pentru numărarea secvenței de 5ms avem nevoie de ≈ 4270 impulsuri
1.171
26
Pentru canalul TIMER0 aleg modul 1 de operare, număra pe 16 biți, înainte, cu blocare la sfârșitul
numărării.
Constanta de încarcare in TH0,TL0 =>EF52h
(216 )65536 − 4270 = 61266 =>61266(10) = 𝐸𝐹52(ℎ)
Programare TMOD
Folosesc TIMER0 în modul 1
Biții TIMER1=0
Fig 38: Registrul TMOD
27
2.1.1.c Organigrama detaliată gestionare activități Program Principal
28
Supraveghere tastă “M”
Tratare Flash
29
Supraveghere apăsare taste și actiuni (pentru testarea tastelor trebuie testat și codul linie și codul
coloană)
Tratare taste
30
2.1.2 Organigrame detaliate TIMER0
31
Tratare afișaj multiplexat
32
Tratare tastatură multiplexată
Tratare timp
deplasare text
33
Tratare FLASH
34
2.2 Tabelul de variabile definitive
37
CJNE @R0,#09h,ETTX
MOV @R0,#00h ETTDREAPTA:
ETTX: MOV R0,#afis_bin1 MOV R0,#cod_linie_tasta
MOV R1,#afis_7sg1 CJNE @R0,#0FDh,ETT212
MOV R2,#00h MOV R0,#cod_col_tasta
MOV DPTR, #CONV7SG CJNE @R0,#3Eh,ETT212
ETTX2: MOV A,@R0 MOV A,#afis_7sg1
INC R0 ADD a,poz
MOVC A,@A+DPTR MOV R0,A
MOV @R1,A MOV @R0,mem_cel
INC R1 INC poz
INC R2 MOV A,poz
CJNE R2,#0Ch,ETTX2 CJNE A,#0FFh,ETTb
ETT212: MOV poz,#00h
LJMP ETT21 ETTb: CLR flash_on
ETTJOS: MOV R0,#cod_linie_tasta MOV A,#afis_7sg1
CJNE @R0,#0FBh,ETTSTANGA ADD a,poz
MOV R0,#cod_col_tasta MOV R0,A
CJNE @R0,#3Dh,ETTSTANGA MOV mem_cel,@R0
MOV A,#afis_bin1 MOV @R0,#11h
ADD A,poz MOV flash_contor,#6Eh
MOV R0,A
INC @R0 SUBRUTINATIMER0:
CJNE @R0,#09h,ETTX1 MOV TH0,#0EFh
MOV @R0,#00h MOV TL0,#52h
ETTX1: MOV R0,#afis_bin1 AFISAJMUX:
MOV R1,#afis_7sg1 MOV P1,#00h
MOV R2,#00h MOV A,contor_col
MOV DPTR, #CONV7SG CJNE A,#01H,ETTCOL2
ETTX21: MOV A,@R0 MOV A,afis_7sg1
INC R0 MOV DPTR,#4800H
MOVC A,@A+DPTR MOVX @DPTR,A
MOV @R1,A MOV A,afis_7sg5
INC R1 INC DPTR
INC R2 MOVX @DPTR,A
CJNE R2,#0Ch,ETTX21 MOV A,afis_7sg9
INC DPTR
ETTSTANGA: MOVX @DPTR,A
MOV R0,#cod_linie_tasta MOV P1,#01h
CJNE @R0,#0FDh,ETTDREAPTA JMP ETT_INC_CONTOR
MOV R0,#cod_col_tasta
CJNE @R0,#3Eh,ETTDREAPTA ETTCOL2:
MOV A,#afis_7sg1 MOV A,contor_col
ADD a,poz CJNE A,#02H,ETTCOL3
MOV R0,A MOV A,afis_7sg2
MOV @R0,mem_cel MOV DPTR,#4800H
DEC poz MOVX @DPTR,A
MOV A,poz MOV A,afis_7sg6
CJNE A,#0FFh,ETTa INC DPTR
MOV poz,#11h MOVX @DPTR,A
ETTa: CLR flash_on MOV A,afis_7sg10
MOV A,#afis_7sg1 INC DPTR
ADD a,poz MOVX @DPTR,A
MOV R0,A MOV P1,#02h
MOV mem_cel,@R0 JMP ETT_INC_CONTOR
MOV @R0,#11h
MOV flash_contor,#6Eh
38
ETTCOL3: ETTCONTOR15ms:
MOV A,contor_col MOV A,contor_15ms
CJNE A,#03H,ETTCOL4 CJNE A,#00h,ETT_TRAT_TIMP_DEPL
MOV A,afis_7sg3 MOVX A,@DPTR
MOV DPTR,#4800H ANL A,#3Fh
MOVX @DPTR,A CJNE A,cod_col_tasta,ETT7
MOV A,afis_7sg7 SETB sem_tasta
INC DPTR SETB tasta_apas
MOVX @DPTR,A MOV cod_col_tasta,A
MOV A,afis_7sg11 MOV cod_linie_tasta,cod_baleiaj
INC DPTR SJMP ETT_TRAT_TIMP_DEPL
MOVX @DPTR,A ETT7:
MOV P1,#04h CLR apas
JMP ETT_INC_CONTOR SJMP ETT_TRAT_TIMP_DEPL
ETTCOL4: ETTRELAX:
MOV A,afis_7sg3 JB relax,ETT9
MOV DPTR,#4800H MOVX A,@DPTR
MOVX @DPTR,A ANL A,#3Fh
MOV A,afis_7sg7 CJNE A,#3Fh,ETT_TRAT_TIMP_DEPL
INC DPTR SETB Relax
MOVX @DPTR,A MOV contor_15ms, #03h
MOV A,afis_7sg11
INC DPTR ETT9:
MOVX @DPTR,A MOV A,contor_15ms
MOV P1,#04h CJNE A,#00h,ETT_TRAT_TIMP_DEPL
JMP ETT_INC_CONTOR MOVX A,@DPTR
ANL A,#3Fh
ETT_INC_CONTOR: CJNE A,#3Fh,ETT10
INC contor_col CLR relax
MOV A,contor_col CLR apas
CJNE A,#05,TASTMUX CLR tasta_apas
MOV contor_col,#01h SJMP ETT_TRAT_TIMP_DEPL
DEC contor ETT10:
MOV A,contor CLR relax
CJNE A,#00h,ETT_TRAT_TIMP_DEPL SJMP ETT_TRAT_TIMP_DEPL
TASTMUX: ETT_TRAT_TIMP_DEPL:
JB tasta_apas,ETTRELAX DEC contor_t_depl
JB apas,ETTCONTOR15ms MOV A, contor_t_depl
MOV A,cod_baleiaj CJNE A,#00h, ETT_TRATARE_FLASH
MOV DPTR,#4801H SETB time_depl
MOVX @DPTR,A MOV contor_t_depl, #30h
MOV DPTR,#4801h
MOVX A,@DPTR ETT_TRATARE_FLASH:
ANL A,#3Fh MOV A, flash_contor
CJNE A,#3Fh,ETT6 CJNE A,#00h,ETT11
MOV A,cod_baleiaj SJMP FINAL
RL A ETT11:
CJNE A,#0F7h,ETT_TRAT_TIMP_DEPL DEC flash_contor
MOV cod_baleiaj,#0FEh MOV A, flash_contor
SJMP ETT_TRAT_TIMP_DEPL CJNE A,#00h,FINAL
ETT6: SETB sem_flash
MOV cod_col_tasta,A
MOV contor_15ms, #03h FINAL:
SETB Apas RETI
SJMP ETT_TRAT_TIMP_DEPL END
39
40