PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : einfache Frage zu IF Bedingungen



Testus2K
01.07.2007, 00:02
Hallo
ich hab endlich die schaltung so weit fertig, das ich sie einsetzen könnte.
ein Port soll geoffnet werden, wenn ein bestimmtes RC5 Signal kommt.
Ich komm nur mit den Bedingungen nicht zu recht, bin eigentlich Pascaller, könnt ihr mir sagen, wie das richtig geht?


$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
$lib "mcsbyte.lbx"
Config Pind.2 = Input

Config Portb.1 = Output
Portb.1 = 0

Portd.2 = 1

Config Rc5 = Pind.2


Enable Interrupts


Dim Address As Byte , Command As Byte

Print "Waiting for RC5..."


Do

Getrc5(address , Command)

If Address <> 255 Then

Command = Command And &B01111111

Print Address ; " " ; Command

If Address = 30 And Command = 61
Then
Portb.1 = 1
Waitms 100
Portb.1 = 0
End If


End If

Loop

End

da ich im Code nichts makieren kann pack ich den hier nochmal so hin:

Getrc5(address , Command)

If Address <> 255 Then

Command = Command And &B01111111

Print Address ; " " ; Command

If Address = 30 And Command = 61
Then
Portb.1 = 1
Waitms 100
Portb.1 = 0
End If


End If

Die Probleme betreffen den Fetten Teil

Danke schonmal

coCo
01.07.2007, 00:08
Hi,
was genau ist denn das Problem? Das hast du glaub ich in deinem Beitrag vergessen.

MfG

adrisch
01.07.2007, 00:27
ich glaub so müsste es gehen:


If Address = 30 And Command = 61 Then
Portb.1 = 1
Waitms 100
Portb.1 = 0
End If

Steffen44
01.07.2007, 00:48
was hast du denn für ein Gerät das bei dir Adresse 30 benutzt wird ?

Bei mir läuft alles über Addresse 0.

Kleines Codebeispiel :



'RC5 Receiver
Getrc5(address , Command)
If Address = 0 Then
Command = Command And &B01111111
Print #4 , Address ; " " ; Command 'wird benötigt um den Code zu sehen welche Taste gerade empfangen wurde

Portg.0 = 1 'LED ein im IR Receiver
Portc.5 = 1 'LED unter µC ein
Waitms 200
Portg.0 = 0 'LED aus im IR Receiver
Portc.5 = 0 'LED unter µController aus

'Ein
If Command = 13 And Di9_schaltzustand = "0" And Di11_schaltzustand = "0" Then
Sound Portl.4 , 500 , 450
Porth.3 = 1
End If

'Aus
If Command = 12 Or Di9_schaltzustand = "1" Or Di11_schaltzustand = "1" Then
Sound Portl.4 , 400 , 450
Sound Portl.4 , 300 , 450
Sound Portl.4 , 200 , 450
Sound Portl.4 , 100 , 450
Porth.3 = 0
End If



Gruß
Steffen

Testus2K
01.07.2007, 13:17
so wie der code jetzt ist bekomme ich Folgende Fehlermeldung (siehe Anhang)
Ich bin davon ausgegangen, dass ich die Bedingung vielleicht anders schreiben muss, aber irgendeinen Compiler Fehler bekomme ich dann immer.
30 61 bekomme ich, wenn ich den Power Knopf meiner WinTv Fernbedienung drücke. zum Fernsehen benutze ich einen Media PC und möchte den per Fernbedienung Einschalten können.

Steffen44
01.07.2007, 13:29
Schreibe diesen Abschnitt mal so : ( da ist dir "Then" nur in die falsche Zeile gerutscht)




If Address = 30 And Command = 61 Then
Portb.1 = 1
Waitms 100
Portb.1 = 0
End If

adrisch
01.07.2007, 13:32
Des hab ich auch schon geschrieben!
Siehe Post von 0:27

Testus2K
01.07.2007, 13:44
Cool, danke Leute, jetzt gehts...ich kenn das so nicht, bei Pascal kannst du das Quasi hinschreiben, wo du willst.

@adrisch: Sorry, hab dein Code bestimmt 5 mal mit meinem verglichen und und den Unterschied einfach nicht gesehen :-)

adrisch
01.07.2007, 13:46
MAcht nichts...

Steffen44
01.07.2007, 14:22
sry dein Post hatte ich voll überlesen adrisch ^^ aber offensichtlich erging es Testus2K auch nicht anders.

Gruß
Steffen