ok

hier der code:
Code:
' ------------- Hier die üblichen RN-Control Anweisungen --------------
$regfile = "m8def.dat"
$hwstack = 32
$framesize = 16
$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

' ------------- Ende der üblichen RN-Control Anweisungen --------------




Config Portc = &B11111111
Config Portb = &B11111111
Config Adc = Single , Prescaler = Auto , Reference = Avcc   ' Adc einstellen
Config Scl = Portc.5                                        'Ports fuer IIC-Bus
Config Sda = Portc.4
Const Rnkeylcd_slaveid_write = &H40                         'I2C SlaveAdresse
Const Rnkeylcd_slaveid_read = &H41

Dim Stemp As String * 100
Dim Taste As Word
Dim A As Word
Dim B As Word
Dim C As Word
Dim W As Long

Declare Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)
Declare Sub Rnlcd_clr()
Declare Sub Rnlcd(byval Text As String)
Declare Sub Rnlcd_cr()
Declare Function Rnlcd_getscan() As Word
Declare Sub Rnlcd_scanmodus(byval Ein As Byte)              'Tastenscanmodus ein und ausschalten

'Hauptprogramm


I2cinit    'Warte bis LCD bereit

Rnlcd_clr                                                   'Scanmodus ein

Rnlcd_cursor 4 , 1
Rnlcd "Willkommen"
Rnlcd_scanmodus 1

Start Adc


Do

Rnlcd_clr
Rnlcd_cursor 1 , 1
Rnlcd "Spg1:"

W = Getadc(3)


W = 5000 * W
W = W / 10246
Rnlcd_cursor 10 , 1
Stemp = "" + Str(w)
Rnlcd Stemp
Rnlcd_cr


If W < 32 Then
Rnlcd_cursor 10 , 1
Rnlcd "zu niedrig"
End If

Waitms 60
Loop

End


'--------------------------------------------------------------
'Einige spezielle I2C.Befehle für RN-KeyLCD als Funktion definiert:

Sub Rnlcd_cursor(byval Spalte As Byte , Byval Zeile As Byte)       'Cursor setzen
Local Befehle As String * 4
  Befehle = Chr(27) + Chr(79) + Chr(spalte) + Chr(zeile)
  I2csend Rnkeylcd_slaveid_write , Befehle , 4
End Sub

Sub Rnlcd_clr()                                             'LCD löschen
Local Befehle As String * 2
  Befehle = Chr(12)
  I2csend Rnkeylcd_slaveid_write , Befehle , 1
End Sub

Sub Rnlcd_cr()                                              'LCD Zeilenvorschub
Local Befehle As String * 2
  Befehle = Chr(13) + Chr(10)
  I2csend Rnkeylcd_slaveid_write , Befehle , 2
End Sub

Sub Rnlcd(byval Text As String)                             'Eine Art Print Befehl zum Ausgeben von Text
Local Le As Word
  Le = Len(text)
  I2csend Rnkeylcd_slaveid_write , Text , Le
End Sub

Function Rnlcd_getscan() As Word                            'Scancode als Word abfragen
Local Lscan As Byte
Local Hscan As Byte


  I2cstart
  I2cwbyte Rnkeylcd_slaveid_read
  I2crbyte Lscan , Ack
  I2crbyte Hscan , Nack
  I2cstop

  If Hscan.7 = 1 Then                                       'AScii Modus
     Rnlcd_getscan = Lscan
  Else
     Rnlcd_getscan = Hscan * 256
     Rnlcd_getscan = Rnlcd_getscan + Lscan
  End If
End Function

Sub Rnlcd_scanmodus(byval Ein As Byte)                      'Tastenscanmodus ein und ausschalten
Local Befehle As String * 3
  Befehle = Chr(27) + Chr(119) + Chr(ein)
  I2csend Rnkeylcd_slaveid_write , Befehle , 3
End Sub
erstmal so denn ich habe eigentlich drei batterie blöcke.

gruß
patrick