Schliesst man einen Taster direkt an einen Zähler an, kann erkannt werden das ein Taster nicht einfach nur schließst, sondern mehrfach hin und her prellt.
D.h. statt eines Impulses mehrere Impulse erzeugt:
Das RS-FF aus NANDS ist der Taktgeber für einen Zähler 0..15 lowaktive Denkweise:
In der Ruhestellung liegt an TaktR Pin16 low, FF ist 0 Beim Tastendruck wird das FF durch Low an TaktR gesetzt. |
DECLARATIONS "********** Ein- und Ausgänge ******************************* TaktS,TaktR PIN 15,16; "Takt-FF-Setzen und Takt-FF-Rücksetzen sind "die beiden Tasterkontakte von T1 TaktQ,TaktQN PIN 3,4; "Takt-FF-Ausgang Q, Takt-FF-Ausgang QN ctrbit3..ctrbit0 PIN 7,8,9,10 ISTYPE'BUFFER,REG'; "4 Zählerausgänge ctr = [ctrbit3..ctrbit0]; "Zusammenfassung zum Zähler 0 bis 15 EQUATIONS "************ Logikgleichungen ********************************* TaktQ = !(TaktS & TaktQN); "RS-Flipflop zur Tasterentprellung TaktQN = !(TaktR & TaktQ ); ctr.d = ctr.q + 1; "Zähler 0 bis 15 ctr.clk = TaktQ; "Zähler erhält Takt vom RS-Flipflop TEST_VECTORS "********** Simulation ************************************** ( [TaktS,TaktR] -> TaktQ); "Eingänge -> Ausgänge @repeat 9 {[1 ,0 ] -> .x.; "Taster losgelassen, Grundstellung [0 ,1 ] -> .x.; "Simulation des Prellens: [1 ,1 ] -> .x.; "Taster federt (prellt) 3 mal [0 ,1 ] -> .x.; "beim Drücken [1 ,1 ] -> .x.; [0 ,1 ] -> .x.; [1 ,0 ] -> .x.; "Taster loslassen [1 ,1 ] -> .x.; } "Taster federt (prellt) END