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

Bascom ATMega32 PCF8583 i dzień tygodnia

maximus22_kr 12 Lut 2011 20:21 1672 1
REKLAMA
  • #1 9142442
    maximus22_kr
    Poziom 18  
    Witam
    Chciałem jako element dodatkowy oprócz pomiaru temperatury i zapisu na kartę SD dodać kalendarz z numerem dnia tygodnia ( później zamienić numer dnia na nazwę dnia )

    Niestety jakbym nie próbował, to cały czas wyświetla 0.

    Odczyt
    
    Sub Gettime()
    
       I2cstart
       I2cwbyte 162                                             'Wysyła adres odczytu urzadzenia (162 (0xA2) układu PCF8583)
       I2cwbyte &H00
       I2cwbyte 0                                               'włącza maskowanie roku i dnia tygodnia
       I2cstop
       I2cstart
       I2cwbyte 162                                             'Wysyła adres odczytu urzadzenia (162 (0xA2) układu PCF8583)
       I2cwbyte &H02
       I2cstart
       I2cwbyte 163
       I2crbyte Ssek , Ack                                      'Odczytuje sekundy
       I2crbyte Mm , Ack                                        'Odczytuje minuty
       I2crbyte Hh , Ack                                        'Odczytuje godziny
       I2crbyte Dday , Ack                                      'Odczytuje dni
       I2crbyte Mmonth , Nack                                   'Odczutuje miesiąc
       I2cstop
    
    
       S = Makedec(ssek)
       M = Makedec(mm)                                          'Zamiana kodu BCD na wartość dziesiętną
       H = Makedec(hh)
       'Day = Makedec(dday)
       'Month = Makedec(mmonth)
    
    
     Dzien_tygodnia = Mmonth
     Shift Dzien_tygodnia , Right , 5
     Dzien_tygodnia = Makedec(dzien_tygodnia)
    
    
      Czas_pcf = Bcd(hh) + ":" + Bcd(mm) + ":" + Bcd(ssek)      'Tworzenie stringa z czasem
      Data_pcf = Bcd(dday) + "/" + Bcd(mmonth)                  'Tworzenie stringa z datą
    
    End Sub
    


    i zapis
    
    Sub Settime
    
        'Ssek = Makebcd(s1)                                      'konwersja sekund
        Mm = Makebcd(m1)                                        'konwersja minut
        Hh = Makebcd(h1)                                        'konwersja godzin
        'Dday = Makebcd(d1)                                      'konwersja dni
        'Mmonth = Makebcd(month1)                                'konwersja miesięcy
    
    Mmonth = Makebcd(mmonth)
    Dzien_tygodnia = Mmonth
    Shift Dzien_tygodnia , Left , 5
    Mmonth = Dzien_tygodnia Or Mmonth
    
       I2cstart
       I2cwbyte 162                                             'adres zapisu
       I2cwbyte 2
       I2cwbyte Ssek                                            'zapis sekund
       I2cwbyte Mm                                              'zapis minut
       I2cwbyte Hh                                              'zapis godzin
       I2cwbyte Dday                                            'zapis dni
       I2cwbyte Mmonth                                          'zapis miesięcy
       I2cstop
    
    
        Waitms 15
    
    
        End Sub
    
    


    Chyba coś nie do końca rozumiem ideę maskowania lub przesuwania bitów.
  • REKLAMA
  • #2 9142514
    piotrva
    VIP Zasłużony dla elektroda
    Włączając maskowanie sprzętowe w pcf wyłączasz możliwość odczytu dnia tygodnia...
    Musisz to wyłączyć i ręcznie maskować za pomocą And i przy zapisie Or
REKLAMA