Forum: Mikrocontroller und Digitale Elektronik AT89S8252 Daten Speichern


von Lars (Gast)


Lesenswert?

Hi,
kann mir einer sagen wie ich beim AT89S8252 Daten im internen EEprom 
speichern und wieder auslesen kann? Möchte gerne Zahlenwerte speichern.

Mit Dank im Vorraus, Lars

von Christian (Gast)


Lesenswert?

Hallo

folgendes Beispiel ist bei der Prog-Studio Software dabei (shareware 
unter www.batronix.de) (ichhoffe du meinst Assembler)



'**************************************************************
'* Beispiel für den Schreib- und Lesezugriff auf das
'* integrierte EEprom des AT89S8252
'**************************************************************

' Bei diesem Beispiel werden zur Laufzeit des MC's Daten in das
' integrierte EEprom des AT89S8252 geschrieben, wieder aus-
' gelesen und an den Ports 0 und 1 zur Kontrolle wieder ausgegeben.

' Zudem wird gezeigt, dass das EEProm auch bereits im Brenner
' beschrieben (Initialisiert) werden kann. Dazu werden Daten an
' die Adresse 2000h(Anfang des EEproms)  programmiert und später
' zur Laufzeit vom MC ausgelesen und an den Ports 2 und 3
' angezeigt.

' Der Mikrocontroller braucht übrigens NICHT die 12 Volt an seinem
' EA/VPP Eingang, um auf das integrierte EEprom schreiben zu
' können (Dies geht aus dem Datenblatt nicht so klar hervor).
' Der Pin sollte auf +5 Volt gelegt werden.

INCLUDE 89s8252.mc

LESE_DATEN_AUS_DEM_EEPROM:
  'Aktiviere EEPROM Lesezugriff durch Setzen des EEMEN Bits
  'im Register WMCON (Adresse 96h, Bit 3)
  ORL WMCON,#00001000b

  'Lese Adresse 0002h des EEproms und gebe die Daten am Port 2 aus:
  MOV DPTR,#0002h    'Adresse festlegen
  MOVX A,@DPTR    'Wert der Adresse in den Akku schreiben
  MOV P2,A

  'Lese Adresse 0003h des EEproms und gebe die Daten am Port 3 aus:
  MOV DPTR,#0003h    'Adresse festlegen
  MOVX A,@DPTR    'Wert der Adresse in den Akku schreiben
  MOV P3,A


SCHREIBE_UND_LESE_EEPROM_DATEN:
  'Aktiviere EEPROM Schreibzugriff durch Setzen des EEMWE Bits
  'im Register WMCON (Adresse 96, Bit 4)
  ORL WMCON,#00010000b

  'Programmiere Adresse 0000h des EEproms mit dem Wert 11001100b
  MOV DPTR,#0000h    'Adresse festlegen
  MOV A,#11001100b  'Wert festlegen
  MOVX @DPTR,A    'Wert an Adresse schreiben
  LCALL Warte_bis_Fertig

  'Programmiere Adresse 0001h des EEproms mit dem Wert 10101010b
  MOV DPTR,#0001h    'Adresse festlegen
  MOV A,#10101010b  'Wert festlegen
  MOVX @DPTR,A    'Wert an Adresse schreiben
  LCALL Warte_bis_Fertig

  'Deaktivieren des  EEPROM Schreibzugriff durch Rücksetzen des
  'EEMWE Bits im Register WMCON (Adresse 96, Bit 4)
  ANL WMCON,#11101111b

  'Lese Adresse 0000h des EEproms und gebe Wert an Port 0 aus
  MOV DPTR,#0000h    'Adresse festlegen
  MOVX A,@DPTR    'Wert der Adresse in den Akku schreiben
  MOV P0,A

  'Lese Adresse 0001h des EEproms und gebe Wert an Port 1 aus
  MOV DPTR,#0001h    'Adresse festlegen
  MOVX A,@DPTR    'Wert der Adresse in den Akku schreiben
  MOV P1,A


'Endlosschleife, Programm ende
ENDE:
LJMP Ende


WARTE_BIS_FERTIG:
  'Warte bis EEPROM Byte programmiert ist. Dazu muss
  'Bit 1 im Register WMCON (Ready/Busy) gesetzt sein:
  'Dauer ca. 2,5 ms pro Byte:
  Warte:
    MOV A,#00000010b
    ANL A,WMCON
  CJNE A,#00000010b, Warte
RET



'Daten für den Lesezugriff (werden an Port 2 und 3 dargestellt)
(2002h):
Db 11110000b, 00001111b

von Steffen (Gast)


Lesenswert?

hallo habe das selbe problem vielleicht hat jetzt schon jemand nen C
beispiel.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.