Basic ganzen PORT A als Ausgang bzw Eingang

Gast #1217585
Lesenswert?

hi all, wollte mal ganz schnell wissen ob das hier so geht.
Wollte eigentlich in Basic, den ganzen Port A und C als Eingang 
definiert haben mit aktivierten Pullups an jedem Pin. und Die Ports B 
und D sollten einfach als Ausgänge definiert sein.
Jedoch spuckt Bascom nen Fehler aus und will nicht compilieren.
Kann man mit Basic alle Pins am Port direkt definieren oder muss ich 
ales einzen machen?

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Config Portb = Output
Config Portd = Output
Config Pina = Input
Porta = 1
Config Pinc = Input
Portc = 1


Do
  If Pina.0 = 1 Then
    Portb.0 = 1
  End If
    If Pina.1 = 1 Then
    Portb.1 = 1
  End If
    If Pina.2 = 1 Then
    Portb.2 = 1
  End If
    If Pina.3 = 1 Then
    Portb.3 = 1
  End If
    If Pina.4 = 1 Then
    Portb.4 = 1
  End If
    If Pina.5 = 1 Then
    Portb.5 = 1
  End If
    If Pina.6 = 1 Then
    Portb.6 = 1
  End If
    If Pina.7 = 1 Then
    Portb.7 = 1
  End If
    If Pina. = 1 Then
    Portb. = 1
  End If
    If Pinc.7 = 1 Then
    Portd.0 = 1
  End If
      If Pinc.6 = 1 Then
    Portd.1 = 1
  End If
      If Pinc.5 = 1 Then
    Portd.2 = 1
  End If
      If Pinc.4 = 1 Then
    Portd.3 = 1
  End If
      If Pinc.3 = 1 Then
    Portd.4 = 1
  End If
      If Pinc.2 = 1 Then
    Portd.5 = 1
  End If
      If Pinc.1 = 1 Then
    Portd.6 = 1
  End If
      If Pinc.0 = 1 Then
    Portd.7 = 1
  End If

Loop


End
Gast #1217678
Lesenswert?

sorry das ich dich jetzt angepisst habe wegen 2 kleinen fragen. ich 
verkriech mich jetzt auch sofort in mein loch. trotzdem danke ich rolf 
und nicht dir du nichthelfer. und falls du mal jemals fragen hast dann 
schreib ein buch darüber und ein buch über die antworten.

solche leute wie dich verschmutzen nur thread wo ein anfänger fragen 
stellt.

sowas wie "benutz die SuFu, google, guck ins handbuch.." bla nervt.

es gibt schon gründe warum ich hier schreibe und nicht 10min irgendwo 
anders was lesen will.
Gast #1217722
Lesenswert?

> sowas wie "benutz die SuFu, google, guck ins handbuch.." bla nervt.

Die Tips sind aber gut gemeint und auch berechtigt.

> es gibt schon gründe warum ich hier schreibe und nicht 10min irgendwo
> anders was lesen will.

Nunja, wenn Du an der richtigen Stelle liest, erreicht Du mehr, als wenn 
Du andere Leute für Dich arbeiten lässt.

Nimm das Datenblatt Deines Controllers und schau Dir die 
Registerbeschreibung von PORTA, PINA_ und _DDRA genau an. Dann 
interessiere Dich mal für den Zusammenhang von Bits und Byte.

...
#1217751
Lesenswert?

Hab mich beim Einfügen etwas vertan. Sollte eigentlich so heißen:

Und lass das hier weg

    If Pina. = 1 Then
    Portb. = 1
  End If

Du kannst auch schreiben:

PORTB=PINA

Wobei dass nicht gleich deinen If-Blöcken ist, aber wohl so wie du es 
willst.

  If Pina.0 = 1 Then
    Portb.0 = 1
  End If

Falls der Pina.0 einmal 1 ist, geht der Portb.0 nie wieder auf 0. Bei

PORTB=PINA

geht jeder PORTB.x sofort wieder auf 0, wenn der PINA.x auf 0 geht.
Das entsprechende für PINC und PORTD wäre dann
PORTD.0=PINC.7
PORTD.1=PINC.6
usw.
Das kannst du auch über eine Schleife erledigen.
Ein direktes Überkreuz-Setzen gibt es leider nicht.

Gruß

Rolf
Gast #1218237
Lesenswert?

So hab es mal so versucht:
Bauplan laut Bild, wo ich Testweise nur eine LED angeschlossen habe. 
Anstatt einen Taster habe ich einen Fotosensor drangebaut, der wenn es 
dunkel ist einen sehr hohen Widerstand hat (ca. 5MOhm) und wenn man ihrn 
bestrahlt ca. 500 Ohm.

Ich habe im dunkeln den Fotosensor mit einer Taschenlampe bestrahlt 
jedoch hat dieser keine 1 geliefert und meine LED ging nicht an. Weis 
jemand wo der Fehler liegt?

So hoffe habe alles klar genug erklärt und hoffe das das mal keine 
anfänger frage ist.

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 1000000

Config Portb = Output
Config Portd = Output
Config Pina.0 = Input
Config Pina.1 = Input
Config Pina.2 = Input
Config Pina.3 = Input
Config Pina.4 = Input
Config Pina.5 = Input
Config Pina.6 = Input
Config Pina.7 = Input
Porta.0 = 1
Porta.1 = 1
Porta.2 = 1
Porta.3 = 1
Porta.4 = 1
Porta.5 = 1
Porta.6 = 1
Porta.7 = 1
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pinc.7 = Input
Portc.0 = 1
Portc.1 = 1
Portc.2 = 1
Portc.3 = 1
Portc.4 = 1
Portc.5 = 1
Portc.6 = 1
Portc.7 = 1

Do
  If Pina.0 = 1 Then
    Portb.0 = 1
  End If
    If Pina.1 = 1 Then
    Portb.1 = 1
  End If
    If Pina.2 = 1 Then
    Portb.2 = 1
  End If
    If Pina.3 = 1 Then
    Portb.3 = 1
  End If
    If Pina.4 = 1 Then
    Portb.4 = 1
  End If
    If Pina.5 = 1 Then
    Portb.5 = 1
  End If
    If Pina.6 = 1 Then
    Portb.6 = 1
  End If
    If Pina.7 = 1 Then
    Portb.7 = 1
  End If
    If Pina. = 1 Then
    Portb. = 1
  End If
    If Pinc.7 = 1 Then
    Portd.0 = 1
  End If
      If Pinc.6 = 1 Then
    Portd.1 = 1
  End If
      If Pinc.5 = 1 Then
    Portd.2 = 1
  End If
      If Pinc.4 = 1 Then
    Portd.3 = 1
  End If
      If Pinc.3 = 1 Then
    Portd.4 = 1
  End If
      If Pinc.2 = 1 Then
    Portd.5 = 1
  End If
      If Pinc.1 = 1 Then
    Portd.6 = 1
  End If
      If Pinc.0 = 1 Then
    Portd.7 = 1
  End If

Loop


End
Angehängte Dateien:
Gast #1218425
Lesenswert?

Die Config-Anweisungen machen das Programm ziemlich unübersichtlich, 
aber es geht auch anders:

Du kannst die Register auch direkt beschreiben:
DDRA=&B00000000
PORTA=&B11111111
Das bedeutet: Im DDR-Register stellt eine Null den Port auf Eingang und
im Port-Register schaltet eine Eins den Ziehwiderstand (Neudeutsch:
Pull-up) ein.
Diese beiden Zeilen haben jetzt also den gesamten Port A als Eingang
konfiguriert und alle Pull-up-Widerstände zugeschaltet.

MfG Paul

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