runner02
03.08.2011, 14:25
Hallo,
https://www.roboternetz.de/community/showthread.php?54233-Dezimalzahl-in-Bin%E4rzahl-umwandeln-Atmega8&p=519908#post519908
Das würde ich gerne anwenden, in Form einer binären Uhr...
Code ist folgender,
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 130
$swstack = 130
Config Portd = Output
Config Timer1 = Timer , Prescale = 1024
Enable Timer1
Dim minutes as Byte
Dim hours as Byte
Dim day as Integer
Dim tausender as Byte
Dim hunderter as Byte
Dim zehner as Byte
Dim einer as Byte
Dim i as Byte
DDRD=&B11111111
DDRC=&B11111111
DDRB=&B11111000
On Timer1 Isr_von_timer1
Enable Interrupts
Timer1 = 6942
Do ' Hauptprogramm
if hours=23 and minutes=50 ' Fehler: 'three parameters expected' in file C/.../Uhr.bas?
then ' Then als Fehler erkannt - unknown statement?
day=day+1
hours=0
end if
If Pinb.0 = 1 Then
minutes=minutes+1
End If
If Pinb.1 = 1 Then ' Taster, um die Uhr einzustellen
hours=hours+1
End If
If Pind.b = 1 Then
day=day+1
End If
If Pinb.3 = 1 Then
day=day+100
End If
If Pinb.4 = 1 Then ' gib die Anzahl der laufenden Tage an
tausender=day/1000
hunderter=(day-1000*tausender)/100
zehner=(day-1000*tausender-100*hunderter)/10
einer=(day-1000*tausender-100*hunderter-10*zehner)
for i=0 to i=tausender step 1 'jedes mal blinken gibt einen Tausender -> 5* blinken = 5000
Pinb.5=1
waitms 100
Pinb.5=0
waitms 100
Next
for i=0 to i=hunderter step 1
Pinb.6=1
waitms 100
Pinb.6=0
waitms 100
Next
for i=0 to i=zehner step 1
Pinb.7=1
waitms 100
Pinb.7=0
waitms 100
Next
for i=0 to i=einer step 1
Pind.7=1
waitms 100
Pind.7=0
waitms 100
Next
End If
PORTD=Bin(minutes)
PORTC=Bin(hours)
Loop
End
Isr_von_timer1:
Timer1 = 6942
minutes=minutes+1
if minutes=60
then minutes = 0
hours=hours+1
end if
PORTD=Bin(minutes)
PORTC=Bin(hours)
Return
'Line 0 Loop expected, in file: <- leer, keine Pfadangabe
Aber es werden leider 3 Fehler angezeigt beim Compilieren, die ich nicht beheben kann :(
https://www.roboternetz.de/community/showthread.php?54233-Dezimalzahl-in-Bin%E4rzahl-umwandeln-Atmega8&p=519908#post519908
Das würde ich gerne anwenden, in Form einer binären Uhr...
Code ist folgender,
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 130
$swstack = 130
Config Portd = Output
Config Timer1 = Timer , Prescale = 1024
Enable Timer1
Dim minutes as Byte
Dim hours as Byte
Dim day as Integer
Dim tausender as Byte
Dim hunderter as Byte
Dim zehner as Byte
Dim einer as Byte
Dim i as Byte
DDRD=&B11111111
DDRC=&B11111111
DDRB=&B11111000
On Timer1 Isr_von_timer1
Enable Interrupts
Timer1 = 6942
Do ' Hauptprogramm
if hours=23 and minutes=50 ' Fehler: 'three parameters expected' in file C/.../Uhr.bas?
then ' Then als Fehler erkannt - unknown statement?
day=day+1
hours=0
end if
If Pinb.0 = 1 Then
minutes=minutes+1
End If
If Pinb.1 = 1 Then ' Taster, um die Uhr einzustellen
hours=hours+1
End If
If Pind.b = 1 Then
day=day+1
End If
If Pinb.3 = 1 Then
day=day+100
End If
If Pinb.4 = 1 Then ' gib die Anzahl der laufenden Tage an
tausender=day/1000
hunderter=(day-1000*tausender)/100
zehner=(day-1000*tausender-100*hunderter)/10
einer=(day-1000*tausender-100*hunderter-10*zehner)
for i=0 to i=tausender step 1 'jedes mal blinken gibt einen Tausender -> 5* blinken = 5000
Pinb.5=1
waitms 100
Pinb.5=0
waitms 100
Next
for i=0 to i=hunderter step 1
Pinb.6=1
waitms 100
Pinb.6=0
waitms 100
Next
for i=0 to i=zehner step 1
Pinb.7=1
waitms 100
Pinb.7=0
waitms 100
Next
for i=0 to i=einer step 1
Pind.7=1
waitms 100
Pind.7=0
waitms 100
Next
End If
PORTD=Bin(minutes)
PORTC=Bin(hours)
Loop
End
Isr_von_timer1:
Timer1 = 6942
minutes=minutes+1
if minutes=60
then minutes = 0
hours=hours+1
end if
PORTD=Bin(minutes)
PORTC=Bin(hours)
Return
'Line 0 Loop expected, in file: <- leer, keine Pfadangabe
Aber es werden leider 3 Fehler angezeigt beim Compilieren, die ich nicht beheben kann :(