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.
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.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
Die Beschaltung der Ports:
Ich hoffe ihr könnt mir da weiter helfenCode: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
MfG DaRe







Zitieren

Lesezeichen