Sunteți pe pagina 1din 8

Numărător de evenimente folosind

automatul programabil AP MICRO


(exemplu)

Temă
Să se realizeze sinteza unui numărător de evenimente externe folosind AP MICRO.
Numărul iniţial de evenimente (selectabil de la 1 la 9) ce trebuie contorizate va fi
încărcat în numărător prin poziţionarea a 4 comutatoare de intrare, combinaţie validată
de operator prin apăsarea unui buton de tip impuls. Evenimentele sunt marcate prin
trecerea la 1 a unui semnal extern. Starea numărătorului va fi afişată permanent pe un
afişor cu 7 segmente.

1. Structura bloc şi alocarea variabilelor

I1

CD E1
I0 CL AF 7s
I6 D QD
NUM DCD
I5 C QC
I4 B QB
I3 A LD QA
E7
I2

INTRĂRI IEŞIRI
I0 Comandă Clear E0 Semn. Eroare Load
I1 Semnal de contorizat E1
I2 Comandă Load E2
I3 E3 Ieşiri comandă afişor cu
I4 Intrări de încărcare E4 7 segmente
I5 (I6 = MSB) E5 (a - g = E1 - E7)
I6 E6
E7

Semnalul CL (Clear) aplicat prin canalul de intrare I0 de la un buton de tip impuls nu


trebuie derivat; automatul va parcurge un program de tip Reset atât timp cât butonul
este apăsat (I0 = 1).
Semnalul CD (Count Down) care trebuie contorizat, se va deriva (prin introducerea
unor stări inactive) pentru a se detecta numai fronturile pozitive ale acestuia; semnalul
I1 este considerat numai dacă numărătorul nu se află în starea 0 (M0).
Semnalul LD (Load), activ pe 1, va fi operaţional (va determina parcurgerea
programului de încărcare) numai dacă numărătorul cu decrementare se află în starea 0
(marcată prin locaţia de memorie M0).
Semnalizarea intermitentă "Eroare Load" va indica faptul că la intrările de date este
aplicată o combinaţie interzisă (care desemnează un număr mai mare ca 9).

-1-
2. Organizarea generală a programului

RUN

1 I0 0
Clear
I1 I6 ... I3

0 I2 1
Load

RES CD LD

DCD
AF

J0

3. Reprezentarea programului Load (Încărcare)

Condiţie Load: I2 ⋅ M0

Condiţii de înscriere a locaţiilor de memorie la încărcare:


M0 = I6 ⋅ I5 ⋅ I4 ⋅ I3

M1 = I6 ⋅ I5 ⋅ I4 ⋅ I3 I3
M2 = I6 ⋅ I5 ⋅ I4 ⋅ I3 I4

M3 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M0 M1 M3 M2
M4 = I6 ⋅ I5 ⋅ I4 ⋅ I3 M4 M5 M7 M6 I6·I5

M5 = I6 ⋅ I5 ⋅ I4 ⋅ I3 X X X X I6·I4
M6 = I6 ⋅ I5 ⋅ I4 ⋅ I3
 M8 M9 X X
 M7 = I6 ⋅ I5 ⋅ I4 ⋅ I3 I5 I6
M8 = I6 ⋅ I5 ⋅ I4 ⋅ I3

M9 = I6 ⋅ I5 ⋅ I4 ⋅ I3

Semnalizare intermitentă "Eroare Load" (vezi diagrama Karnaugh):

E0 = I2 ⋅ I6 ⋅ (I5 + I4) ⋅ T32

-2-
4. Reprezentarea programului CD (Count Down)

I1
M9 M8
I1
I1
M18 M7
I1
I1
M17 M6

I1
M1
I1
I1
M11 M0

5. Reprezentarea programului DCD/AF (decodificare şi afişare)

Corespondenţa stare - ieşire:


E1 E2 E3 E4 E5 E6 E7
E1 M0 1 1 1 1 1 1 0
M1 0 1 1 0 0 0 0
E6 E2 M2 1 1 0 1 1 0 1
E7
M3 1 1 1 1 0 0 1
E5 E3 M4 0 1 1 0 0 1 1
M5 1 0 1 1 0 1 1
E4 M6 1 0 1 1 1 1 1
M7 1 1 1 0 0 0 0
M8 1 1 1 1 1 1 1
M9 1 1 1 1 0 1 1

Considerând valorile de 0, rezultă următoarele expresii pentru funcţiile de ieşire:

E1 = M1 + M4

E2 = M5 + M6
E3 = M2

E4 = M1 + M4 + M7
E5 = M1 + M3 + M4 + M5 + M7 + M9

E6 = M1 + M2 + M3 + M7

E7 = M0 + M1 + M7
-3-
6. Programul în limbaj AP MICRO

Adr.MP Operaţie Operand Comentariu


0000 LD I0 Test buton Clear
1 JC 0161 Salt la RES
2 LD I2 Test buton Load
3 AND M0 Şi numărător în starea 0
4 JC 0076 Salt la LD
5 LD M0 Test starea 0
6 JC 0180 Salt la DCD/AF (peste numărare)
7 LD M9 Trecere M9 - M8
8 AND I1
9 S M8
0010 R M9
1 LD M8 Trecere M8 - M7
2 ANDC I1
3 S M18
4 LD M18
5 AND I1
6 S M7
7 R M18
8 R M8
9 LD M7 Trecere M7 - M6
0020 ANDC I1
1 S M17
2 LD M17
3 AND I1
4 S M6
5 R M17
6 R M7
7 LD M6 Trecere M6 - M5
8 ANDC I1
9 S M16
0030 LD M16
1 AND I1
2 S M5
3 R M16
4 R M6
5 LD M5 Trecere M5 - M4
6 ANDC I1
7 S M15
8 LD M15
9 AND I1
0040 S M4
1 R M15
2 R M5

-4-
3 LD M4 Trecere M4 - M3
4 ANDC I1
5 S M14
6 LD M14
7 AND I1
8 S M3
9 R M14
0050 R M4
1 LD M3 Trecere M3 - M2
2 ANDC I1
3 S M13
4 LD M13
5 AND I1
6 S M2
7 R M13
8 R M3
9 LD M2 Trecere M2 - M1
0060 ANDC I1
1 S M12
2 LD M12
3 AND I1
4 S M1
5 R M12
6 R M2
7 LD M1 Trecere M1 - M0
8 ANDC I1
9 S M11
0070 LD M11
1 AND I1
2 S M0
3 R M11
4 R M1
5 J 0180 Salt la DCD/AF
6 R M0 Program LD
7 R M1
8 R M2
9 R M3
0080 R M4
1 R M5
2 R M6
3 R M7
4 R M8
5 R M9
6 R M11
7 R M12
8 R M13
9 R M14
0090 R M15
1 R M16
2 R M17

-5-
3 R M18
4 R M19
5 LDC I6
6 ANDC I5
7 ANDC I4
8 ANDC I3
9 S M0
0100 LDC I6
1 ANDC I5
2 ANDC I4
3 AND I3
4 S M1
5 S M11
6 LDC I6
7 ANDC I5
8 AND I4
9 ANDC I3
0110 S M2
1 S M12
2 LDC I6
3 ANDC I5
4 AND I4
5 AND I3
6 S M3
7 S M13
8 LDC I6
9 AND I5
0120 ANDC I4
1 ANDC I3
2 S M4
3 S M14
4 LDC I6
5 AND I5
6 ANDC I4
7 AND I3
8 S M5
9 S M15
0130 LDC I6
1 AND I5
2 AND I4
3 ANDC I3
4 S M6
5 S M16
6 LDC I6
7 AND I5
8 AND I4
9 AND I3
0140 S M7
1 S M17

-6-
2 LD I6
3 ANDC I5
4 ANDC I4
5 ANDC I3
6 S M8
7 S M18
8 LD I6
9 ANDC I5
0150 ANDC I4
1 AND I3
2 S M9
3 S M19
4 LD I5 Semn. Eroare Load
5 OR I4
6 AND I6
7 AND I2
8 AND T32
9 STO E0
0160 J 0180 Salt la DCD/AF
1 S M0 Program RES
2 R M1
3 R M2
4 R M3
5 R M4
6 R M5
7 R M6
8 R M7
9 R M8
0170 R M9
1 R M11
2 R M12
3 R M13
4 R M14
5 R M15
6 R M16
7 R M17
8 R M18
9 R M19
0180 LD M1 Program DCD/AF
1 OR M4
2 STOC E1
3 LD M5
4 OR M6
5 STOC E2
6 LD M2
7 STOC E3
8 LD M1
9 OR M4

-7-
0190 OR M7
STOC E4
LD M1
OR M3
OR M4
OR M5
OR M7
OR M9
STOC E5
LD M1
OR M2
OR M2
OR M7
STOC E6
LD M0
OR M1
OR M7
STOC E7
J 0000 Buclare program

-8-

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