Image220 (3)

Image220 (3)



Top WWW> www.e-alarmy.pl


systemy alarmowe telewizja przemysłowa kontrola dostępu sklep internetowy schematy montażowe instrukcjo, pcdgląd z kamor on-lino


Listing 119 pokazuje natomiast funkcję umożliwiającą ustawienie szybkości repetycji klawiatury. W krytycznym momencie przerwania muszą zostać chwilowo zablokowane - zgłoszenie przerwania w chwili operowania na zmiennych repetycji klawiszy mogłoby wywołać wygenerowanie błędnego komunikatu. Po zdefiniowaniu, funkcję system kbdRepeatSpeed należy zadeklarować w pliku system.h. Powinieneś już poradzić sobie z tym bez trudu. W razie problemów podeprzyj się listingiem 118.

Listing 120 pokazuje serce obsługi klawiatury. Funkcja ta sprawdza stan jednego klawisza i na tej podstawie generuje odpowiednie komunikaty. Zwracam Twoją uwagę na fakt, że komunikat danej akcji klawisza SW2 ma zawsze kod o 1 większy niż komunikaty klawisza SW1.

Aby moduł klawiatury ożył, konieczne jest wywoływanie prostej funkcji widocznej na listingu 121 co 40ms. Wykorzystamy w tym celu przerwanie licznika. W tym miejscu klawiaturę możemy uznać za przygotowaną do pracy.

Timer systemowy

Timer systemowy w naszym przypadku jest pomyślany w taki sposób, aby generował przerwanie co lOms. Tak więc co czwarte przerwanie będziemy wywoływać funkcję obsługującą klawiaturę. Aktualnie będziemy robić tylko tyle - później zakres zadań będzie rozszerzany. Do generowania przerwań wykorzystamy timer 2. Listing 122 pokazuje funkcję obsługi jego przerwania, zajmującą się klawiaturą.


ABC... C switch-case

Instrukcja switch-case jest dość podobna w działaniu do BASCOM-owej instrukcji CASE jednak, co może zaskoczyć, w C ma ona nieco mniejsze możliwości. Składnia instrukcji switch-case jest następująca:

Swi tch(wyrażenie)

{

case wartość i:

instrukcje case wartoćć_2:

instrukcje

default:

i rsr.ru keje

}


Wyrażenie musi w wyniku dawać wartość całkowitą. Jeśii wśród wymienionych przypadków znajdze się wartość, która odpowiada wartości wyrażenia, wykonany zostanie skok do punktu, w którym się ona znajduje. Uważaj teraz - instrukcje sąwykonywune aż do natknięcia się na instrukcję break (wyjście z klamry switch), return (zakończenie całej funkcji) łub ewentualnie goto (skok do podanej etykiety). Oznacza tn, że jeśli nie wydamy odpowiedniego rozkazu, nastąpi przejście do naslępnego przypadku i wykonanie jego instrukcji - ta możliwość czasami się przydaje.

Przypadek default jest opcjonalny. Jeśli zostanie wprowadzony, instrukcje w nim zawarte zostaną wykonane, jeśli żaden z poprzednich przypadków nie pasuje do wartości wyrażenia. W innym przypadku instrukcja switch się zakończy.

Przykłady: iisling i26 oraz 134


Listing 124 - generowanie opóźnień za pomocą przerwania systemowego

// Zmienna do generowania opóźnień,

// zmniejszana do 0 co lOms statite

// Funkcje obsługi opóźnienia inline void system_delayS«t(uint3_t delay) {

svstem_delay - delay;

}

inline uint8 z sysremdelayGetCyoid)

{

return system_delav;

}

V0id system_delayMake(uinc8_t delay)

{

system_delaySet(delay); wtiile(o l* system_delayGetO) (}


(...)


obsługa timera sys 5R(TIMER2 COMP vect)


Statlc uintbt ticks

Jprzyspieszenie działanTa]

■ dela1


Listing 123 - inicjacja Umera 2 do pracy

// inicjacja timera systemoweoo

TCCR2 - 1«WC-M21 /*CTC*/ I

l«CB2? | l«cs21 | l«cs2D /*clk:1024*/;

OCF.2 «• 78; // około lOms


// Przerwania

TIMSK ■ 1«0CIE2 /^porównania z timer a sei();


2V;


Test kolejki i klawiatury

W tej chwili możemy wykonać już niewielką modyfikację systemu, lak aby współgrał praw idłowo 7 nowym sposobem obsługi klawiatury. Jedyna różnica pojaw i się tutaj w chwili oczekiwania na przycisk wyboru języka. Zamiast wykorzystanej poprzednio funkcji sw_wuit wpisz kod z listingu 125. Porównaj go z listingiem 107. W tym prostym przypadku nowy kod jest hardziej rozbudowany. Jednak już kod z listingu 126 pozwala nam odczuć zalety rozwiązania. Widzimy tutaj aplikację, która ma zliczać naciśnięcia oraz przytrzymania przycisków. Kierunek zliczania zależy od wybranego przycisku. Przy zliczaniu naciśnięć wykorzystano automatyczną rcpetycję.


7T

uint8 z delay // co 40m5 pr;

(...)

// Generowanie opóźnień if(delay 1* 0)

(

-delay;

system_delav * delay;

»



■ł+tioks;


l.isting 121 - lim kej a przeprowadzająca skanowanie wszystkich klawiszy


ISR oznacza dokładnie to samo co SIG-N AL w porzednich częściach kursu. Makro ISR powinno być stosowane w nowych programach.

Aby nasze przerwanie było wywoływane zgodnie z życzeniem, musimy dokonać jeszcze konfiguracji części peryferii. Jak to zrobić, możesz zobaczyć na lisitngu 123. Umieszczony na nim kod powinien znaleźć się zaraz za inicjacją wyświetlacza w funkcji system run.

Systemowa funkcja generująca opóźnienie

Dodamy teraz drobne, poznane już ułatwienie, które tworzyliśmy w chwili obsługi wyświetlacza multipleksowane-go: wykorzystamy cykliczne przerwanie systemowe do generowania opóźnień. Ideę przedstawia listing 124. Trzy funkcje obsługujące opóźnienie wymagają deklaracji w pliku system, h.


Statlc inline VOid Ły3Lsi(i_kbclMakeScan(void)

{

kbć_ProcessKey(KED_UP, l«SWl); kbc_ProcessKe/(KBD DOWN, 1«SW2);

)


I istini» 122 - przerwanie Umera systemowego

ISR (? I MER2 COMP_ve c t)

{

Statlc uint3_L licks - 0;

// co 40ms przerwanie klawiatury if(ticks X 4 ■ 0)

system kbdMaksScan();

// Zliczanie kolejnego przerwania ++cicks:


Listing 125— zmiana w sposobie oczekiwania na wybór języka w systemie

// Oczekiwanie na przycisk for(;;)

{

uint8_t msg;

msq = s y s”em_msgWa11Fo r Q;

1f (msg = IDM_SW'JP)

{

largsys_Select(0); break;

}

if(msg = IDM_SWDCWN)

I

lang3yo_Sclcct(1); break;


Elektronika dla Wszystkich Sierpień2006 43


Wyszukiwarka

Podobne podstrony:
31 (240) Tup www systemy alarmowe telewizja przemysłowa kontrola dostępu sklep
57 (118) systemy alarmowe telewizja przemysłowa kontrola dostępu sklep internetowy sc
31 (258) systemy alarmowe telewizja przemysłowa kontrola dostępu sklep internetowy sc
Image206 (3) Top www rWWWmikrokontrola.pl PODUKCJA I SPRZEDAŻ AKCESORIÓW DO BEZKONTAKTOWEc IDENTYFIK
system logistyczny RYSUNEK [ www potrzebujegotowki pl ] System logistyki przedsiębiorstwa przemysłow
Image84 (3) systemy ala mowe telewizja przemysłowa Kontrola .Jublypj sklep internetowy&nbs
Image200 (4) Top www■zn*ii/w w. dexon.pl TECHNIKA NAGŁOŚNIENIOWA Przy projektowaniu większych system
Image207 (2) Top WWW http://systemyalarmowe.p n KI !l a Przejdź
Image240 Top WWW) z ruchomym systemem pasków-sztachet - systemy z dynamiczną barierą paralaksy. 

więcej podobnych podstron