logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATMega32 - Zegar Pcf8583 - problem z ustawianiem minut i godzin powyżej 10

heyka 21 Paź 2014 22:40 1065 1
REKLAMA
  • #1 14061816
    heyka
    Poziom 17  
    Posty: 412
    Ocena: 56
    Próbuję napisać program zegara ale mam problem z ustawianiem czasu, pominąwszy to, że menu działa jak działa to nie mogę ustawić minut i godzin większych niż 10 bo wyskakuje mi liczba 161, jeżeli wgrywam sam kod menu bez obsługi układu pcf wszystko jest ok. Proszę o pomoc.


    Kod: text
    Zaloguj się, aby zobaczyć kod
    $regfile = "m32def.dat"
    $crystal = 16000000
    Enable Interrupts
    Enable Int0
    On Int0 Menu
    Dim Sekunda As Byte , Minuta As Byte , Godzina As Byte

    Dim Pozycja_menu As Byte
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
    Cursor Off
    Config Sda = Portc.1
    Config Scl = Portc.0
    Config Int0 = Low Level
    Config Rc5 = Pind.2

    Config Pina.0 = Input : Set Porta.0 ' ustawienie portu do przycisków
    Config Pina.1 = Input : Set Porta.1


    Przyc1 Alias Pina.0 ' ustawienie aliasów przycisków
    Przyc2 Alias Pina.1


    Cls

    Do



    I2cinit
    I2cstart
    I2cwbyte 162
    I2cwbyte 2
    I2cstart
    I2cwbyte 163
    I2crbyte Sekunda , Ack
    I2crbyte Minuta , Ack
    I2crbyte Godzina , Nack
    I2cstop
    Locate 1 , 1
    Lcd Bcd(godzina) ; ":" ; Bcd(minuta) ; ":" ; Bcd(sekunda)
    Loop

    Menu:
    'Disable Int0
    'Enable Interrupts

    Do


    Godzina = Makebcd(godzina)
    Minuta = Makebcd(minuta)
    Sekunda = Makebcd(sekunda)

    If Przyc1 = 0 Then
    Waitms 25
    If Przyc1 = 0 Then
    Cls
    Incr Pozycja_menu
    Waitms 200
    If Pozycja_menu = 5 Then
    Pozycja_menu = 0
    End If
    End If
    End If 'jeśli nacisniesz przycisk to zwiększ wartość zmiennej pozycja_menu
    Select Case Pozycja_menu
    Case 1:

    If Przyc2 = 0 Then
    Waitms 25
    If Przyc2 = 0 Then
    Incr Godzina
    If Godzina = 24 Then
    Cls
    Godzina = 0
    End If
    Waitms 300
    End If
    End If

    Locate 1 , 1
    Lcd "Ustaw godziny"
    Locate 2 , 1
    Lcd Godzina

    Case 2:


    If Przyc2 = 0 Then
    Waitms 25
    If Przyc2 = 0 Then
    Incr Minuta

    If Minuta = 60 Then
    Cls
    Minuta = 0
    End If
    Waitms 150
    End If
    End If

    Locate 1 , 1
    Lcd "Ustaw minuty" 'pierwsza linia ustaw godzine
    Locate 2 , 1
    Lcd Minuta
    Case 3:
    Godzina = Makebcd(godzina)
    Minuta = Makebcd(minuta)
    Sekunda = Makebcd(sekunda)

    I2cstart
    I2cwbyte 162
    I2cwbyte 2
    I2cwbyte Sekunda
    I2cwbyte Minuta
    I2cwbyte Godzina
    I2cstop
    Cls
    Lcd " Zapisano "
    Wait 1
    Cls
    End Select
    Loop Until Pozycja_menu = 4


    Return
    Kod: text
    Zaloguj się, aby zobaczyć kod
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 14066735
    heyka
    Poziom 17  
    Posty: 412
    Ocena: 56
    Wszystko działa jak należy, dołączam kod może się komuś przyda.


    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA