Kann mir einer Start Hilfe geben?

Gast #1945661
Lesenswert?

Hallo kann mir einer bei dem Programm helfen?

ich hänge schon seit 3 Wochen daran und finde nicht wirklich Hilfe wenn 
ich danach google.

Auch die Tuts gehen nicht wirklich auf meine gewollten Funktionen ein.


Hier ist das Problem, dass die Led an portb.0 immer leuchtet.


                            $regfile = "m16def.dat"
$framesize = 16
$swstack = 16
$hwstack = 16
$crystal = 1000000

Config Portb.0 = Output

Config Pind.7 = Input
Portd.7 = 1

Config Pinc.1 = Input
Portc.1 = 1

Do

If Pind.7 = 1 Or Pinc.1 = 0 Then Portb.0 = 1

If Pind.7 = 1 Or Pinc.1 = 1 Then Portb.0 = 0

Loop


End



Also passieren tut das hier:

portb.0 leuchtet schon am Anfang schwach ohne dass ich überhaupt was 
getätigt habe, aber WARUM???
und wenn ich pind.7 alleine schalte leuchtet die led stärker.

und wenn ich beide schalte geht die lampe aus. ist ja richtig, wobei das 
ja nicht die Funktion eines "Or" ist, oder ist das normal?


Und hier wollte ich die LED setzen und dann irgendwann Rücksetzen.


                            $regfile = "m16def.dat"
$framesize = 16
$swstack = 16
$hwstack = 16
$crystal = 1000000

Config Portb.0 = Output

Config Pind.7 = Input
Portd.7 = 1

Config Pinc.1 = Input
Portc.1 = 1

Do

If Pind.7 = 1 Or Pinc.1 = 0 Then Set Portb.0

If Pind.7 = 1 Or Pinc.1 = 1 Then Reset Portb.0

Loop


End




hier passiert das selbe wie oben.

Wie kann man denn ein Ausgang dauerhaft setzen und dann irgendwann 
wieder rücksetzen??

Und warum ist die Funktion von dem "Or" wie das von einem Und.

weil die Lampe geht ja aus, wenn ich Pind.7 und Pinc.1 schalte, aber das 
sollte doch eigentlich bei nen UND passieren, oder?


MfG  Fred
Gast #1945735
Lesenswert?

ja aber wieso leuchtet die LED immer.
Außer wenn ich beide Taster betätige.

Und der Zustand ist immer nur so lange wie die Bedingung erfüllt sind

Sprich, die LED ist nur solange aus wie ich beide Taster betätigt halte.

Im übrigen ist die Schaltung so wie im Tutorial dieser Seite aufgebaut.

 Und wenn ich nur dieses hier übertrage leuchtet die Led nicht.
ist ja richtig:

                            $regfile = "m16def.dat"
$framesize = 16
$swstack = 16
$hwstack = 16
$crystal = 1000000

Config Portb.0 = Output

Config Pind.7 = Input
Portd.7 = 1

Config Pinc.1 = Input
Portc.1 = 1

Do


Loop


End

Ich komm einfach nicht weiter.

Ich will doch blos das die LED leuchtet, wenn ich 1 Taster drücke und 
dann aus geht wenn ich beide zusammen drücke.

Danke erstmal für die Hilfffffe
Persönliche Seite #1945736
Lesenswert?

> Config Pind.7 = Input
> Portd.7 = 1

Klassiche Konfiguration für einen active-low Taster an Pind.7 mit 
internem Pullup-Widerstand Portd.7. Active-low heisst Drücken des 
Tasters erzeugt einen Kurzschluß von Pind.7 nach GND.

> Config Pinc.1 = Input
> Portc.1 = 1

Dito für Pinc.1

> If Pind.7 = 1 Or Pinc.1 = 0 Then Portb.0 = 1

Fall #1
Wenn Taster Pind.7 NICHT gedrückt ist ODER Taster Pinc.1 gedrückt ist, 
dann schalte Ausgang Portb.0 auf 1

> If Pind.7 = 1 Or Pinc.1 = 1 Then Portb.0 = 0

Fall #2
Wenn Taster Pind.7 NICHT gedrückt ist ODER Taster Pinc.1 NICHT gedrückt 
ist, dann schalte Ausgang Portb.0 auf 0

> portb.0 leuchtet schon am Anfang schwach ohne dass ich überhaupt was
> getätigt habe, aber WARUM???

Ich weiss nicht, wie du die LED angeschlossen hast, gegen GND (active 
high) oder gegen Vcc (active low). Ist aber auch egal.

Durch das ODER Fall #1 schaltet sich die LED auch in jeder Schleife  ab 
oder an (Taster Taster Pind.7 ist NICHT gedrückt).

Durch den Fall #2 macht die LED in der nächsten Anweisung dann das 
umgekehrte.

Im Mittel hast du ein sehr schnelles Flackern AN/AUS. Daher das schwache 
Leuchten

> If Pind.7 = 1 Or Pinc.1 = 0 Then Set Portb.0
> If Pind.7 = 1 Or Pinc.1 = 1 Then Reset Portb.0

SET PORTB.0 ist gleichbedeutend mit Portb.0 = 1
RESET PORTB.0 ist gleichbedeutend mit Portb.0 = 0

> hier passiert das selbe wie oben.

Es wäre schlimm (für BASCOM) wenn nicht.

> Wie kann man denn ein Ausgang dauerhaft setzen und dann irgendwann
> wieder rücksetzen??

Klaro. So wie du es oben machst.

SET PORTB.0 ist gleichbedeutend mit Portb.0 = 1
RESET PORTB.0 ist gleichbedeutend mit Portb.0 = 0

> Und warum ist die Funktion von dem "Or" wie das von einem Und.

Ist es nicht. Dir ist nur nicht klar, was die eingelesenen Werte deiner 
Taster sind, wenn die Taster nicht gedrückt sind. Mach dir eine 
Wahrheitstabelle:

         Taster 1     Taster 2
==============================
nicht        1            1
gedrückt

nur
Taster 1
gedrückt     0            1

Nur
Taster 2     1            0
gedrückt

Beide        0            0
gedrückt

Dann machst du die IF-Abfragen mit Prüfung auf Wert und der UND 
Verknüpfung für jeden der möglichen vier Werte.

Wenn dann immer noch komische Sachen passieren, kümmerst du dich um die 
Entprellung mit dem DEBOUNCE Befehl

> "m16def.dat"
> Pinc.1

Die Sache mit der JTAGEN Fuse im Datenblatt hast du gelesen?
Gast #1945779
Lesenswert?

DAAAAAANKE, echt riesen DANK.

Ich hänge hier schon seit 3 Wochenenden dran.
Dabei hatte ich bloß nicht verstanden, dass die Taster genau anders rum 
arbeiten.

Und die LED leuchtet auch  nicht, wenn ich den Ausgang setze, sondern 
rücksetze.

Darauf muss man erstmal kommen.


Ich werd bekloppt.

DANNNKKKKKKEE an alle


>> Und warum ist die Funktion von dem "Or" wie das von einem Und.
>
> Ist es nicht. Dir ist nur nicht klar, was die eingelesenen Werte deiner
> Taster sind, wenn die Taster nicht gedrückt sind. Mach dir eine
> Wahrheitstabelle:
>
>          Taster 1     Taster 2
> ==============================
> nicht        1            1
> gedrückt
>
> nur
> Taster 1
> gedrückt     0            1
>
> Nur
> Taster 2     1            0
> gedrückt
>
> Beide        0            0
> gedrückt
>
> Dann machst du die IF-Abfragen mit Prüfung auf Wert und der UND
> Verknüpfung für jeden der möglichen vier Werte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren