-         

Ergebnis 1 bis 6 von 6

Thema: Code - Softclock (mit Uhrenquarz), mit zwei Tasten stellbar

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    47
    Beiträge
    2.556

    Code - Softclock (mit Uhrenquarz), mit zwei Tasten stellbar

    Anzeige

    Wen es interessiert - hier habe ich mal den Code einer per zwei Taster stellbaren Softclock.

    Benutzt wird ein Mega8/16 (SnugBoard, intern mit 1MHz getaktet), Fusebits auf Auslieferungszustand, LCD an PortB, Taster1 zum Stellen an PD.0, Taster2 zum Hochzählen an PD.3., zwischen XTAL ist ein 32.786 kHz Uhrenquarz

    Es wird zum Stellen Alles nacheinander eingestellt (Stunde, Minute, Tag, Monat, Jahr)

    Code:
    '************************************************************
    '
    'Atmega Softclock -> genau Uhrzeit ohne RTC (Real-Time-Clock)
    '
    'Benutzt wird ein Mega8/8, Fusebits auf Auslieferungszustand,
    'Lcd An Portb , Taster Zum Stellen An Pd.0
    'zum Hochzählen An Pd.3.
    'zwischen XTAL ist ein 32.xxx Uhrenquarz
    '14.08.2006, Andree-HB, www.pixelklecks.de
    '************************************************************
    
    
    
    $regfile = "m8def.dat"
    
    
    Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.1 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
    Config Lcd = 24 * 2
    Initlcd
    Cursor Off
    Cls
    
    Enable Interrupts
    
    Config Date = Mdy , Separator = /
    Config Clock = Soft
    Config Portd = Input
    
    
    Portd.0 = 1                                                 'Taster1, Zeit/Datum stellen, PullUp ein, schaltet gegen Minus
    Portd.3 = 1                                                 'Taster2,  Zahl hochzählen, PullUp ein, schaltet gegen Minus
    
    
    Time$ = "00:00:00"                                          'Setzen auf Startwert
    Date$ = "00/00/00"                                          'Setzen auf Startwert
    
    Do
       Locate 1 , 1
       Lcd Time$                                                'Zeige Zeit in Zeile1
       Locate 2 , 1
       Lcd _day ; "/" ; _month ; "/0" ; _year                   'Zeige Datum in Form DD/MM/YYin Zeile2
    'lcd Date$                                                     'zeige Datum in Form MM/DD/YY
    
       If Pind.0 = 0 Then Gosub Time                            'wiederhole Anzeige bis Taster 1 zum Stellen gedrückt, springe nach Sub "Time"
    Loop
    End
    
    
    'Stunde
    Time:
    Waitms 200
    Cls                                                         'lösche Zeilen
    Do
    Locate 1 , 1
    Lcd "Set Hour:"                                             'Stunden setzen
    Locate 2 , 1
    Lcd _hour
             If Pind.3 = 0 Then                                 'Mit Taster 2
               Incr _hour                                          'hochzählen
               Locate 2 , 1
               Lcd _hour
             End If
    If _hour > 23 Then                                          'Zählt bis Max, danach wieder ab 0
    Cls
    _hour = 00
    End If                                                      'solange, bis Taster 1 gedrückt
    Loop Until Pind.0 = 0
    Waitms 200
    
    
    
    'Minute
    Cls
    Do
    Locate 1 , 1
    Lcd "Set Minute:"
    Locate 2 , 1
    Lcd _min
             If Pind.3 = 0 Then
               Incr _min
               Locate 2 , 1
               Lcd _min
             End If
    If _min > 59 Then
    Cls
    _min = 00
    End If
    Loop Until Pind.0 = 0
    Waitms 200
    Cls
    
    
    
    'Tag
    Cls
    Do
    Locate 1 , 1
    Lcd "Set Day :"
    Locate 2 , 1
    Lcd _day
             If Pind.3 = 0 Then
               Incr _day
               Locate 2 , 1
               Lcd _day
             End If
    If _day > 31 Then
    Cls
    _day = 01
    End If
    Loop Until Pind.0 = 0
    Waitms 200
    Cls
    
    
    
    'Monat
    Cls
    Do
    Locate 1 , 1
    Lcd "Set Month :"
    Locate 2 , 1
    Lcd _month
             If Pind.3 = 0 Then
               Incr _month
               Locate 2 , 1
               Lcd _month
             End If
    If _month > 12 Then
    Cls
    _month = 01
    End If
    Loop Until Pind.0 = 0
    Waitms 200
    Cls
    
    
    
    'Jahr
    Cls
    Do
    Locate 1 , 1
    Lcd "Set Year :"
    Locate 2 , 1
    Lcd _year
             If Pind.3 = 0 Then
               Incr _year
               Locate 2 , 1
               Lcd _year
             End If
    If _year > 10 Then
    Cls
    _year = 00
    End If
    Loop Until Pind.0 = 0
    Waitms 200
    Cls
    
    
    _sec = 00                                                   'Springe Nach Setzen Von Zeit / Datum Wieder Zurueck
    Return

    Danke an Alle, die uns bei der erfolgreichen 1.000€-Aktion der IngDiba unterstützt haben! | https://www.hackerspace-bremen.de | http://www.pixelklecks.de |

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Hmm, wie wäre es mit der Einbindung eines DCF Modules, damit man nich immer die Uhr neustellen muss, wenn mal der Saft weg war ?

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    wie ist das denn im bios gelöst? bzw mit der systemuhr?
    *frag*

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    mittels gepufferter RTC

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    47
    Beiträge
    2.556
    wie wäre es mit der Einbindung eines DCF Modules
    ...weil es dafür schon eine gute geschriebene Lib gibt, ich keinen Empfänger zur Hand hatte...und ich nur mal zeigen wollte, wie einfach man die Zeit gestellt/angezeigt bekommt.
    Danke an Alle, die uns bei der erfolgreichen 1.000€-Aktion der IngDiba unterstützt haben! | https://www.hackerspace-bremen.de | http://www.pixelklecks.de |

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    @Andree-HB
    Super. Lass Dich nicht von den Nörglern abhalten, weitere Codebeispiele ins Forum zu stellen. In diesen Forum wird viel diskutiert aber es werden nur wenige lauffähige Codes gepostet.

    Eine 2-Tasten-Uhr mit gepufferter RTC hatte ich mal hier gepostet:http://www.roboternetz.de/phpBB2/zei...ag.php?t=18195

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •