Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

47 Zeilen
843B

  1. Inverter::Inverter()
  2. {
  3. a=b=0; // nix angschlossen
  4. actionFlag=false;
  5. }
  6. Inverter::~Inverter() {}
  7. void Inverter::ChangeInput (State s, int pin)
  8. {
  9. // Sorge dafuer, dass Gatter neu berechnet wird, wenn
  10. // alle Zustaende der Eingaenge (Draehte) festliegen
  11. if (!actionFlag)
  12. {
  13. Sim.StoreCircuitEvent(*this);
  14. actionFlag=true;
  15. }
  16. }
  17. void Inverter::Action ()
  18. {
  19. // Lese Eingangssignale
  20. State A = a->GetState();
  21. State Output=unknown;
  22. // Wertetabelle
  23. if (A==low ) Output=high;
  24. if (A==high) Output=low;
  25. if (b!=0) b->ChangeState(Sim.GetTime()+3,Output);
  26. // erlaube neue Auswertung
  27. actionFlag=false;
  28. }
  29. void Inverter::ConnectInput (Wire& w, int pin)
  30. {
  31. // Wird von Connect-Funktion des Drahtes aufgerufen
  32. a = &w;
  33. }
  34. void Inverter::ConnectOutput (Wire& w, int pin)
  35. {
  36. // Wird von Connect-Funktion des Drahtes aufgerufen
  37. b = &w;
  38. }