BID = 109650
avusgalaxy Gesprächig
  
Beiträge: 130
|
Hallo Leute.
Habe folgendes Problem: Möchte, daß wenn ich den Taster an P3.2 drücke, der Interrupt aufgerufen wird. Das funktioniert ja super. Doch wenn ich den Taster zu lange drücke, dann bleibt er solange in dieser Schleife, bis ich die Taste wieder loslasse. Dadurch zählt dann R1 vielleicht zweimal oder sechsmal...keine Ahnung.
Gibt es irgendeinen Befehl, bei dem ich sagen kann, daß wenn der Taster noch gedrückt ist, das Programm anhält? Oder einen Befehl, daß die Interupptfreigabe erst dann wieder da ist, wenn ich den Taster loslasse?
Danke im voraus
Gruß Avus
Init:
Taster BIT P3.2
MOV R0,#00h
MOV R1,#00h
SETB EA
SETB EX0
(0003h): ;Einsprungadresse von EX0
INC R1
IF R1 = #04h THEN MOV R1,#00h
RETI ;Ende der Interruptroutine
Init:
Taster BIT P3.2
MOV R0,#00h
MOV R1,#00h
SETB EA
SETB EX0
Programm:...............
[ Diese Nachricht wurde geändert von: avusgalaxy am 3 Okt 2004 16:29 ]
|
BID = 109864
Midnight Stammposter
   
Beiträge: 256
|
Ich habe um solche Probleme zu vermeiden als erstes in der Interruptroutine den entsprechenden Interrupt deaktiviert...
Dann halt abgewartet bist der dann nur noch Port deaktiviert ist, entsrechende Dinge durchgeführt, Interrupt wieder an, und per Return aus der Routine....
Gruß
Simon
|