Klar kann der ATMega8 das.
Ich hab den jetzt aber nicht gekürzt. Aber ich denke, da sollte jeder in der Lage sein, die nötigen Subs herraus zu lesen.Code:$regfile = "m8def.dat" $crystal = 16000000 $baud = 19200 Ddr_sck Alias Ddrc.4 Ddr_sdio Alias Ddrc.5 Port_sck Alias Portc.4 Port_sdio Alias Portc.5 Pin_sdio Alias Pinc.5 Declare Sub Adns2610_init() Declare Sub Adns2610_write_byte(byval Write_byte As Byte) Declare Function Adns2610_read_byte() As Byte Declare Sub Adns2610_write_operation(byval Address_byte As Byte , Byval Data_byte As Byte) Declare Function Adns2610_read_operation(byval Address_byte As Byte) As Byte On Urxc Onrxd Enable Urxc Enable Interrupts Dim Empfangsbyte As Byte Dim Zeichen As String * 1 Dim Print_byte As Byte Declare Sub Picture() Declare Sub Properties() Declare Sub Xy() Call Adns2610_init() Dim Read_data As Byte Read_data = 0 Do Loop End Onrxd: Empfangsbyte = Udr Zeichen = Chr(empfangsbyte) If Zeichen = "#" Then Call Picture() End If If Zeichen = "!" Then Call Properties() End If If Zeichen = "$" Then Call Xy() End If Return Sub Picture() Call Adns2610_write_operation(&H00 , &H01) Waitus 500 Call Adns2610_write_operation(&H08 , &H00) Waitus 100 Local I As Integer For I = 1 To 324 Print_byte = Adns2610_read_operation(&H08) Print Print_byte; Waitms 10 Next I End Sub Sub Properties() Print_byte = Adns2610_read_operation(&H04) Print Print_byte; Waitms 10 Print_byte = Adns2610_read_operation(&H09) Print Print_byte; Waitms 10 Print_byte = Adns2610_read_operation(&H0a) Print Print_byte; End Sub Sub Xy() Print_byte = Adns2610_read_operation(&H03) Print Print_byte; Waitms 10 Print_byte = Adns2610_read_operation(&H02) Print Print_byte; End Sub Sub Adns2610_init() Ddr_sck = 1 Ddr_sdio = 1 Port_sck = 1 Port_sdio = 1 Call Adns2610_write_operation(&H00 , &H80) Waitus 250 End Sub Sub Adns2610_write_byte(byval Write_byte As Byte) Local I As Byte Ddr_sdio = 1 For I = 7 To 0 Step -1 Port_sck = 0 Port_sdio = Write_byte.i Waitus 1 Port_sck = 1 Waitus 1 Next I Ddr_sdio = 0 Port_sdio = 0 End Sub Function Adns2610_read_byte() As Byte Local I As Byte Local Data_byte As Byte Waitus 250 For I = 7 To 0 Step -1 Port_sck = 0 Waitus 1 Port_sck = 1 Data_byte.i = Pin_sdio Next I Adns2610_read_byte = Data_byte End Function Sub Adns2610_write_operation(byval Address_byte As Byte , Byval Data_byte As Byte) Address_byte = Address_byte Or &B10000000 Call Adns2610_write_byte(address_byte) Call Adns2610_write_byte(data_byte) End Sub Function Adns2610_read_operation(byval Address_byte As Byte) As Byte Call Adns2610_write_byte(address_byte) Adns2610_read_operation = Adns2610_read_byte() End Function
Viel Erfolg damit.
Wenn noch Fragen bzgl. Maussensor sind, einfach fragen.
Gruß
Hacker







Zitieren

Lesezeichen