PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : timer programm umschreiben



Gary
04.06.2009, 19:57
hi,

ich bin neu hir!

ich habe jez folgendes programm geschrieben und funzt auch so wie von mir gedacht: ich betätige den taster und der timer zählt von 0 bis 3 und bleibt stehen. nun möchte ich manuel mit dem taster von 0 - 3 schalten.

kann mir einer sagen wie man das programmiert?^^ denn alles was ich versucht habe klapt nicht



$regfile = "m8def.dat"
$framesize = 60
$swstack = 60
$hwstack = 60
$crystal = 8000000

$baud = 9600

Config Portb.0 = Output
Led Alias Portb.0
Config Pind.7 = Input
Taster Alias Pind.7
Portd.7 = 1
Config Portc.5 = Output
Led1 Alias Portc.5
Config Portc.4 = Output
Led2 Alias Portc.4
Config Portc.3 = Output
Led7 Alias Portc.3
Config Portc.2 = Output
Led3 Alias Portc.2
Config Portc.1 = Output
Led4 Alias Portc.1
Config Portc.0 = Output
Led6 Alias Portc.0
Config Portb.1 = Output
Led5 Alias Portb.1

Dim Angeschaltet As Bit

Do

If Taster = 0 And Angeschaltet = 0 Then
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 0
Angeschaltet = 1
Waitms 1000
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 0
Angeschaltet = 1
Waitms 1000
Led1 = 1
Led2 = 0
Led3 = 1
Led4 = 1
Led5 = 0
Led6 = 1
Led7 = 1
Angeschaltet = 1
Waitms 1000
Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1
Waitms 1000
Elseif Taster = 0 And Angeschaltet = 1 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0
Angeschaltet = 0
Waitms 1000
End If
Waitms 100
Loop


End


PS: kann mir ma einer sagen wie ich die programme in diese schichen 2 zeilen fenster pachen kann, dann ist der bericht nich immer so riesig

Thomas$
04.06.2009, 20:13
warum setzt du Angeschaltet auf 1 immer wieder?
was macht das programm den jetzt falsch




programm........
und dann [/code]
gib mal dann das ganze programm rein

tante edit port.7=1 am anfang vor der do loop

Gary
04.06.2009, 20:28
da hab ich jez iwi nich drauf geachtet...

wiso funktioniert es trozdem?^^

falsch macht das programm was ich da gepostet habe nichts, ich schaffs nur nich das programm so zu ersweitern das ich mit dem taster nicht den count down aktivire, sondern das man die nummer manuell mit dem taster ohne einen timer weiterschalten kann

Thomas$
04.06.2009, 20:32
kann das sein das der taster nutzlos ist? es wird nur gefragt ob taster=0 ist und nie 1

Gary
04.06.2009, 20:36
also: es passiert nix, sobalt ich den knopf betätige zählt er von 0-3 und bleibt bei 3 stehen

will aber nicht von 0-3 gezählt haben sondern will von 0-3 mit dem taster selber schalten

Thomas$
04.06.2009, 20:41
Elseif Taster = 1 And Angeschaltet = 1 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0
Angeschaltet = 0
Waitms 1000
End If
so müsste es gehen wozu hast du die variable Angeschaltet

Gary
04.06.2009, 20:58
wozu hast du die variable Angeschaltet

weil ich noch ein blutiger anfänger bin^^

sag mir mal bitte was eine variable ist ich habe keine ahnung.

also das programm tut genau das selbe wie das oben



$regfile = "m8def.dat"
$framesize = 60
$swstack = 60
$hwstack = 60
$crystal = 8000000

$baud = 9600

Config Portb.0 = Output
Led Alias Portb.0
Config Pind.7 = Input
Taster Alias Pind.7
Portd.7 = 1
Config Portc.5 = Output
Led1 Alias Portc.5
Config Portc.4 = Output
Led2 Alias Portc.4
Config Portc.3 = Output
Led7 Alias Portc.3
Config Portc.2 = Output
Led3 Alias Portc.2
Config Portc.1 = Output
Led4 Alias Portc.1
Config Portc.0 = Output
Led6 Alias Portc.0
Config Portb.1 = Output
Led5 Alias Portb.1

Dim Angeschaltet As Bit

Do

If Taster = 0 And Angeschaltet = 0 Then
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 0
Angeschaltet = 1
Waitms 500
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 0
Angeschaltet = 0
Waitms 500
Led1 = 1
Led2 = 0
Led3 = 1
Led4 = 1
Led5 = 0
Led6 = 1
Led7 = 1
Angeschaltet = 1
Waitms 500
Led1 = 1
Led2 = 0
Led3 = 0
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 1
Angeschaltet = 0
Waitms 500
Elseif Taster = 1 And Angeschaltet = 1 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 0
Led6 = 0
Led7 = 0
Angeschaltet = 1
Waitms 500
End If
Loop


End

Thomas$
04.06.2009, 21:03
If taster=1 then Angeschaltet=1
If Angeschalten=1 an taster=0 then Angeschaltet=0 :Zaehler=Zaehler+1

If Zaeler=1 then
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 0
else if zaeler=2 then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 0
else if zaehler=3 then
Led1 = 1
Led2 = 0
Led3 = 1
Led4 = 1
Led5 = 0
Led6 = 1
Led7 = 1
else if zaehler=4 then Zaehler=0
endif

Gary
04.06.2009, 21:07
und so kann ich manuel die zahl weiterschalnten?

Thomas$
04.06.2009, 21:09
ich erst grad verstanden was du mit dem taster machen willst. ich eine verwendung gefunden für angeschaltet.
eine Variable ist ähm z.B. x= 10 dann ist x eine Variable der den wert 10 zugewisen wurde wenn man dann schreibt x=11 dann wird x elf zugewiesen

wer es genau wissen will guckt da rein http://de.wikipedia.org/wiki/Variable_(Programmierung)

aber wenn man sie mit dim deklatiert gibt es immer wieder unterschiede in den variablen typen (string, integer, byte, bit .....) müste irgendwo mal ne zusammen fassung bei bascom dabei sein

Thomas$
04.06.2009, 21:12
so ähnlich kann aber nicht genau sagen ob es geht ich hab es nicht getestet. irgendwie überschneiden wir unst ständig

Gary
04.06.2009, 21:27
jez musde mir nurnoch sagen wie ich "an taster" und "zaeler" in meine syntax bekomme^^ der kennt die begriffe ja nicht.

Thomas$
04.06.2009, 21:31
Config Pind.7 = Input
Taster Alias Pind.7
Portd.7 = 1


taster müsste er kennen

und zaehler mit dim zaehler as integer

Gary
04.06.2009, 21:36
If Angeschalten=1 an taster=0 then Angeschaltet=0 :Zaehler=Zaehler+1


soll das "an" ein "and" sein?

Gary
04.06.2009, 21:55
ok mein programm siet wie folgt aus



$regfile = "m8def.dat"
$framesize = 60
$swstack = 60
$hwstack = 60
$crystal = 8000000

$baud = 9600

Config Portb.0 = Output
Led Alias Portb.0
Config Pind.7 = Input
Taster Alias Pind.7
Portd.7 = 1
Config Portc.5 = Output
Led1 Alias Portc.5
Config Portc.4 = Output
Led2 Alias Portc.4
Config Portc.3 = Output
Led7 Alias Portc.3
Config Portc.2 = Output
Led3 Alias Portc.2
Config Portc.1 = Output
Led4 Alias Portc.1
Config Portc.0 = Output
Led6 Alias Portc.0
Config Portb.1 = Output
Led5 Alias Portb.1

Dim Angeschaltet As Bit
Dim Zaehler As Integer

Do
If Taster = 1 Then
Angeschaltet = 1
If Angeschaltet = 1 And Taster = 0 Then
Angeschaltet = 0 : Zaehler = Zaehler + 1
If Zaehler = 1 Then
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 0
Else If Zaehler = 2 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 0
Else If Zaehler = 3 Then
Led1 = 1
Led2 = 0
Led3 = 1
Led4 = 1
Led5 = 0
Led6 = 1
Led7 = 1
Else If Zaehler = 4 Then
Zaehler = 0
End If
Loop

End


aber irgentwas ist noch mit der syntax, der compiller akzeptiert das nicht

Thomas$
05.06.2009, 14:32
und wo? (must einfach dort wo die fehler gezeigt werden duobleclick und markiert er die zeile mit fehler rot)


ich glaub ich hab ihn gefunden
Do
If Taster = 1 Then Angeschaltet = 1
If Angeschaltet = 1 And Taster = 0 Then
Angeschaltet = 0
Zaehler = Zaehler + 1
end if
If Zaehler = 1 Then

noch ein edit
es sind keine syntax fehler mehr drin weis aber nich ob es geht sollte es aber



$regfile = "m8def.dat"
$framesize = 60
$swstack = 60
$hwstack = 60
$crystal = 8000000

$baud = 9600

Config Portb.0 = Output
Led Alias Portb.0
Config Pind.7 = Input
Taster Alias Pind.7
Portd.7 = 1
Config Portc.5 = Output
Led1 Alias Portc.5
Config Portc.4 = Output
Led2 Alias Portc.4
Config Portc.3 = Output
Led7 Alias Portc.3
Config Portc.2 = Output
Led3 Alias Portc.2
Config Portc.1 = Output
Led4 Alias Portc.1
Config Portc.0 = Output
Led6 Alias Portc.0
Config Portb.1 = Output
Led5 Alias Portb.1

Dim Angeschaltet As Bit
Dim Zaehler As Integer

Do
If Taster = 1 Then Angeschaltet = 1
If Angeschaltet = 1 And Taster = 0 Then
Angeschaltet = 0
Zaehler = Zaehler + 1
End If
If Zaehler = 1 Then
Led1 = 1
Led2 = 1
Led3 = 1
Led4 = 1
Led5 = 1
Led6 = 1
Led7 = 0
End If
If Zaehler = 2 Then
Led1 = 0
Led2 = 0
Led3 = 0
Led4 = 0
Led5 = 1
Led6 = 1
Led7 = 0
End If
If Zaehler = 3 Then
Led1 = 1
Led2 = 0
Led3 = 1
Led4 = 1
Led5 = 0
Led6 = 1
Led7 = 1
End If
If Zaehler = 4 Then Zaehler = 0

Loop

Gary
06.06.2009, 00:00
jo funzt, danke