Anzeige:

Und mal wieder DCF77....

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

Und mal wieder DCF77....

Von kea am 03.03.2012 11:50

Hallo und guten Tag,
nachdem ich schon einige Zeit das Forum als Gast durchstöbere, habe ich mich entschieden Euch auch mal mit einer Frage zu "löchern".

Seit einigen Wochen beschäftige ich mich mit Bascom und den Atmels8 und 16, dabei ist das folgende Projekt einer Funkuhr (jaja, ich weiß.... schon wieder eine!) herausgekommen. Diese funktioniert ja auch zu meiner Zufriedenheit. Allerding stoße ich jetz ganz heftig an die 4096 byte Grenze der Demoversion von Bascom 2.0.7.1.

Nun zu meiner eigentenlichen Frage: kann man diesen Code noch irgendwie verkleinern, ohne auf Funktionen zu verzichten? Mir schweben da noch einige Ideen duch den Kopf..... die aber leider nicht mehr reinpassen.

'*********************************'
'* Dcf77 Uhr mit Pollin_Modul *'
'* Glcd TG 12864B (Pollin) *'
'* Kea 64 *'
'* Januar 2012 *'
'*********************************'
$regfile = "m16def.dat"
$swstack = 16
$crystal = 8000000
$lib "glcdKS108.lbx"
$baud = 9600

Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Porta , Cd = 2 , Rd = 1 , Ce = 4 , Ce2 = 5 , Enable = 0 , Reset = 3

Setfont My6_8

Config Dcf77 = Pinb.0 , Inverted = 0 , Timer = 1 , Debug = 0 , Check = 1 , Gosub = Sectic
Config Date = Dmy , Separator = .

Config Portd.7 = Output 'Licht Display
Portd.7 = 1

Config Portd.6 = Input 'taster licht

Idcf Alias Pinb.0 ' Idfc= Signal vom DCF Empfänger
Reset Portb.0 ' pull-up- off

Led Alias Portd.4 ' Led= Kontroll-Led
Config Led = Output

Dcfpon Alias Portb.1 'Dcfpon= Zur Aktivierung vom DCF_Modul von Pollin
Config Dcfpon = Output
Set Dcfpon

Declare Sub Showtime_lcd()
Declare Sub A

Dim B As Byte
Dim C As Byte
Dim D As Integer
Dim E As Dword
'Dim F As Dword

Reset Led
Set Dcfpon
Set Led
Call A
Reset Led
Wait 1
Reset Dcfpon

Cls
Enable Interrupts


'-----------------Programmstart-----------------------------------------------
Do

If Idcf = 1 Then
Set Led
Else
Reset Led
End If

Loop

End

Sectic:
'------'
If Dcf_status.7 = 1 Then
Call Showtime_lcd()
Else
Lcdat 4 , 10 , "Rufe Daten ab... !"
Lcdat 5 , 10 , " Bitte warten"
Lcdat 8 , 38 , Time$
End If

If Pind.6 = 1 Then 'Displaybeleuchtung ein / aus
Toggle Portd.7
End If


Return

'-----------------Programmende-------------------------------------------------
Sub A
Initlcd 'Begrüßungsbildschirm
Cls
Lcdat 2 , 2 , " Atmega16 __ 8MHz"
Lcdat 4 , 2 , " Glcd 128 x 64"
Lcdat 6 , 2 , " DCF77_Uhr V2.5"
Lcdat 8 , 2, " by Kea64"
Wait 8
Cls
End Sub


Sub Showtime_lcd()
B = Dayofyear()
E = Secofday()
'F = Syssec()
Incr B
Incr E
'Incr F
C = Dcf77timezone()
Cls

Lcdat 2 , 2 , D , 'Tag
Lcdat 2 , 67 , Date$ 'Datum'

Lcdat 4 , 40 , Time$ , 1 'Uhrzeit'

'Lcdat 8 , 2 , "System: " ; F 'Systemsekunden

Lcdat 6 , 2 , "Tag/Jahr: " ; B 'Tag im Jahr

Lcdat 7 , 2 , "Sek./Tag: " ; E 'Sekunden am Tag




If C = 1 Then
Lcdat 4 , 10 , "MEZ"
Else
Lcdat 4 , 10 , "MESZ"
End If
If C = 0 Then
Lcdat 4 , 6 , "FAIL"
End If

' 0=kein Signal 1 = Sommerzeit 2 = Winterzeit '
D = Dayofweek()
If Dayofweek() = 0 Then
Lcdat 2 , 2 , "Montag,"
End If
If Dayofweek() = 1 Then
Lcdat 2 , 2 , "Dienstag,"
End If
If Dayofweek() = 2 Then
Lcdat 2 , 2 , "Mittwoch,"
End If
If Dayofweek() = 3 Then
Lcdat 2 , 2 , "Donnerstag,"
End If
If Dayofweek() = 4 Then
Lcdat 2 , 2 , "Freitag,"
End If
If Dayofweek() = 5 Then
Lcdat 2 , 2 , "Sonnabend,"
End If
If Dayofweek() = 6 Then
Lcdat 2 , 2 , "Sonntag,"
End If
End Sub



End

$include "my6_8.font"



Vielleicht etwa ein kleinerer Font, Umschreiben der Routinen o.ä.??

Der Code ist wahrscheinlich noch seeeehr holprig, aber wie gesagt, mit knapp 48 Jahren und etwa 8 Wochen arbeiten mit Bascom......

Hoffe, Ihr könnt mir helfen....
Mfg kea


Hallo Leute,
hat sich erledigt, habe mir die Software gekauft. Trotzdem danke...

Anzeige: