PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : portx = 1 oder = 0 in eine zeile



bigeggmc
20.03.2006, 20:58
hallo leute,
ein blutiger anfänger braucht mal wieder hilfe, also ich wolle mal eben zu demozwecken ein kleines lauflicht machen, dabei ist mir aufgefallen das ich ja üblerweise jede portnummer seperat ansprechen muss, wie kann ich das ändern, zur zeit sieht das ja nun so aus

Portb.4 = 1
Portb.5 = 1
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Portd.6 = 1
Portd.7 = 1

alle benötigten ports auf an, wenn ich damit nen lauflicht machen will wird das ganz schön voll, wie kann ich diesen block in eine reihe bekommen, ich hab da mal was gesehen, bzw mir hat da mal jemand was gezeigt, nur kapier ich das ned!
das sah vollgendermaßen aus:

Ddrc=&B00000111

kann man sowas auch dafür gebrauchen, und wenn ja, wie setzt sich das zusammen, wenn mir das jemand kurz erklären könnte wär das sehr geil!

gruss, bigeggmc

nabla
20.03.2006, 21:28
Also Du hast ja ein 1 Byte-Register.

Mit

DDRC=0b00001111;

sprichst Du alle Bits aufeinmal an. MSB-->LSB

Also von Bit 7 bis Bit 0

DDRC ist allerdings das Data Direction Register, welches festlegt ob Du den Port als Ausgang oder Eingang benutzt.

Deine Zeilen oben müssten sich ersetzen lassen durch:

PORTB=0b00110000; (Bit 5 und 4 auf HIGH)

PORTC=0b11111111; (oder auch PORTC=0xff (HEX-Code ff = 11111111; Alle Bits auf "HIGH")

Alles verstanden?

bigeggmc
20.03.2006, 21:44
jap, das war deutlich ;) ich werds gleich mal probieren, danke für die schnelle hilfe

E-Fan
20.03.2006, 22:12
Wenn Du ein Lauflicht für die ersten Schritte basteln möchtest, könntest Du auch erst mal mit einem Port anfangen.
Da viele I/O's von Controllern meist mehr Strom gegen Masse als gegen Vcc schalten können sollten die LED's mit der Anode gegen Vcc gelegt werden.
Der Code könnte dann zum beispiel so aussehen:

Dim A as Byte
Config Portc = Output
A = &B11111110
Portb = &b11111111

Do
Portc = A
Rotate A , left , 1
Waitms 250
Loop

Der Befehl "Rotate" dient dazu die logische 0 um 1 Position weiter nach links zu schieben (von A.0 nach A.1). Die logische 1 des MSB wird dabei zum LSB geschoben. (von A.7 nach A.0)
Da im Gegensatz zum Befehl "Shift" keine Daten verloren gehen hat man damit eine Endlosschleife gebastelt.

bigeggmc
20.03.2006, 22:17
ja danke, das ist doch schonmal was ;)
im grunde geht es mir nur darum einfach ein kleines lauflicht zu machen um freie ports an zu sprechen, rein demotechnisch, hab mich mit der materie lauflicht noch nicht so beschäftigt, wird aber demnächst wohl kommen müssen weil nen kumpel gern nen soundgesteuertes hätte mit allen rafinessen ;)
nun ja, ich wers mal probiern

E-Fan
20.03.2006, 22:21
Es is noch kein Meister vom Himmel gefallen! Wenn es Soundgesteuert sein soll haste Dir aber schon mal nen genz schönen Brocken "aufgehalst" weil Dir ja der Controller alleine nix nützt. ;)

P.S.: Ich find die Bascom Hilfe sehr gut. Schade eigentlich das es die alte HTML-ähnliche Version nicht mehr zu geben scheint und man sich etwas mühselig durch die PDF scrollen muss.

bigeggmc
20.03.2006, 22:26
ne, das werd ich wohl mit einer kleinen transistorschaltung machen und dann den a/d wandler nutzen, das hab ich mir schon alles überlegt, oder ich verwenden einfach nen transistor als schalter auf nen eingangsport und ich werd den die ganze regelung, also die empfindlichkeit vom micro extern machen, nur das dann der chip halt im takt weitergeht ist dann noch wichtig ;)
aber durch deine hilfe hab ich da schon was gefunden ;)