Gast
#1435423
Hallo Leute, ich will mit einem PIC18F4550 (20MHz) ASCII-Codes in einen EEPROM Speicher (ST24C02) schreiben auslesen. Ich habe ein Beispiel Programm gefunden, welches ich nicht verstehe: ------------------------------------------------------------------------ #include <18f4550.h> #fuses HS,NOPROTECT,NOWDT,NOLVP #use delay(clock=20000000) #include <lcd.c> #use i2c(master,sda=pin_b0,scl=pin_b1) // i2c-Bus einbinden int8 Schreibwert,Lesewert; int1 ack=0; // Acknowledge-Bit für i2c-Bus int i = 0; main() // Beginn des Hauptprogrammes { lcd_init(); // Initialisierung des LCDs Schreibwert=0; while(true) { printf(lcd_putc,"\fSchreibwert: %u",Schreibwert); delay_ms(1000); i2c_start(); // externen Speicher beschreiben i2c_write(0xa0); // Adresse des externen Speichers+"write" i2c_write(0); // Speicheradresse 8 beschreiben i2c_write(Schreibwert); // die Variable "Schreibwert" schreiben i2c_stop(); delay_ms(50); i2c_start(); // externen Speicher auslesen i2c_write(0xa0); // Adresse des externen Speichers+"write" i2c_write(0); // Speicheradresse 8 auslesen i2c_start(); // laut Datenblatt nocheinmal starten i2c_write(0xa1); // Adresse des externen Speichers+"read" Lesewert=i2c_read(ack); // Speicherinhalt auslesen i2c_stop(); printf(lcd_putc,"\nLesewert: %u",Lesewert); delay_ms(500); Schreibwert++; // Variable "Schreibwert" um 1 erhöhen } } ------------------------------------------------------------------------ Ich habe es getestet, es funktioniert. Doch warum muss man zuerst i2c_write(0); schreiben und kann erst dann die eigentlichen Daten schreiben? Schreibt man einen Wert in den Speicher, wird die Speicheradresse automatisch um 1 erhöht. Wie zu einer bestimmten Stelle springen und dort zu lesen/ schreiben beginnen? Danke für eure Hilfe