Hi pebisoft

Warum C-Programm?
Ich will versuchen das mit Bascom hinzukriegen.

Mein Code habe ich ober schonmal gepostet, der ist aber nicht mehr aktuell:
Code:
'Gameboy Kamera

$regfile = "m8515.dat"                                      'ATmega8515-Deklarationen
$crystal = 4000000                                          'Quarz: 4 MHz
$baud = 9600

Declare Sub Register_laden(addr As Byte , Wert As Byte)

Dim Regaddr(8) As Byte
Dim Regwert(8) As Byte
Dim I As Byte

Dim Bild(16384) As Xram Byte
Dim Z As Word

'Register festlegen:
Regaddr(1) = 1
Regaddr(2) = 2
Regaddr(3) = 3
Regaddr(4) = 4
Regaddr(5) = 5
Regaddr(6) = 6
Regaddr(7) = 7
Regaddr(8) = 0

Regwert(1) = 128
Regwert(2) = 14
Regwert(3) = 6
Regwert(4) = 0
Regwert(5) = 1
Regwert(6) = 0
Regwert(7) = 1
Regwert(8) = 7

Config Scl = Portb.2
Config Sda = Portb.3
Config I2cdelay = 10

'A/D-Wandler einstellen:
I2cinit
I2cstart
I2cwbyte &B10010000
I2cwbyte &B00000000
I2cstop


Config Portb.0 = Output                                     'XCK
Config Portb.1 = Output                                     'Reset
Config Portb.4 = Output                                     'Sin
Config Portd.3 = Input                                      'read
Config Portd.4 = Output                                     'Load
Config Portd.5 = Output                                     'Start

Config Portd.2 = Output
Portd.2 = 1
Waitms 1000
Portd.2 = 0
Waitms 1000
Portd.2 = 1

Xckpin Alias Portb.0
Resetpin Alias Portb.1
Sinpin Alias Portb.4
Loadpin Alias Portd.4
Startpin Alias Portd.5
Readpin Alias Pind.3

Resetpin = 1                                                'Reset High
Xckpin = 1                                                  'XCK High
Loadpin = 0                                                 'Load Low
Startpin = 0                                                'Start Low

'Reset:
Waitus 5
Xckpin = 0                                                  'XCK Low
Waitus 2
Resetpin = 0                                                'Reset Low
Waitus 2
Xckpin = 1                                                  'XCK High
Waitus 2
Resetpin = 1                                                'Reset High
Waitus 2

'Register Laden
Call Register_laden(regaddr(1) , Regwert(1))
Call Register_laden(regaddr(2) , Regwert(2))
Call Register_laden(regaddr(3) , Regwert(3))
Call Register_laden(regaddr(4) , Regwert(4))
Call Register_laden(regaddr(5) , Regwert(5))
Call Register_laden(regaddr(6) , Regwert(6))
Call Register_laden(regaddr(7) , Regwert(7))
Call Register_laden(regaddr(8) , Regwert(8))

'Start:
Waitus 2
Startpin = 1
Waitus 2
Xckpin = 1
Waitus 2
Startpin = 0

'Do
   'Warten bis Bild fertig:
   Do
      Waitus 3
      Xckpin = 0
      Waitus 5
      Xckpin = 1
      Waitus 2
   Loop Until Readpin = 1

'   'Bild lesen;

   For Z = 1 To 16383
      I2cstart
      I2cwbyte &B10010001
      I2crbyte Bild(z) , 9
      I2cstop
      Xckpin = 0
      Waitus 4
      Xckpin = 1
   Next
   Xckpin = 0
   Waitus 1
   For Z = 1 To 16384
      Printbin Bild(z)
   Next

Do
Loop

End                                                         'end program

Sub Register_laden(addr As Byte , Wert As Byte)
   'Registeraddr übertragen:
   For I = 1 To 3
      Xckpin = 0
      Sinpin = Addr.i
      Waitus 3
      Xckpin = 1
      Waitus 3
   Next

   'Registerwert übertragen:
   For I = 1 To 8
      Xckpin = 0
      Sinpin = Wert.i
      Waitus = 3
      Xckpin = 1
      Waitus = 3
   Next

   Loadpin = 1
   Waitus 2
   Xckpin = 0
   Waitus 4
   Loadpin = 0
   Sinpin = 0
End Sub
Diesen Code habe ich jetzt auf dem Controller.
Die Schleife mit dem Printbin liefert mir im Terminalprogramm die Werte von oben.