Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

49 行
879B

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