Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[DSM`51] "Miernik refleksu" z wykorzystaniem timer

krzychoo_soft 03 Sty 2005 16:06 1548 1
  • #1 03 Sty 2005 16:06
    krzychoo_soft
    Poziom 17  

    Witam,
    Mam taki problem... Kolega mnie prosił o pomoc przy napisaniu programu na 8051 [zestaw DSM`51]... no i ja nie bardzo wiem jak się do tego zabrać bo z asemblerem u mnie trucho, więc zwracam się do was.

    Temat brzmi: "MIERNIK REFLEKSU - WYKORZYSTAC UKLAD WEWNETRZNY TIMERA"... To ma wyglądać tak że program losuje cyfrę z zakresu 0-9 i wyświetla na LCD i uruchamia timer... w momencie gdy wciśniemy na klawiaturze 'wylosowany' przycisk to wyswietlacz prezentuje czas reakcji.

    No i mam niemały problem... konkretnie chodzi o to losowanie jakiejs cyfry i to odmierzanie czasu... nie wiem jak to zrobić :/
    Wyświetlanie na LCD i 'pobieranie klawisza' wiem jak zrobić.

    Do testowania kodu urzywam programu Jagoda bo na dsm`a mnie nie stać...

    Z góry dzięki za pomoc,

    0 1
  • #2 03 Sty 2005 23:37
    hEx
    Poziom 12  

    Czesc
    Moze sprobuje pomoc takimi ogolnymi wskazowkami - tez w asm jestem poczatkujacy (nie ma to jak C :) ).
    Uzywajac np. licznika T1 w trybie 1 zliczana jest wartosc 16 bitowa - to duzo za malo na reakcje. Trzeba wiec wykorzystac dodatkowy rejestr na zliczanie wyzerowan (flaga TF1) T1 - np. A. Czyli robimy 2 petle - jedna zagniezdzona w drugiej, A++ kiedy TF1=1 (np. jnb tf1,petla1). W TL1 w zasadzie mozna pominac,w A bedzie liczba zerowan T1 a w TH1 (2^16-X), czyli czas reakcji jest rowny A*2^16+2^16-X. I miedzyczasie trzeba sprawdzac czy nacisnieto przycisk,jesli tak to clr tr1 i procedura wyswietlajaca. Dobrze by bylo tez zamienic wynik z [us]H na chociaz [ms]D.
    Co do liczby losowej to zeby program z sam siebie taka dawal to za bardzo nie wiem jak, przy uzyciu czlowieka to mozna by zapuscic jakas petle zliczajaca do 9 i po nacisnieciu przycisku petla by stawala na jakies liczbie. Takie losowania z prawdziwego zdarzenia :> mozna zrobic ,wzmacniajac i zamieniajac na postac cyfrowa, smieci ze zlacza np w tranzystorze.
    A i jeszcze moze na start do tl1 i th1 mozna by wpisac (cos equ d8efh || mov tl1,#low cos || mov th1,#high cos) 55535D, licznik wtedy bedzie przepelnial sie co 10ms, co jest latwiejsze do obrobki ;>.
    Nie wiem czy Ci sie te moje wypociny na cos przydadza, pewnie algorytm da sie to zrobic lepszy, prostszy i lepiej wylumaczyc i radze poczekac na wypowiedzi bardziej doswiadczonych elektrodowiczow.

    Pzdr. hEx

    0