AT89S8252 Daten Speichern

Gast #12326
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren