Program DSM51 Pomocy

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
kaczass
-
Posty: 1
Rejestracja: 24 maja 2013, 11:21
Lokalizacja: Polska

Program DSM51 Pomocy

Post autor: kaczass » 24 maja 2013, 11:27

Witam, mam napisać program w ,którym dioda mruga a po wduszenu przykładowo strzałki w gore zwiększa 0 1s się czestotliwość migania a po wduszeniu strzałki w dól częstotlwość migania zmniejsza się o 1s. Z góry dziękuje za pomoc bo wgl nic z tego nie rozumiem :( Pozdrawiam :)

Awatar użytkownika
Ertew
Użytkownik
Posty: 1419
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 24 maja 2013, 18:40

Po pierwsze, jeśli jesteś studentem, należy się tygodniowy ban na cały internet i przymusowy areszt w miejscu zwanym biblioteką ! :!:
Częstotliwość wyraża się w Hertzach [hz] ! :!:
W sekundach [s] możesz wyrazić okres całego przebiegu lub czas trwania jednego stanu.
________________________________________________




Czyżby zbliżała się sesja, kolega obijał się na zajęciach, a teraz przychodzi okres zaliczenia?

Miganie to pętla w której uC czeka powiedzmy 0.5s (*1) i zmniejsza licznik (*2). Gdy licznik się wyzeruje (*3), ładuje do niego zawartość z pamięci (*4), zmienia stan LEDa i od nowa 'pętli się' przez określony czas.

Odczyt klawiatury może być prostszy lub trudniejszy, zależy którą klawiaturę musisz obsługiwać. Klawiatura pod LCD jest stworzona do prostego odczytu (*5), ta pod 7-segmentowcami wymaga wysterowania owych wyświetlaczy (*6), ale później uzyskane dane są dużo prostsze w interpretacji.

Kolejna kwestia to interpretacja uzyskanych danych z klawiszy i zwiększenie/zmniejszenie zmiennej oczekiwania. Można to robić przy każdym przebiegu pętli (co 0.5s) zawsze gdy profesor trzyma klawisz (rozwiązanie brzydkie, bo generuje opóźnienia), albo opóźnienie rozbić na 5 kroków po 100ms i zwiększać/zmniejszać ten czas po wykryciu naciśnięcia klawisza.
Drugie rozwiązanie powoduje jednak, że trzeba pamiętać czy w poprzednim kroku klawisz był wciśnięty czy nie.






Podpowiedzi:

1. Wybierz funkcję czekania czasu wbudowaną w DSM, jedna z nich daje możliwość odczekania takiego czasu jak potrzeba.
2. Dowolny rejestr z którego nie korzysta funkcja *1, ja bym używał ich od końca, czyli R7.
3. DJNZ
4. Potrzebujesz drugi rejestr, patrz *2
5. Patrz mapa przestrzeni adresowej, możesz odczytać w 4 instrukcjach, kolejne odczyty to 1 instrukcja.
6. Wybierasz jedną z cyfr wyświetlaczy 7-seg i na raz odczytujesz tylko jeden odpowiadający jej klawisz. Instrukcji robi się kilkanaście, ale to chyba nie kosmos.

ODPOWIEDZ