rolfw20
25.06.2006, 22: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
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