-         

Ergebnis 1 bis 4 von 4

Thema: Wie kann ich Adressieren ? AD0- AD7 und A0-A8 Atmel

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2005
    Beiträge
    15

    Wie kann ich Adressieren ? AD0- AD7 und A0-A8 Atmel

    Anzeige

    Wie kann ich AD0-AD7 und A0-A8 adressieren?
    Wo fängt die Adresse an?


    Porgrammiersprache C
    Habe einen AT89S53 Controller (C51 Compatibel)
    Benötige Adressierung für ein Grafikdisplay.

    MFG Easy Rider

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Du hast bei Deinem µC die Pins AD0...AD7 (Port 0) und A8...A15 (Port 2).
    A8...A15 sind reine Adressleitungen.
    AD0...AD7 hingegen sind kombinierte Daten- und Adressleitungen. Der Pin ALE (Adress Latch Enable) gibt dabei an, ob gerade Adressen oder Daten an den Pins liegen.

    Manche Grafikdisplays haben ebenso einen kombinierten Daten-/Adressbus. Dann brauchst Du einfach nur 1:1 zu verbinden. Die ALE-Leitung wird dabei auch angeschlossen.

    Wenn Dein Grafikdisplay getrennte Daten und Adressleitungen hat, benötigst Du noch ein Latch (74HC573), das Dir Daten- und Adressleitungen trennt.
    Einen Schaltplan für sowas findest Du unter http://manuel.mausz.at/5ahta/prt/skr...y/ext_sp51.doc
    Dort wird zwar der 80535 als Prozessor verwendet und ein externes Eprom bzw. RAM angesprochen, aber das Prinzip ist das gleiche.

    askazo

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2005
    Beiträge
    15
    Die Anschlüsse sind mir bekannt.
    Aber wie kann ich denn über die Software eine Adresse ansteuern?

    Meine Ports geben ja daten und Adressen aus. Wie funktioniert dies
    Softwaremässig.

    Wie deklariere ich eine Variable mit einer Adresse ?
    bzw wo fängt die Adresse für AD0 bis AD7 denn an?

    die anweisung P2=0xff; kenne ich.
    Das gleiche geht auch über adressen, aber wie?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Sorry, da hatte ich Dich falsch verstanden.

    Adressen ansteuern machst Du so (WinAVR / AVR-GCC vorrausgesetzt)
    Code:
    unsigned char data;
    //lesen von Adresse 0x1100
    data = _SFR_MEM8(0x1100)
    
    //schreiben auf Adresse (0x11FE)
    _SFR_MEM8(0x11FE) = data;
    Am besten schreibst Du Dir dafür ein Makro, dann sieht's im Quelltext nicht ganz so kryptisch aus.

    Die sfr-Funktionen sind übrigens in avr/sfr_defs.h deklariert.
    Die sfr-defs.h wird aber sowieso über die io.h includiert, da auch alle Registerdefinitionen die sfr-Funktionen verwenden.

    Hth,
    askazo

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •