hier ist mein code:
Code:
$regfile = "m32def.dat"

$crystal = 9000000

$baud = 9600

$hwstack = 64
$swstack = 64
$framesize = 64

 Portd.5 = 1
 Config Portd.2 = Output                                    'leds
 Config Portd.3 = Output
 Config Portd.4 = Output
 Config Portd.5 = Input                                     'taster
  Portd.5 = 1


 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.7
 Config Lcdbus = 4
 Config Lcdmode = Port

Portc.6 = 0                                                 'display rw bei Bascom immer 0
Config Portc = Output                                   'display
Reset Portc.1                                               'write mode for display
Initlcd
Cursor Off
Cls



$lib "i2c_twi.lbx"                                          'Hardware I2C
Config Twi = 100000
'SDA und SCL definieren
Config Sda = Portc.0
Config Scl = Portd.7
Portc.0 = 1
Portd.7 = 1
I2cinit

'-------------------------------------------------------------------------------
'$lib "Lcd_i2c.lib"                                         'i2c Treiber für das LCD
'Dim _lcd_e As Byte                                          'Nötig für die Enable Auswahl
                                                          'lcd_e = 128                                 'Für LCDs mit 1 Controller
'Waitms 200


'-------------------------------------------------------------------------------
'Config Adc = Single , Prescaler = Auto                      'Für Analogtastatur
'Config Portd.3 = Output                                     'Für LED1
'Config Portd.4 = Output                                     'Für LED2

'Beep Alias Portc.2                           'für Mega32
'Beep Alias Portb.0                                          'für Mega8


'-------------------------------------------------------------------------------
Const Pcf8591 = 144                                         'DA-AD-Wandler auf Basis
Const Eeprom2 = 166                                         'Eeprom2 auf Basis
Const Eeprom1 = 174                                         'Eeprom1 oder Ram auf Basis
Const Eeprom0 = 160                                         'externes Cip Card Eeprom0
Const Pcf8574_1 = 64
Const Tda8444 = 78                                          'DA-Wandler auf Extension-Platine
Const Pcf8574_lcd = 112                                     'Portextension für LCD
Const Pcf8583_rtc = 162                                     'RTC auf Extension-Platine

Const Max520 = 94                                           'für MAX520 (extern)
Const Keyboard = 0                                          'ADC-Nr. für Analogtastatur


'-------------------------------------------------------------------------------


Declare Function Read_eeprom(byval Dev As Byte , Byref Address As Word)as Byte
Declare Function Read_eeprom_word(byref Address As Word)as Word

Declare Sub Write_eeprom(byval Dev As Byte , Byref Address As Word , Byval Wert_
As Byte)
Declare Sub Write_eeprom_word(byref Address As Word , Byref Value As Word)

Dim Address_low As Byte                                     'Address ist hier überlappend
Dim Address_high As Byte                                    'dimensioniert, um High- und Low-
Dim Address As Word At Address_low Overlay                  'Byte einfach ansprechen zu können.

Dim Value_low As Byte                                       'Dito mit Value
Dim Value_high As Byte
Dim Value As Word At Value_low Overlay

Dim Wert As Byte
Dim Temp_w As Word
Dim I As Word


'------------------------------ Demodurchlauf ----------------------------------
Cls                                                         'Intro
Lcd "EEPROM TEST"
Locate 2 , 1
Lcd "SCHREIBE"
Wait 2

Value = 0
For Address = 250 To 500                                    'von Adresse 250 bis 500
  Call Write_eeprom_word(address , Value)                   'value  ins EEprom schreiben.
  Print "adresse: " ; Address ; "   Value: " ; Value        'Value zur Abwechslung
  Value = Value + 20

  Next                                                      'um 20 erhöhen

'-------------------------------------------------------------------------------
Wait 2
Cls
Lcd " LESE"

For Address = 250 To 500                                    'die Werte wieder auslesen
  Temp_w = Read_eeprom_word(address)
  Locate 2 , 1
  Lcd "A: " ; Address ; " " ; "W: " ; Temp_w ; "   "
  Waitms 200                                                'Pause, damit man was sieht
  Print "adresse: " ; Address ; "   Value: " ; Temp_w

  Next

Locate 1 , 1
Lcd "FERTIG"
'------------------------ Ende Demodurchlauf -----------------------------------
End



'------------------------ Funktionen und Subs ----------------------------------

'-------------------------------------------------------------------------------
'- Word (value) auf 2 aufeinander folgende EEprom Adressen schreiben

Sub Write_eeprom_word(byref Address As Word , Byref Value As Word)
Call Write_eeprom(eeprom1 , Address , Value_low)
Incr Address
Call Write_eeprom(eeprom1 , Address , Value_high)
End Sub
'-------------------------------------------------------------------------------
'- Word von 2 aufeinanderfolgenden EEprom Adressen lesen
'- Der gelesene Wert ist der Rückgabewert der Funktion

Function Read_eeprom_word(byref Address As Word)as Word
Value_low = Read_eeprom(eeprom1 , Address)
Incr Address
Value_high = Read_eeprom(eeprom1 , Address)
Read_eeprom_word = Value
End Function

'-------------------------------------------------------------------------------
'- Byte (wert) auf EEprom Adresse (address) speichern

Sub Write_eeprom(byval Dev As Byte , Byref Address As Word , Byval Wert As Byte)

I2cstart
I2cwbyte Dev
I2cwbyte Address_high
I2cwbyte Address_low
I2cwbyte Wert
I2cstop
Waitms 10

End Sub
'--------------------------------------------------------
'- Byte von EEprom Adresse (address) lesen
'- Der gelesene Wert ist der Rückgabewert der Funktion

Function Read_eeprom(byval Dev As Byte , Byref Address As Word)
Dim Devread As Byte
Devread = Dev + 1

I2cstart
I2cwbyte Dev
I2cwbyte Address_high
I2cwbyte Address_low
I2cstop
I2cstart
I2cwbyte Devread
I2crbyte Read_eeprom , Nack
I2cstop

End Function