PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit impulszählung



manfred.pignitter
23.05.2006, 20:03
Hallo!

Ich möchte mittels Tastendruck eine Zahl um 1 erhöhen. Mein Problem: solange ich die Taste gedrückt halte wird aufwärts gezählt. Es sollte aber pro Tastendruck nur um 1 erhöht werden.
Wascheinlich ein Simples Problem aber für einen Anfänger :-k
Danke im voraus.

Vitis
23.05.2006, 20:54
Wo Taster angeschlossen? INT0 / 1
Timer, einfach Port oder wie ?
Ohne genauere Angaben kann man Dir nicht gut helfen.

manfred.pignitter
23.05.2006, 21:09
Mein Taster ist bei INT0 angeschlossen. (Ist ein fertiges Programmierboard).

Und das ist mein Quelltext:
Dim A As Byte

Anfang:
A = 0
Do
If Pind.3 = 0 Then A = A + 1
Cls
Lcd " " ; A
Waitms 250
Loop

Vitis
23.05.2006, 22:14
aha ... schau mal unter config int0 in die Hilfe:

Syntax

CONFIG INTx = state

Where X can be 0,1 and 4 to 7 in the MEGA chips.

Remarks:
state
LOW LEVEL to generate an interrupt while the pin is held low. Holding the pin low will generate an interrupt over and over again.

FALLING to generate an interrupt on the falling edge.
RISING to generate an interrupt on the rising edge.
CHANGE to generate an interrupt on the change of the edge.

ergo :

config int0=falling

der Int wird ausgelöst wenn int0 fällt und nur dann ;)

Lord Crumb
23.05.2006, 23:22
Hallo
er benutzt den Interrupt ja nicht probieres einfach so

A = 0
Do
If Pind.3 = 0 Then
Bitwait Pind.3, Set ' die zeile musst du einfügen
A = A + 1
Cls
Lcd " " ; A
Loop
Das Programm wartet solange bis Pind.3 wieder High ist.