mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik dual led mit bascom


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
sitze hier schon seit paar Stunden an meinem Problem.
eigentlich ziehmlich einfach alles, klappt aber komischer weise nicht.
folgendes:
if-then schleife.
wenn am PORTD.0 5Vanliegen, soll die rot leuchten, wenn 0V dann Grün.
die Led hat 2 Anschlüsse. wenn man sie vertauscht, wechseln sich die 
zwei Farben.
mein Quellcode:

$regfile = "m8def.dat"
$crystal = 1000000

Config Pind.0 = Input
Config Pinb.1 = Output
Config Pinb.2 = Output

A:
Portb.1 = 1
Portb.2 = 0
B:
Portb.1 = 0
Portb.2 = 1

Do

If Portd.0 = 1 Then
Goto A
Else
Goto B
End If

Waitms 50
Loop

End



klappt nicht. bleibt immer grün.
nächster versuch:


Do

If Portd.0 = 1 Then
Portb.1 = 1
Portb.2 = 0
Else
Portb.1 = 0
Portb.2 = 1
End If

Waitms 50
Loop

geht auch nicht. bleibt wieder grün.

was kann das sein? habe ich was vergessen?
Danke im Voraus

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es muss

if pind.0 .... heissen, nicht
if portd.0 !

Autor: möp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie steuerst du die Duo-Led an?

Du hast doch 2 Anoden (Grün/Rot) und eine gemeinsame Anode..

Du willst bei 5 V (also "High") dass die LED grün leuchtet und bei 0 V 
(also "low") rot.

Habs mir grad mal aufgezeichnet... du brauchst im vor der roten Anode 
einen NPN transistor.. bei signal HIGH auf basis schaltet der durch und 
sperrt bei LOW...

vor der Anode der grünen LED brauchst du einen PNP, der schaltet bei 
SIGNAL low auf BASIS durch und sperrt bei HIGH..

auf basisstrom aufpassen...

so kommst du mit einem Pin aus (2 transistoren, n paar widerstände) und 
bei HIGH leuchtet rot und bei LOW grün...

du brauchst natürlich intern oder extern einen Pull-Up auf 5 V für 
diesen Ausgangs-Pin.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und beim config oben müssen die output´s portd.x heissen, nicht pind.x

Autor: Thomas Glass (taximan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab da auch noch nicht wirklich Ahnung von, aber:

-I can not set a pin high or low

-I can not read the input on a pin

 steht in der Hülfe (dafür isse da!)

oder so:

For example :

DDRB = &B1111_0000 ' upper nibble is output, lower nibble is input

SET PORTB.7 'will set the MS bit to +5V

RESET PORTB.7 'will set MS bit to 0 V





To read a pin :

Print PINB.0 'will read LS bit and send it to the RS-232



You may also read from PORTx but it will return the value that was last 
written to it.





To read or write whole bytes use :

PORTB = 0 'write 0 to register making all pins low

PRINT PINB 'print input on pins





MFG

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Markus
SUPER tipp, danke, jetzt geht es!

@möp
>die Led hat 2 Anschlüsse.
also insgesamt 2

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jetzt verwirrt den armen kerl doch nicht,
er schreibt ja oben das die LED nur 2 anschlüsse hat, also farbwechsel 
bei polaritätswechsel.

probier mal das:

$regfile = "m8def.dat"
$crystal = 1000000

Config Pind.0 = Input
Config Portb.1 = Output    'Portb.1 statt Pinb.1
Config Portb.2 = Output    'dito

Do

If Pind.0 = 1 Then         ' Pind.0 statt Portd.0
Portb.1 = 1
Portb.2 = 0
Else
Portb.1 = 0
Portb.2 = 1
End If

Waitms 50
Loop

Autor: möp "klugscheisser" (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LACH

da war ich wohl ein bisschen vorlaut..

ich mach das immer so:

1. pin auf low
2. pull up (enable)
3. direction einstellen (input/output)
4. pin auf gewuenschten logik-pegel..

es is immer besser, erst den pin auf low zu setzen, bevor man die 
richtung wechselt..

joa und ansonsten halt noch drüber im klaren sein, ob das signal low 
oder high aktiv wird...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.