Forum: Mikrocontroller und Digitale Elektronik I/O´s schalten (only bascom)


von Dirk (Gast)


Lesenswert?

Hallo,

ich benutze Bascom AVR Demo mit einem 8535.


so nun hab ich mal ne Frage:

Ich habe 3 Led`s an Portc.5 - c.7.
erst habe ich die Led's mittels Constante also &B00011111 eingeschaltet.

Programmausschnitt:

Const Ledson = &B00011111
Config Portc = Output

portc = ledson
end

spaeter hab ich es lieber mit folgenden zeilen gemacht....

Config Pinc.5 = Output
Reset Portc.5

usw.

dann kam ich auf idee es wie folgt zu machen:

Config Pinc.5 As Output Pinc.5 = 1

usw.

Welcher Weg ist der richtige?


Wegen einem Firmenprojekts wollte ich gerne ein µC nehmen....
Ich sollte 4 ADC Spannungen messen + 4 Leiterbahnen testen auf Durchgang 
und auf Kurzschluss an den Connectoren.

Ich hab es wie folgt geloest. Auschnitt aus dem Prg. :

Const Test1 = &B10101010                                    'Testmuster1
Const Test2 = &B01010101                                    'Testmuster2
Const Maske = &B00001111           'Maske fuer ungewollte Eingaenge
Config Portc = Input                                        'Eingaenge 
Leitungstester
Config Portb = Output
portc = 255
C = Test1 And Maske                                         'erstes 
Testmuster generieren
Portb = c                                                   'Testmuster 
auf Ausgang geben
D = Pinc And Maske                                          'Eingaenge 
lesen und ungewollte Eingaenge ingnorieren
If D = C Then
Ok = 1

dann das gleiche mit dem zweiten Testmuster.... Ich habe die Maske 
erstellt da ich nur 4 I/O`s benutze.
Es funktionierte auch alles wunderbar!
soweit so gut.... nun wollte ich mit Portc.4 ein Stabi der ein CTL 
Eingang hat ansteuern ( braucht 5 V TTL Impuls zum starten).

Da ich aber den Port auf Input gestellt hatte bzw. ueber die Testmaske 
zunichte gemacht hatte konnte ich den nicht nutzen....

So nun zu meiner Frage.

Wuerde es nicht viel leichter gehen wenn ich es wie folgt mache:

Config Pinb.0 As output Pinb.0 = 0
config pinb.1 as output pinb.1 = 1
config pinb.2 as output pinb.2 = 0
config pinb.3 as output pinb.3 = 1

config pinc.0 as input
config pinc.1 as input
config pinc.2 as input
config pinc.3 as input

Nun sollte ich den Input Port auf 255 legen, damit die internen Pullups 
geschaltet sind und das Bitmuster stabil bleibt.

Portc = 255

So nun zu meinen vielen Fragen....

wie lese ich das bitmuster was von Pinb.0 - Pinb.3 kommt auf Pinc.0 -c.3 
ein?

wenn ich den Portc = 255 setze kann ich den Pinc.4 noch zur Erzeugung 
des 5V Impulses nutzen?

Sry ich bin blutiger Anfaenger und ich hatte grosse Hilfe beim 
eigentlichen Programm was funktioniert und kapier auch noch nicht 100 % 
alles ....

Um meine Fragestellung zuvereinfachen ich wollte nur 4 I/O`s 
verschwenden .... aber dank Testmuster Constante und Maske benutze ich 
die vollen 8 I/O's die ich gerne fuer was anderes benutzen wollte ohne 
staendig hin und her zuschalten.... Ich hoffe ihr habt kapiert was ich 
will und koennt mir nen bissel helfen....

Danke....

nochmal danke an lieben Mitmenschen der mich wenigstens schon soweit 
gebracht hat.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wenn es nur um 3 LEDs geht und nicht der ganze Port auf einmal geändert 
werden muss, dann ist die Methode

  Config Pinc.5 = Output
  Portc.5 = 0

wohl am besten. Wobei du die Richtungseinstellung des Ports natürlich 
nicht jedes Mal neu machen musst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.