Hallo Jan,
ich glaube nicht, dass das so einfach (per Befehl) geht ...
Du hättest die LED's gegen GND legen sollen. Aber das ist
Dir sicherlich auch klar.
Hi,
ich mache grade für Informatik ein Referat über Microcontroller.
Um meinen Mitschülern das ganze etwas näher zu bringen, habe ich ne kleine Platiene mit nem Mega8 und 8 LEDs an Portb gemacht.
Dazu nen kleines Prog das nen Lauflicht macht.
Hier verwende ich z.B portb = &B01111110
um die erste und die letzte LED leuchten zu lassen.(hab die LEDs gegen + gelegt).
Dies ist für jemanden der vor 5minuten das erste mal von Microcontrollern gehört hat etwas schwerverständlich, warum da ne 0 ist um die LED anzumachen.
Ich habe mal von einem Befehl gehört der einfach in den Programmkopf kommt und alle Ausgänge negiert.
Wie heißt dieser befehl?
Schonmal danke für eure Antworten!
MfG
Jan
Hallo Jan,
ich glaube nicht, dass das so einfach (per Befehl) geht ...
Du hättest die LED's gegen GND legen sollen. Aber das ist
Dir sicherlich auch klar.
Gruß: - Reinhard -
Warum legst Du die LED's nicht gegen Masse?
Für eine normale LED reicht der Portstrom aus.
Hier die Umkehrung:
Code:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 ' Serrielle Schnittstelle definieren Config Portb = Output Config Portc = Output Dim X As Byte Dim Y As Byte Dim Z As Byte Do For X = 0 To 7 Y = 2 ^ X ' Y = 1 aus 8 - Lauflicht Z = Not Y ' <- Invertiert Y Portb = Y Portc = Z Waitms 200 Next X Loop
Gruss
Darwin (meine Projekte sind auf meiner Pinnwand zu finden)
Hi,
keine Ahnung warum ich die LEDs immer gegen + mache, hat sich wohl so eingebürgert...
An die bolean negierung hab ich auch schon gedacht, aber das wird ja noch komplizierter...
Ich bin mir aber sehr sicher, dass es dafür einen Befehl gibt... werd nochmal die ganze Hilfe von Bascom durchgehn (hab ich schonmal gemacht...).
Wäre für weiter Tipps dankbar!
MfG
Jan
In Assembler würde z.B. ein com mit der Angabe eines Registers ausreichen ...
Das geht noch einfacher!
Schließ die LED's "ganz normal" von Vcc über den üblichen Vorwiederstand gegen an den Controller an. (die meisten Ports können mehr Strom gegen Masse "sinken" als das sie ihn "sourcen" können. (find die Begriffe na ja - komisch )
Das Programm kann folgende Zeilen enthalten:
Config Portb = Output
Dim A as Byte
A= &b11111110
Do
Portb = A
Rotate A, Left, 1
Waitms 200
Loop
End
"Rotate" schiebt sämtliche Bits von A in dieser Konfiguration um jeweils eine Position nach links. Das MSB wird bei jedem rotieren zum LSB.
Hi,
danke für die Antworten!
Mir ist schon klar, dass ich das Problem wesentlich eleganter lösen könnte. Es geht mir aber dadrum, das totale Basic noobs das Programm verstehen...
Ich werde es auf eine wirklich billige Methode machen, die viel speicher braucht aber leicht verständlich ist:
...
do
a = getadc(1) * 2
portb = &B11111110
waitms a
portb = &B11111101
waitms a
portb = &B11111011
waitms a
portb = &B11110111
waitms a
portb = &B11101111
waitms a
portb = &B11011111
waitms a
portb = &B10111111
waitms a
portb = &B01111111
waitms a
loop
Mir stellen sich zwar dabei die Nackenhaare auf, aber ich denke, dass es ut verständlich ist.
Dazu kommt dann noch nen Interrupt, der mit dem man über einen Taster den Modus auswählen kann(andere Form des Lauflichts...).
Ich weiß, das ganze ist verdammt billig und speicherfressend, aber meine Mitschüler haben grad erst die Programmiersprache(wenn man sie so nennen will) ""Logo"" gelernt.
MfG
Jan
du kannst zb
portausgabe=&B10000001
portausgabe=255-portausgabe 'negieren
portx=portausgabe
@x8r:
Du hast bis auf die Übernahme des Wertes aus dem AD-Wandler genau das gemacht was ich oben in meinen Codeschnippsel reingetippt hab.
Egal ob jemand mit NULL-Basic-Ahnung oder nicht - so lange man etwas Englisch beherrscht sind die Basic-Befehle eigentlich selbsterklärend. Zur Not könntest Du auch die einzelnen Erklärungen aus der Hilfedatei nehmen und Deinen Studis unter die Nase halten.
Das stimmt nicht, zumindest nicht bei neueren AVRs.Zitat von E-Fan
Alle neueren Controller haben symmetrische Ausgänge, d.h. der Strom den sie sourcen können ist genauso hoch wie der Strom den sie sinken können.
Lesezeichen