Hallo,

ich habe vor kurzen angefangen, eine Binäruhr mit LED-Anzeige zu bauen. Mittlerweile habe ich die Platine fertig gelötet und habe mi9ch an den Code gemacht. Nun stehe ich allerdings vor dem Problem, dass der Atmega samt seiner schaltung nicht so wollen wie ich.

Code:
$regfile "m8def.dat"
$crystal = 16000000

Dim Sec As Byte
Dim Minu As Byte
Dim Hour As Byte
Dim Flag As Bit
Dim X As Byte
Dim Y As Byte
'Dim Tag As Integer
Sec = 0
Minu = 0
Hour = 0

Config Portd = Output
Config Portc = Output
Config Portb = Output

Config Timer1 = Timer , Prescale = 256
Load Timer1 , 3036

Enable Timer1

On Timer1 Timer_interrupt
Enable Interrupts

' Portd.0 = 0
'Tag = 0
Do
'(
If Tag > 976 Then
Incr Sec
Tag = 0
If Portd.0 = 1 Then Portd.0 = 0
Else
Portd.0 = 1
End If
')

For X = 0 To 2
Y = X + 3
Portb.y = Sec.x
Next

X = 0
Y = 0

For X = 3 To 5
Y = X - 3
Portc.y = Sec.x
Next

X = 0
Y = 0

For X = 3 To 5
Y = X - 3
Portb.y = Minu.x
Next

X = 0
Y = 0

For X = 0 To 2
Y = X + 5
Portd.y = Minu.x
Next

X = 0
Y = 0

For X = 0 To 4
Portd.x = Hour.x
Next

X = 0
Y = 0

Flag = 0
If Flag = 0 Then
 If Sec > 59 Then
 Sec = 0
 Incr Minu
 End If

 If Minu > 59 Then
 Minu = 0
 Incr Hour
 End If

  If Hour > 23 Then
 Hour = 0
 End If

 End If

Loop


'Do
'Loop

Timer_interrupt:

Incr Sec

Flag = 1


'Toggle Portd.0
Load Timer1 , 3036
Return
Soweit so gut. Zur Zeit läuft die Schaltung über ein 4,5 V Netzteil, woher vermutlich die Ungenauigkeit des Quarzoszillators stammt. Das aktuelle Problem ist allerdings, dass bis auf 3 LEDs (32, 16, 8 Sekunden) alle nur wild am flakern sind.
Die Beschaltung der Ports:
Code:
PD0 = 1 h
PD1 = 2 h
PD2 = 4 h
PD3 = 8 h
PD4 = 16 h
PD5 = 1 min
PD6 = 2 min
PD7 = 4 min
PB0 = 8 min
PB1 = 16 min
PB2 = 32 min
PB3 = 1 sek
PB4 = 2 sek
PB5 = 4 sek
PC0 = 8 sek
PC1 = 16 sek
PC2 = 32 sek
Ich hoffe ihr könnt mir da weiter helfen

MfG DaRe