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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.