Hallo habe mir eine Uhr gebaut mit Leuchtfelder für Stunden 1-12 und 15,30,45 Minuten
habe es mit 4MHz Quarz und Timer probiert ,da ging die Uhr in 12 Std über 30 Minuten nach
habe dann mit 1Hz Takt probiert , geht immer noch nach
was habe ich falsch gemacht?
$regfile = "m8def.dat" 'ATMEGA 8'
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte
config portb = output
config portc = output
Config Pind.2 = Input
config portd.4 = output
config portd.5 = output
config portd.6 = output
'stunden Einstellen
Config Pind.0 = Input
Portd.0 = 1
Taster0 Alias Pind.0
'minuten Einstellen
Config Pind.1 = Input
Portd.1 = 1
Taster1 Alias Pind.1
'Uhr Voreinstellung '
Sekunde = 0
Minute = 0
Stunde = 12
Enable Interrupts
On Int0 Clock 'Uhr
Config Int0 = Rising 'steigende Flanke
Enable Int0 ' Uhr
Disable Int1 'Uhr2
do
If Sekunde > 59 Then Minute = Minute + 1
If Sekunde > 59 Then Sekunde = 0
If Minute > 59 Then Stunde = Stunde + 1
If Minute > 59 Then Minute = 0
If Stunde > 12 Then Stunde = 1
If Minute > 7 and Minute <23 Then portd.4 = 1
If Minute > 22 and Minute <38 Then portd.4 = 0
If Minute > 22 and Minute <38 Then portd.5 = 1
If Minute > 37 and Minute <60 Then portd.5 = 0
If Minute > 37 and Minute <60 Then portd.6 = 1
If Minute = 0 then portd.6 = 0
if Stunde = 1 Then portb = 1
if Stunde = 2 Then portb = 2
if Stunde = 3 Then portb = 4
if Stunde = 4 Then portb = 8
if Stunde = 5 Then portb = 16
if Stunde = 6 Then portb = 32
if Stunde > 6 Then portb = 0
if Stunde = 7 Then portc = 1
if Stunde = 8 Then portc = 2
if Stunde = 9 Then portc = 4
if Stunde = 10 Then portc = 8
if Stunde = 11 Then portc = 16
if Stunde = 12 Then portc = 32
if Stunde < 7 Then portc = 0
'Uhr einstellen Stunde
If Taster0 = 0 Then
Waitms 150
If Taster0 = 0 Then
Incr Stunde
End If
End If
'Uhr einstellen minute '
If Taster1 = 0 Then
Waitms 150
If Taster1 = 0 Then
Incr Minute
Sekunde = 0
End If
End If
'Uhr komplett auf Null stellen '
If Taster0 = 0 And Taster1 = 0 Then
Sekunde = 0
Minute = 0
Stunde = 12
Waitms 150
End If
'------------------------------------------------------------------------------
Loop
End
Clock:
Incr sekunde
Return
habe es mit 4MHz Quarz und Timer probiert ,da ging die Uhr in 12 Std über 30 Minuten nach
habe dann mit 1Hz Takt probiert , geht immer noch nach
was habe ich falsch gemacht?
$regfile = "m8def.dat" 'ATMEGA 8'
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40
Dim Sekunde As Byte
Dim Minute As Byte
Dim Stunde As Byte
config portb = output
config portc = output
Config Pind.2 = Input
config portd.4 = output
config portd.5 = output
config portd.6 = output
'stunden Einstellen
Config Pind.0 = Input
Portd.0 = 1
Taster0 Alias Pind.0
'minuten Einstellen
Config Pind.1 = Input
Portd.1 = 1
Taster1 Alias Pind.1
'Uhr Voreinstellung '
Sekunde = 0
Minute = 0
Stunde = 12
Enable Interrupts
On Int0 Clock 'Uhr
Config Int0 = Rising 'steigende Flanke
Enable Int0 ' Uhr
Disable Int1 'Uhr2
do
If Sekunde > 59 Then Minute = Minute + 1
If Sekunde > 59 Then Sekunde = 0
If Minute > 59 Then Stunde = Stunde + 1
If Minute > 59 Then Minute = 0
If Stunde > 12 Then Stunde = 1
If Minute > 7 and Minute <23 Then portd.4 = 1
If Minute > 22 and Minute <38 Then portd.4 = 0
If Minute > 22 and Minute <38 Then portd.5 = 1
If Minute > 37 and Minute <60 Then portd.5 = 0
If Minute > 37 and Minute <60 Then portd.6 = 1
If Minute = 0 then portd.6 = 0
if Stunde = 1 Then portb = 1
if Stunde = 2 Then portb = 2
if Stunde = 3 Then portb = 4
if Stunde = 4 Then portb = 8
if Stunde = 5 Then portb = 16
if Stunde = 6 Then portb = 32
if Stunde > 6 Then portb = 0
if Stunde = 7 Then portc = 1
if Stunde = 8 Then portc = 2
if Stunde = 9 Then portc = 4
if Stunde = 10 Then portc = 8
if Stunde = 11 Then portc = 16
if Stunde = 12 Then portc = 32
if Stunde < 7 Then portc = 0
'Uhr einstellen Stunde
If Taster0 = 0 Then
Waitms 150
If Taster0 = 0 Then
Incr Stunde
End If
End If
'Uhr einstellen minute '
If Taster1 = 0 Then
Waitms 150
If Taster1 = 0 Then
Incr Minute
Sekunde = 0
End If
End If
'Uhr komplett auf Null stellen '
If Taster0 = 0 And Taster1 = 0 Then
Sekunde = 0
Minute = 0
Stunde = 12
Waitms 150
End If
'------------------------------------------------------------------------------
Loop
End
Clock:
Incr sekunde
Return