- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 9 von 9

Thema: BASCOM simple Uhr

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    So hier ist der korrigierte Code. Bascom gibt keine Fehler mehr aus:
    Code:
    $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 Then                         'korrigiert Then hinter Minutes = 50
    
    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.2 = 1 Then                                          'korrigiert PIND.2 nicht PIND.b
    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 Tausender Step 1                               'korrigiert I = Tausender weg
    
    Pinb.5=1
    waitms 100
    
    Pinb.5=0
    waitms 100
    
    Next I                                                      'korrigiert Next I
    
    For I = 0 To Hunderter Step 1                               'korrigiert I = hunderter weg
    
    Pinb.6=1
    waitms 100
    
    Pinb.6=0
    waitms 100
    
    Next
    
    
    For I = 0 To Zehner Step 1                                  'korrigiert I = zehner weg
    
    Pinb.7=1
    waitms 100
    
    Pinb.7=0
    waitms 100
    
    Next
    
    
    For I = 0 To Einer Step 1                                   'korrigiert I = einer weg
    
    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                            'korrigiert Then hinter Minutes = 60
    hours=hours+1
    end if
    
    PORTD=Bin(minutes)
    PORTC=Bin(hours)
    
    
    Return

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Toll, danke

    werd mich dann gleich daran machen, die Schaltung aufzubauen

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Auf der Steckplatine klappt es leider noch nicht...

    Code:
    If Pind.2 = 1 Then                                          'korrigiert PIND.2 nicht PIND.b
    sollte b2 sein.


    Aber nach 1 Minute leuchtet d1 noch nicht. Dafür leuchtet d4 nach 2 sek und hört nicht mehr auf...

    Ich seh schon, da kommt noch was auf mich zu

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Ich habe den Code nochmal vereinfacht bzw. habe ich mein erstes Exempel herausgepickt und will es schrittweise auf die Uhr erweitern - bis alles klappt.



    Code:
     
    '############################ Definitionen #######
    
     $regfile = "m8def.dat"
     $crystal = 1000000
     $hwstack = 130
     $swstack = 130
    
     Config Portd = Output
     Config Portc = Output
     Config Timer1 = Timer , Prescale = 64
     Enable Timer1
     Dim Sekunden As Byte
    
     On Timer1 Isr_von_timer1
    
     Enable Interrupts
     Timer1 = 49910
    
    
     '##################### Hauptprogramm ############
    
    
     Do
     Portc.4 = 1
     Waitms 200
     Portc.4 = 0
     Waitms 200
     Loop
     End
    
    
     '############################ ISR ################
    
     Isr_von_timer1:
    
     Timer1 = 49910
    
     Portc.1 = 1
     Waitms 40
     Portc.1 = 0
     Waitms 40
    
     Sekunden = Sekunden + 1
    
     If Sekunden = 60 Then
     Sekunden = 0
     End If
    
     Portd = Bin(sekunden)
    
     Return


    Portc.4 blinkt immer. Wie gedacht
    Portc.1 blinkt nur einmal, dann nicht mehr -> Timer Interrupt wird nur einmal ausgeführt!!

    Jemand zufällig ne Idee, woran dass liegen könnte?

Ähnliche Themen

  1. simple Lochrasterplatine zur led Ansteuerung
    Von quadro78 im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 1
    Letzter Beitrag: 01.04.2009, 19:36
  2. simple Lüftersteuerung
    Von Testman3000 im Forum Elektronik
    Antworten: 22
    Letzter Beitrag: 30.01.2008, 18:14
  3. Simple Webserver
    Von EDatabaseError im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 30
    Letzter Beitrag: 26.02.2007, 17:49
  4. Simple Division mit AVR
    Von martin im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 04.01.2006, 19:42
  5. Noch mal eine simple frage...
    Von schroejahr im Forum AVR Hardwarethemen
    Antworten: 7
    Letzter Beitrag: 24.09.2005, 23:19

Berechtigungen

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

LiFePO4 Speicher Test