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