Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Stoper z międzyczasami na dsm8051. Jak zrobić międzyczasy?

lepos 02 Jan 2005 16:59 1897 2
  • #1
    lepos
    Level 12  
    Mam problem, mianowicie mam na dsm 8051 zrobic stoper z miedzyczasami czyli odpalam ktoryms klawiszem i leci sobie czas na siedmiosegmentowym natomiast wciskam inny klawisz i pojawia sie miedzyczas na LCD , moge robic ile chce miedzyczasow natomiast jak wcisne jakis jeszcze 3 klawisz to zatrzyma sie i koncowy wynik wynik bedzie na siedmiosegmentowym, wiem ze podobne cos jest w samplach do dsma, ale to jest bez miedzyczasow, na zajeciach przegapilem troche jak bylo o timerach i przerwaniach i nie wiem jak tam wcisnac zeby byly te miedzyczasy gdzies ;] maja one byc tak jak i caly stoper z dokladnoscia do setnych sekundy, prosze o pomoc .... :)
  • #2
    lepos
    Level 12  
    yyy no mam stoper z miedzyczasami , znaczy sie przerobiony sampel ciut ;]
    ale czy ktos moglby mi napisac komentarze do tego ? :) bo tak srednio lapie co sie gdzie dzieje w tym..

    Dodano po 2 [minuty]:

    plik sie nie wyslal wczesniej...
  • #3
    Paweł Es.
    VIP Meritorious for electroda.pl
    Ogólnie robisz to tak - po naciśnięciu przycisku zapisujesz aktualny stan zegara w przeznaczonym na dany międzyczas obszarze pamięci.

    StoperIdzie - zmienna sterująca.
    StanStoper - aktualny czas naliczony przez stoper
    MCzasx - pamięć międzyczasu o numerze X

    Code:


    Przerwanie_10ms:
    IF StoperIdzie THEN
     BEGIN
       Zwieksz(StanStopera);
       Wyswietl(StanStopera);
     END;

    RTI
    ----------------------------------------------------
    OBS_KLAW:

    IF Przycisk1 THEN StoperIdzie=TRUE;

    {Zapamiętywanie międzyczasów
    Można jeszcze dodać blokowanie zapisu do danej pamięci dla uniknięcia podwójnych wpisów - blokada jest zdejmowana przy kasowaniu liczników i pamięci czasów }

    IF StoperIdzie THEN
    BEGIN
      IF Przycisk3 THEN MCzas1=StanStopera
      IF Przycisk4 THEN MCzas2=StanStopera
      IF Przycisk5 THEN MCzas3=StanStopera
    END;

    {Wyswietlanie poszczególnych czasów}
    IF NOT StoperIdzie THEN
    BEGIN
      IF Przycisk2 THEN Wyswietlacz=StanStopera
      IF Przycisk3 THEN Wyswietlacz=MCzas1
      IF Przycisk4 THEN Wyswietlacz=MCzas2
      IF Przycisk5 THEN Wyswietlacz=MCzas3
    END;

    {Zatrzymanie stopera}

    IF Przycisk6 THEN ZegarIdzie=FALSE;

    {Zerowanie stopera}

    IF StoperStoi THEN
     BEGIN
       IF Przycisk7 THEN 
         BEGIN
               StanStopera=0;
               MCzas1=0
               MCzas2=0
               MCzas3=0
         END;
     END;

    JMP OBS_KLAW;