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.
Code:
$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