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

Ustawienie godziny z terminala

jaroslawk 26 Lip 2009 21:51 10529 7
REKLAMA
  • #1 6824874
    jaroslawk
    Poziom 21  
    Witam,
    W chwili obecnej mam napisany odczyt godziny z PFC i zastanawiam się nad tematem ustawiania godziny. Jak napisać funkcję która po wybraniu w terminalu np. b zapyta mnie o wprowadzeni godziny w formie GG:MM:SS
    Pozdrawiam
    Jarek


    
    $regfile = "attiny2313.DAT"
    $crystal = 8000000
    $baud = 9600
    Config Sda = Portb.6
    Config Scl = Portb.7
    Declare Sub Odczyt_rtc(sekundy As Byte , Minuty As Byte , Godziny As Byte)
    Declare Sub Zapis_rtc(sekundy1 As Byte , Minuty1 As Byte , Godziny1 As Byte)
    
    Dim Znak_chr As Byte
    
    Dim Sekundy As Byte
    Dim Minuty As Byte
    Dim Godziny As Byte
    Dim Sekundy1 As Byte
    Dim Minuty1 As Byte
    Dim Godziny1 As Byte
    
    ' Program główny
    '--------------------------------------
    Do
    
    Znak_chr = Inkey()
    If Znak_chr = 65 Then
    Print Chr(12)
    Call Odczyt_rtc(sekundy , Minuty , Godziny)
    Print "Zegar wewnetrzny (HH:MM:SS) " ; Godziny ; ":" ; Minuty ; ":" ; Sekundy
    End If
    
    If Znak_chr = 66 Then
    Print Chr(12)
    Licznik1 = 0
    Licznik2 = 0
    Sekundy1 = 12
    Minuty1 = 12
    Godziny1 = 14
    Call Zapis_rtc(sekundy1 , Minuty1 , Godziny1)
    End If
    
    Loop
    End
    
    ' koniec program główny
    '--------------------------------------------------------
    
    Sub Odczyt_rtc(sekundy As Byte , Minuty As Byte , Godziny As Byte)
       I2cstart
       I2cwbyte 160
       I2cwbyte 2
       I2cstart
       I2cwbyte 161
       I2crbyte Sekundy , Ack
       I2crbyte Minuty , Ack
       I2crbyte Godziny , Nack
       I2cstop
    Sekundy = Makedec(sekundy)
    Minuty = Makedec(minuty)
    Godziny = Makedec(godziny)
    End Sub
    
    Sub Zapis_rtc(sekundy1 As Byte , Minuty1 As Byte , Godziny1 As Byte)
    Sekundy1 = Makebcd(sekundy1)
    Minuty1 = Makebcd(minuty1)
    Godziny1 = Makebcd(godziny1)
       I2cstart
       I2cwbyte 160
       I2cwbyte 0
       I2cwbyte 6
       I2cstop
       I2cstart
       I2cwbyte 160
       I2cwbyte 2
       I2cwbyte Sekundy1
       I2cwbyte Minuty1
       I2cwbyte Godziny1
       I2cstop
    End Sub
  • REKLAMA
  • #2 6825092
    wader_669
    Poziom 28  
    Proste odbierz dwa znaki typu string, przeksztalc je na zmienna postaci dziesietnej, zapisz do jakiejs zmiennej, nastepnie poczekaj na : zignoruj go i to samo z nastepnymi dwoma znakami.
    Nastepnie jak bedziesz mial minuty godziny i sekundy to zapisz je do pcfa.

    Teraz helpa do reki i do roboty
  • REKLAMA
  • #3 6825129
    jaroslawk
    Poziom 21  
    Łatwo się mówi. Może jakiś zestaw poleceń.
    Chciałem to rozwiązać w następujący sposób
    Print „podaj godzinę”
    Input godzina1
    Print „podaj minuty”
    Input minuty1
    To rozwiązanie troszeczkę nie spełnia moich oczekiwań
  • Pomocny post
    #4 6825583
    wader_669
    Poziom 28  
    czego oczekujesz jeszcze? Gotowca to pomyliles forum.
  • REKLAMA
  • #5 6825773
    jaroslawk
    Poziom 21  
    Niestety dopiero zaczynam swoją przygodę z Bascom.
    Poszukuje polecenia za pomocą którego mogę wycinać ze stringu dowolne dane. Czyli wpisuję np. 12:13:14 używając polecenia 3 razy mam każdą wartość jako osobną zmienną.
  • #6 6825821
    wader_669
    Poziom 28  
    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005 napisał:

    Przeznaczenie:

    Funkcja MID() zwraca określony fragment tekstu lub zastępuje go innym tekstem.

    Składnia:

    zmienna = MID( tekst , start [, ilość] )

    MID( tekst , start [, ilość] ) = zmienna

    gdzie:

    zmienna zmienna, do której zapisany będzie rezultat działania funkcji, lub zmienna z której znaki będą wstawiane
    tekst tekst na którym przeprowadzone będą operacje,
    start pozycja w tekście od której tekst będzie zwrócony,
    ilość parametr opcjonalny - ilość zwracanych znaków.
    Opis:

    Gdy nie jest podana ilość znaków, funkcja zwraca wszystkie znaki od pozycji startowej do końca tekstu. Podczas wstawiania tekstu nie podanie ilości znaków powoduje, że instrukcja wstawia wszystkie znaki znajdujące się w wstawianej zmiennej.

    Zobacz także: LEFT , RIGHT


    Przykład:


    Dim s As XRAM String * 15, z As XRAM String * 15

    s = "ABCDEFG"
    z = Mid(s, 2, 3)
    Print z 'BCD
    z="12345"
    Mid(s, 2, 2) = z
    Print s 'A12DEFG

    End
  • REKLAMA
  • #7 6828879
    jaroslawk
    Poziom 21  
    Bardzo dziękuję za pomoc.
    Problem rozwiązany
    Polecenia Left, Mid, Right
  • #8 6829203
    wader_669
    Poziom 28  
    No raczej, mowilem ze proste. Ja ci proponowalem inna metode, oczywiscie ta twoja byla lepsza.
REKLAMA