Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

50 рядки
901B

  1. Nor::Nor()
  2. {
  3. a=b=c=0; // nix angschlossen
  4. actionFlag=false;
  5. }
  6. Nor::~Nor() {}
  7. void Nor::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 Nor::Action ()
  18. {
  19. // Lese Eingangssignale
  20. State A = a->GetState();
  21. State B = b->GetState();
  22. State Output=unknown;
  23. // Wertetabelle
  24. if (A==low && B==low) Output=high;
  25. if (A==high|| B==high) Output=low;
  26. // Setze Draht
  27. if (c!=0) c->ChangeState(Sim.GetTime()+3,Output);
  28. // erlaube neue Auswertung
  29. actionFlag=false;
  30. }
  31. void Nor::ConnectInput (Wire& w, int pin)
  32. {
  33. // Wird von Connect-Funktion des Drahtes aufgerufen
  34. if (pin==0) a = &w;
  35. if (pin==1) b = &w;
  36. }
  37. void Nor::ConnectOutput (Wire& w, int pin)
  38. {
  39. // Wird von Connect-Funktion des Drahtes aufgerufen
  40. c = &w;
  41. }