Naja mit dem Locate-Befehl steht die Anzeige, auch mit Vornullen, immer richtig.
Müste auch ähnlich mit Fusing oder Format gehen, dann muss vorher aber in Strings gewandelt werden.


Code:
 $sim
' ATMEGA8- SelbstBauModul
$regfile = "m8def.dat"
$crystal = 14745600                                         'ext. Quarz
' /// UHR
Dim Sekunde As Word
Dim Minute As Word
Dim Stunde As Word
Dim H As String * 2
Dim H1 As String * 2
Dim M As String * 2
Dim M1 As String * 2
Dim S As String * 2
Dim S1 As String * 2



'// Zum setzten von Stunde Minute Sekunde setzen
Sekunde = 55
Minute = 59
Stunde = 3

'/// LCD ///
Config Lcd = 20 * 4
Config Lcdbus = 4

' LCD im 4Bit I/O Mode
Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.7 , Rs = Portd.6

'/// TIMER ////

Config Timer1 = Timer , Prescale = 256
Const Startwert = 7936

On Timer1 Ontimer1                                          'Interrupt-Routine für Timer1-Overflow
Enable Timer1                                               'Timer1-Overflow-Interrupt einschalten
Enable Interrupts                                           'Interrupts global zulassen
Cursor Off Noblink
Cls

'-------------------------------------------------------------------------------

Do
'Uhrzeit in Sekunde Minute Stunde
If Sekunde > 59 Then
   Sekunde = 0
   Incr Minute
End If

If Minute > 59 Then
   Minute = 0
   Incr Stunde
End If

If Stunde > 23 Then
   Stunde = 0
End If

'/// LCD Anzeige Stunde Minute Sekunde

Home
 H = Str(stunde)
 H1 = Format(h , "00")
 M = Str(minute)
 M1 = Format(m , "00")
 S = Str(sekunde)
 S1 = Format(s , "00")
 Lcd H1 ; ":" ; M1 ; ":" ; S1
 'Waitms 100
Loop


End
'//////////////////
Ontimer1:
    Timer1 = Startwert
    Incr Sekunde
Return
Hier mal ein Beispiel das ich aus dem www habe:
Code:
$sim
$regfile = "M128def.dat"
$crystal = 16000000
$hwstack = 128                                              ' default use 32 for the hardware stack
$swstack = 128                                              'default use 10 for the SW stack
$framesize = 128                                            'default use 40 for the frame space

'$lib "lcd4busy.lbx"
'$lib "lcd4.lbx"
'$lib "i2c_twi.lbx"
'$baud = 19200

Config Portb = Input
Config Portd = Input
Portb = 255
Config Portg = Input
Portg.0 = 1
Config Portc = Output
'Config Portd = Output
Ddra = 00000000
Porta = 255

Dim Count As Byte
Dim Stunden As Byte
Dim Temp As Byte
Dim Tag As Byte
Dim Tag_str As String * 2
Dim Plus As Byte
Dim Minus As Byte
Dim Uhrzeit(10) As Byte                                     'enthält die uhrzeit und das datum vorteil kann leicht erweitert werden.
Dim Uhr_help As Byte

Dim Uhrzeit_std As String * 2
Dim Uhrzeit_min As String * 2
Dim Tag_datum As String * 2
Dim Monat As String * 2
Dim Jahr As String * 2


Enable Interrupts

Config Lcd = 20 * 4a , Chipset = Ks077
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.1

Initlcd
                                         'we run it in bus mode and I hooked up only db4-db7

                                      'tell about the bus mode
                                      '[now init the clock]

Config Date = Dmy , Separator = /                           ' Deutsches-Format
Config Clock = Soft                                         '

'The format isTag/Monat/Jahr
Date$ = "18/04/07"
Time$ = "00:00:00"

'---------------------------------------------------
'clear the LCD display
Cls
Cursor Off Noblink
Do
  Gosub Page
  Gosub Tastenabfrage                                       'Hauptprogramm
 Loop

End

Tag:
Tag = Dayofweek()
Select Case Tag
Case 0 : Tag_str = "Mo"                                     'Die softclock liefert nur zahlen von
Case 1 : Tag_str = "Di"                                     'zahlen von 0-6 dewswegen muss
Case 2 : Tag_str = "Mi"                                     'die zahl in einem string gewandelt werden
Case 3 : Tag_str = "Do"
Case 4 : Tag_str = "Fr"
Case 5 : Tag_str = "Sa"
Case 6 : Tag_str = "So"
End Select
Return

Tastenabfrage:
 Debounce Pina.1 , 0 , Taste_rechts , Sub

 Return
 '##########################################
 Uhrstellen:
 Debounce Pina.3 , 0 , Tasteplus , Sub
 Debounce Pina.4 , 0 , Tasteminus , Sub
 Debounce Pina.1 , 0 , Taste_rechts_uhr , Sub
 Debounce Pina.6 , 0 , Taste_links , Sub
 Debounce Pina.2 , 0 , Enter_raus , Sub
  Return
  '----------------------------------------
Tasteplus:
If Plus = 1 Then Incr Uhrzeit(1)
If Plus = 2 Then Incr Uhrzeit(2)
If Plus = 3 Then Incr Uhrzeit(3)
If Plus = 4 Then Incr Uhrzeit(4)
If Plus = 5 Then Incr Uhrzeit(5)
If Plus = 6 Then Incr Uhrzeit(6)
If Plus = 7 Then Incr Uhrzeit(7)
If Plus = 8 Then Incr Uhrzeit(8)
If Plus = 9 Then Incr Uhrzeit(9)
If Plus = 10 Then Incr Uhrzeit(10)

If Uhrzeit(1) > 2 Then Uhrzeit(1) = 0
If Uhrzeit(2) > 9 Then Uhrzeit(2) = 0
If Uhrzeit(3) > 5 Then Uhrzeit(3) = 0
If Uhrzeit(4) > 9 Then Uhrzeit(4) = 0
If Uhrzeit(5) > 3 Then Uhrzeit(5) = 0
If Uhrzeit(6) > 9 Then Uhrzeit(6) = 0
If Uhrzeit(7) > 1 Then Uhrzeit(7) = 0
If Uhrzeit(8) > 9 Then Uhrzeit(8) = 0
If Uhrzeit(9) > 9 Then Uhrzeit(9) = 0
If Uhrzeit(10) > 9 Then Uhrzeit(10) = 0


Return
'-----------------------------
Tasteminus:
If Plus = 1 Then Decr Uhrzeit(1)
If Plus = 2 Then Decr Uhrzeit(2)
If Plus = 3 Then Decr Uhrzeit(3)
If Plus = 4 Then Decr Uhrzeit(4)
If Plus = 5 Then Decr Uhrzeit(5)
If Plus = 6 Then Decr Uhrzeit(6)
If Plus = 7 Then Decr Uhrzeit(7)
If Plus = 8 Then Decr Uhrzeit(8)
If Plus = 9 Then Decr Uhrzeit(9)
If Plus = 10 Then Decr Uhrzeit(10)

If Uhrzeit(1) > 2 Then Uhrzeit(1) = 2
If Uhrzeit(2) > 9 Then Uhrzeit(2) = 9
If Uhrzeit(3) > 5 Then Uhrzeit(3) = 5
If Uhrzeit(4) > 9 Then Uhrzeit(4) = 9
If Uhrzeit(5) > 3 Then Uhrzeit(5) = 3
If Uhrzeit(6) > 9 Then Uhrzeit(6) = 9
If Uhrzeit(7) > 1 Then Uhrzeit(7) = 0
If Uhrzeit(8) > 9 Then Uhrzeit(8) = 0
If Uhrzeit(9) > 9 Then Uhrzeit(9) = 0
If Uhrzeit(10) > 9 Then Uhrzeit(10) = 0


Return
'-----------------
Taste_rechts:
Cursor On Noblink
Cls
Plus = 1
Locate 1 , 8
Lcd "--:--"
Locate 2 , 8
Lcd "00/00/07"
Locate 1 , 8
Do
Gosub Uhrstellen
Select Case Plus
Case 1 : Locate 1 , 8
Lcd Uhrzeit(1)
Locate 1 , 8
Case 2 : Locate 1 , 9
Lcd Uhrzeit(2)
Locate 1 , 9
Case 3 : Locate 1 , 11
Lcd Uhrzeit(3)
Locate 1 , 11
Case 4 : Locate 1 , 12
Lcd Uhrzeit(4)
Locate 1 , 12
Case 5 : Locate 2 , 8
Lcd Uhrzeit(5)
Locate 2 , 8
Case 6 : Locate 2 , 9
Lcd Uhrzeit(6)
Locate 2 , 9
Case 7 : Locate 2 , 11
Lcd Uhrzeit(7)
Locate 2 , 11
Case 8 : Locate 2 , 12
Lcd Uhrzeit(8)
Locate 2 , 12
Case 9 : Locate 2 , 14
Lcd Uhrzeit(9)
Locate 2 , 14
Case 10 : Locate 2 , 15
Lcd Uhrzeit(10)
Locate 2 , 15

End Select

Loop Until Pina.2 = 0
Uhrzeit_std = Str(uhrzeit(1)) + Str(uhrzeit(2))             'wandelt  zahl in string um und packt 2 zahlen in eine speicherstelle
Uhrzeit_min = Str(uhrzeit(3)) + Str(uhrzeit(4))             ' 00000001+ 00000010 = 0000000100000010 ---->   "12 "
Tag_datum = Str(uhrzeit(5)) + Str(uhrzeit(6))
Monat = Str(uhrzeit(7)) + Str(uhrzeit(8))
Jahr = Str(uhrzeit(9)) + Str(uhrzeit(10))
_hour = Val(uhrzeit_std )
_min = Val(uhrzeit_min)                                     'umwanden vom string in eine zahle und übergabe an die uhr internen variablen.
_day = Val(tag_datum)
_month = Val(monat)
_year = Val(jahr)
_sec = 00
Cls
Return
'-----------------------------
Taste_links:
Decr Plus
If Plus > 10 Then Plus = 10

Return
'------------------------------
Enter:

Return
'------------------------
Enter_raus:

Return
Taste_rechts_uhr:
Incr Plus
If Plus > 10 Then Plus = 1

Return

'-----------------------
Page:
Gosub Tag
                                                       'cursor home
  Locate 1 , 7
 Lcd Date$
  Locate 2 , 7
  Lcd Time$
  Locate 3 , 10
                                             'show the date and time
  Lcd Tag_str
  Locate 4 , 13
  Lcd "Press  >"
Return