MODULE Abstimm2
"Abstimmungsanzeige
"Die Anzahl der Ja-Stimmen (1) von 4 Teilnehmern (a,b,c,d) wird ermittelt
"und als Dualzahl und als Leuchtband (Balkenanzeige) dargestellt.
DECLARATIONS "********* Ein- und Ausgänge ********************************
a,b,c,d PIN 25,26,27,28; "4 Teilnehmer (DIP-Schalter)
d2..d0 PIN 3,4,5 ISTYPE'BUFFER,COM'; "obere 3 LEDs für Dualzahl
l4..l1 PIN 7,8,9,10 ISTYPE'BUFFER,COM'; "untere 4 LEDs für Leuchtband
"********************* SET Deklarationen *********************************
abstimmer = [d,c,b,a]; "Zusammenfassung der Teilnehmer
dualzahl = [d2..d0]; "Anzeige einer Dualzahl
leuchtband = [l4..l1]; "Anzeige als Leuchtband
Zahla = [0,0,a]; "Für die spätere Addition notwendig
Zahlb = [0,0,b]; "Aus 1-Bit-Zahlen werden 3-Bit-Zahlen
Zahlc = [0,0,c];
Zahld = [0,0,d];
EQUATIONS "************ Verknüpfungen *************************************
dualzahl = Zahla + Zahlb + Zahlc + Zahld; "Anzahl Ja-Stimmen ermitteln
"Bei Additionen müssen alle Beteiligten die gleiche Anzahl von Bits haben
"bei dualzahl = a + b + c wird nur eine 1-Bit-Addition ausgeführt,
" d.h. nur d0 erhält ein richtiges Ergebnis, d2 und d3 nicht!
when (dualzahl>0) then l1 = 1; "Anzahl der Ja-Stimmen als
when (dualzahl>1) then l2 = 1; "Leuchtband anzeigen
when (dualzahl>2) then l3 = 1;
when (dualzahl>3) then l4 = 1;
" alternativ möglich:
" l1 = (dualzahl>0);
" l2 = (dualzahl>1);
" l3 = (dualzahl>2);
" l4 = (dualzahl>3);
TEST_VECTORS "************* Simulation ************************************
(abstimmer -> leuchtband); "Eingänge -> Ausgänge
0 -> .x.; "Anfangswert
@const i = 0; "Angangswert der Zählvariablen
@repeat 16 "alle 16 Möglichkeiten testen
{ i -> .x.;
@const i = i+1; "Zählvariable um 1 erhöhen
}
END