Also, das Konzept ist so:
Alle Teilnehmer definieren ihre Adresse und sind immer empfangsbereit.
Code:
 
      Twi_slv_addr = Mn1_adr         ' Der eine Controller

'      Twi_slv_addr = Mn2_adr         ' der andere Controlle

      Twi_sr_data = Varptr(twi_slv_buff(1))             'datenbuffer empfang 
      Twi_st_data = Varptr(twi_slv_buff(1))             'datenbuffer senden 

' wenn du eh' keine Broadcasts (GCA) verwendest, würde ich den "+1"-er auslassen, du brauchst dann auch nicht auf GCA abzufragen  

      Twar = Twi_slv_addr        'I2C Adress 
'--------------etc, etc-
Do 

'--------------etc, etc-
' das mit den Sensoren lass' ich da aus
'---------------------------------  

     If Twi_slv_flag = &H60 Then 
     '----------------------------------------------------------------- 
     ' Ergebnis als Slave auswerten 
     '----------------------------------------------------------------- 
           Locate 1 , 1 
           Lcd ; "SLVrecv" ; 'es ist was empfangen worden
           Locate 1 , 9 
           Lcd Hex(twi_slv_addr) ; " "; 
           For Temp = 1 To Twi_sr_cntr 
                 Locate 1 , 11 
                 Lcd Hex(twi_slv_buff(temp));   'print der Daten   
           Next 
           Twi_slv_flag = 0         'löschen marker 
           Twi_slv_stat = 0         'löschen marker 
           Gosub Twi_sense        'alles wieder enablen 
                                          'und Bus freigeben 


           if twi_slv_buff(1) = 25   then       ' ?  
' ----------------------  Kommando ausführen ----------------------------
                  gosub antwort_daten_senden
           End If 
      End If 

'----------------------------------------------------------------- 
'         Unabhängig davon Jede Sekunde was senden & empfangen 
'----------------------------------------------------------------- 
        If Timeout = 1 Then 
            Timeout = 0                           'ja 
            Gosub frage_daten_senden     'Senden in einer SUB 
      End If 
   Loop 
End 

'---------------------------------------- 
'     1 mS Ticker 
'---------------------------------------- 
Interrupt_ticker:                                           ' Timer for Timer Queue 
   Timer0 = Tmr_c_preload 
   Incr Timediv 
   If Timediv = Tmr_c_divis Then 
      Timeout = 1                                           'eine Sekunde ist rum 
      Timediv = 0 
   End If 
   Return 

' 
'---------------------------------------- 
$include "Twi_show_state.bas" 
'---------------------------------------- 
antwort_daten_senden:
          For Temp = 1 To 8   ' 8 Byte 
                  twi_mst_buff(temp) = temp ' 1,2,3,4,5,6,7,8 
          next 
          Twi_mst_addr = Mn2_adr    'jeweils der andere  
          Twi_mt_cntr = 8                 '8 Byte
          Twi_mr_cntr = 0                 ' nix holen, nur senden
          Twi_mt_data = Varptr(twi_mst_buff(1))   ' adresse Daten 
           Gosub Run_wait_master     ' auf gehts 
          return

frage_daten_senden:
          twi_mst_buff(1) = 25          'Kommando
          Twi_mst_addr = Mn2_adr    'jeweils der andere  
          Twi_mt_cntr = 1                 '1 Byte
          Twi_mr_cntr = 0                 ' nix holen, nur senden
          Twi_mt_data = Varptr(twi_mst_buff(1))   ' adresse Daten 
          Gosub Run_wait_master     ' auf gehts 
          return
' ----------------------------- sende kontrolle ------------------------
Run_wait_master: 
      Gosub Mst_start                                       'aufruf 
      Select Case Twi_mst_flag                              'ergebnis ? 
      Case Twi_m_sent: 
               Locate 3 , 1                                 'gesendet 
               Lcd "<<MASTsent:" ; Hex(twi_mst_addr) ; " "; 
               Print 
               For Temp = 1 To Twi_mt_cntr 
               Locate 3 , 14 
                     Lcd Twi_mst_buff(temp); 
               Next 
               Print 
               Twi_mst_flag = 0 
               Twi_mst_flag = 0 
      'Case Else:                                            'irgendein Problem 
                'Print Chr(7) ; Hex(twi_mst_addr) ; " "; 
                'Call Twi_show_state(twi_mst_flag) 
      End Select 
   Return
DIe Sache mit der Sende-WIederholung im Fehlerfall kannst du dir auch sparen, da ja nach einer Sekunde sowieso wieder ein Kommando kommt.

Auch die ganzen "slave transmitter" und "master receiver" Sachen brauchst du ja eigentlich nicht.

Theoretisch (ich konnte es jetzt nicht testen) schickt jeder der beiden
jede Sekunde eine Message mit "25", worauf der dann 8 bYte mit 1,2,..8 zurückschickt.