PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Port für Ein-Ausgabe teilen



rolfw20
25.06.2006, 21:14
Hallo Leute,
ich wollte einen Port für Ein und Ausgabe teilen. Leider macht der Mega 8 nicht das was ich mir vorstelle. Es sollten 4 Bit für Ausgabe (zur Ansteuerung eines Multiplexer) und 4 Bit für eine Eigabe (BCD-Schalter) werden.
wenn jemand meinen Fehler sieht und mir Antwortet währe ich sehr dankbar.

$regfile = "m8def.dat" 'ATmega8-Deklarationen
$crystal = 8000000 'Quarz: 8,000 MHz intern

Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcdbus = 4

Ddrd = &B00001111 'die unteren 4 bit auf ausgang die oberen 4 bit auf eingang
Portd = &B11110000 'für die oberen 4 bit pullup einschalten
Dim Ein As Byte
Dim Schalter As Byte
Dim Leuchte As Byte

Cls

Do
Ein = Pind And &B11110000 'es sollen nur die oberen 4 bit gelesen werden
Shift Ein , Right '4 mal nach rechts schieben
Shift Ein , Right 'jetzt sollte eine zahl zwichen 0 und 15 in "ein" stehen
Shift Ein , Right
Shift Ein , Right
Schalter = 15 - Ein
Locate 1 , 1 'lcd nur zur kontrolle der zahlen
Lcd " sch" ; Schalter
Locate 2 , 1
Lcd "ein" ; Ein
Wait 1
Cls
Leuchte = Leuchte + 1
If Leuchte = 16 Then Leuchte = 0
Portd = Leuchte
Loop
End


Gruß
Rolf

linux_80
25.06.2006, 22:04
Hallo,

wenn Du unten, in der vorletzten Zeile, den PortD setzt, sind die Pullups weg !
Musst immer Or 240 machen.

rolfw20
26.06.2006, 20:15
Danke das war´s.
\:D/

Im nachhinein war es doch sehr einfach, aber manschmal sehe ich den Wald vor lauter Bäume nicht. ](*,)

Also nochmals DANKE

Gruß
Rolf