PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm noch nicht perfekt (Interrupts?)



hardstyleroxx
01.10.2005, 16:09
Hey,

ich möchte gerne mit 2 tastern 2 verschiedene Programmabläufe ein und ausschalten können. Funktioniert auch soweit alles, blos muss ich beim aussschalten den Taster immer ziemlich lange gedrückt halten weil er erst das Programm zu ende laufen lässt. Ich denke mal das fehlen Interrupts oder? Wäre nett wenn jemand mal den Code Optimieren könnte bzw. das fehlene hinzufügen.


$regfile = M8def.dat
$crystal = 3638400

Ddrd = &B11100000
Portd = &B00001100

Declare Sub An
Declare Sub Aus
Declare Sub Prg1
Declare Sub Prg2


Dim T1 As Bit
Dim T2 As Bit


Do

Debounce Pind.2 , 0 , An , Sub
Debounce Pind.3 , 0 , Aus , Sub

If T1 = 1 Then
Gosub Prg1
End If

If T2 = 1 Then
Gosub Prg2
End If

Loop
End

An:
Toggle T1
Return

Aus:
Toggle T2
Return

Prg1:

Portd.5 = 1
Waitms 100
Portd.5 = 0
Portd.6 = 1
Waitms 100
Portd.6 = 0
Portd.7 = 1
Waitms 100
Portd.7 = 0

Return

Prg2:
Portd.5 = 1
Waitms 400
Portd.5 = 0
Portd.6 = 1
Waitms 400
Portd.6 = 0
Portd.7 = 1
Waitms 400
Portd.7 = 0

Return


Danke schonmal!

x-ryder
01.10.2005, 20:53
hä? was hastn du fürne anwendung? willst du das programm unterbrechen können?

PicNick
02.10.2005, 10:05
Ein Interrupt würde so nix nutzen, du mußt zwar nicht so lange drücken, aber WARTEN auf Reaktion mußt du genausolange.
Der Tod sind die verstreuten WaitmS.

x-ryder
02.10.2005, 10:43
neeee, du kannst das ja durch an und abschalten der ints an bestimmten stellen abbrechen das programm, das geht wunderbar mit interrupts

hardstyleroxx
03.10.2005, 11:35
Und wie muss nun das programm aussehen, damit es funktioniert? Wenn ich Taster 1 drücke soll Prg1 angehen, beim nochmaligen drücken soll es sofort ausgehen (Auch wenns gerade noch am durchlaufen ist!).