Bascom C. $regfile = "m8def.dat" #include #include #include $crystal = 16000000 #define FOSC 16000000 $baud = 19200 #define BAUD 19200 Ddr_sck Alias Ddrc.4 #define Ddr_sck DDRC Ddr_sdio Alias Ddrc.5 #define Ddr_sdio DDRC Port_sck Alias Portc.4 #define Port_sck PORTC Port_sdio Alias Portc.5 #define Port_sdio PORTB Pin_sdio Alias Pinc.5 #define Pin_sdio PINC0 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(&H0 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