Obsługa portów I/O mikrokontrolera rodziny MCS-51.
Transkrypt
Obsługa portów I/O mikrokontrolera rodziny MCS-51.
Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Zakład Cybernetyki i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA PORTY MIKROKONTROLERA MCS’51 Opracował: mgr in . Andrzej Biedka Ŝ Porty równoległe s podstawowymi urz dzeniami wej cia/wyj cia systemów mikroprocesorowych. Przeznaczone s przykładowo do transmisji informacji w postaci równoległej, binarnego sterowania w urz dzeniach przemysłowych, komunikacji wizualnej z operatorem, przyjmowania informacji z przycisków, klawiatur. Najcz ciej porty zorganizowane s w grupy linii o długo ci słowa zgodnej ze słowem mikroprocesora, np. 8 linii dla urz dze 8-bitowych. W wiczeniu wykorzystywany jest port P2 mikrokontrolera z rodziny 8051 wyposa ony w diodowe wska niki stanu logicznego i do niego b d si odnosi wszystkie przykłady. ą ą ś ś ą ą ę ą ś ś ą ń ć Ŝ ź ę ą ę ć Najprostszy program prezentuj cy wysyłanie bajtu danych przez port równoległy ma posta : ą ć 1; LISTING 1-1 2; Program wysyłania jednego bajtu do portu P2 3 4 ORG 0 5 6 MOV P2, #1 ; wy lij do portu P2 bajt 00000001B 7 8 KONIEC: 9 SJMP KONIEC ; martwa p tla „zatrzymuj ca” program 10 11 END ś ę ą Wynikiem uruchomienia powy szego programu b dzie wyzerowanie bitów P2.7 – P2.1 oraz ustawienie bitu P2.0. Stan ten b dzie sygnalizowany wieceniem diody LED opisanej P2.0. P tla umieszczona w liniach 8 i 9 listingu 1-1 powoduje zamkni cie programu w rozkazie „skocz pod własny adres”, uniemo liwiaj c pobranie nast pnych bajtów z pami ci programu, których stan jest nieokre lony – napisany program ko czy si bowiem na rozkazie w linii 9. Ŝ ę ę ś ę ę Ŝ ą ę ś ń ę ę Wygodniejsz form zapisu p tli zatrzymuj cej prac programu jest wykorzystanie symbolu $, interpretowanego przez program asemblera jako ‘bie ca zawarto licznika rozkazów (PC)’. Zatem rozkaz: ą ą ę ą ę Ŝ ą SJMP $ nale y rozumie jako skocz pod własny adres. Ŝ ć Program z wykorzystaniem tego symbolu przedstawiony jest na listingu 1-2: 1; LISTING 1-2 2; Program wysyłania jednego bajtu do portu P2 3 4 ORG 0 5 6 MOV P2, #1 ; wy lij do portu P2 bajt 00000001B 7 8 SJMP $ ; martwa p tla „zatrzymuj ca” program 9 10 END ś ę 2 ą ś ć Nast pnym programem b dzie program cyklicznej zmiany stanu bitu 0 portu P2, czyli inaczej linii P2.0. Algorytm programu ma posta nast puj c : ę ę ć ę ą ą START Wy lij bajt 00000010 ś Wy lij bajt 00000011 ś Rys. 1-1 Kod programu odpowiadaj cy temu algorytmowi przedstawia poni szy listing: Ŝ ą 1; LISTING 1-3 2; Program cyklicznej zmiany stanu bitu P2.0 3 4 ORG 0 5 6 PETLA: 7 MOV P2, #00000011B ; wy lij bajt do portu P2 8 MOV P2, #00000010B ; wy lij bajt do portu P2 8 SJMP PETLA ; powtórz p tl 9 10 END ś ś ę ę W programie wysyłane s na zmian bajty maj ce zawsze ustawiony bit P2.1 i zmieniaj cy si bit P2.0. Bity P2.2 – P2.7 s wyzerowane. Po uruchomieniu programu zaobserwujemy wiecenie diody P2.1 pełn jasno ci oraz diody P2.0 mniejsz jasno ci . Mniejsza jasno diody P2.0 wynika z cyklicznego jej wł czania i wył czania, zatem redni pr d płyn cy przez t diod LED jest mniejszy ni pr d płyn cy przez diod P2.1. Przebiegi czasowe pr du diody przedstawione s na rysunku 1-2. ą ę ą ą ą ą ś ą ą ą ą ś ą ś ś ą ą ą ę ą ą MOV P2, #3 0 1 MOV P2, #2 2 3 SJMP PETLA 4 5 MOV P2, #3 6 1 obieg p tli ę Rys. 1-2 3 7 MOV P2, #2 8 ć ą Ŝ ą ę ś 10 ę W ramkach zawarte s instrukcje wykonywane w p tli programu. Jednostk czasu jest cykl rozkazowy mikrokontrolera, który dla cz sto stosowanego rezonatora kwarcowego o cz stotliwo ci 11,0592 MHz wynosi 1,085 µsek. Instrukcje przesła MOV P2,#3 i MOV P2,#3 wykonywane s w dwóch cyklach rozkazowych, podobnie jak instrukcja skoku bezwarunkowego SJMP PETLA. St d pełny okres wykonania p tli wymaga 6 cykli rozkazowych a cz stotliwo przebiegu generowanego przez program wynosi: ą ę ą ę ę ś ń ą ą ę ę ś ć f = 1/T = 1/(6 * 1,085) µsek. = 153,6 kHz Współczynnik wypełnienia impulsu wynosi: n= Ti/T = 1/3 gdzie: Ti – czas impulsu T – okres przebiegu Zatem redni pr d diody LED sterowanej przez lini portu P2.0 jest ok. 3x mniejszy ni pr d diody zasilanej lini portu P2.1, st d ni sza jasno wiecenia diody P2.0. Du a cz stotliwo zmian pr du diody wyja nia jej ci głe wiecenie – mimo niew tpliwego procesu zał czania i wył czania pr du w diodzie. Obserwacja generowanego przebiegu mo liwa jest przy pomocy oscyloskopu. Ŝ ś ą ę ą Ŝ ą ą ś ć ś Ŝ ę ś ć ą ś ą ś ą Ŝ ą ą ą Przedstawione programy wykorzystywały rozkazy wysyłania całych bajtów do portu lub inaczej mówi c operuj ce na bajtach. Rozkazy te nie zawsze s wygodne w u yciu, szczególnie w zastosowaniach polegaj cych na sterowaniu urz dzeniami. Istota problemu polega na tym, e wysyłany jest cały bajt informacji, podczas gdy bie ca zmiana mo e dotyczy tylko jednej linii. Trzeba wówczas stosowa specjalne zabiegi programowe zabezpieczaj ce przed przypadkow zmian innych bitów danego portu. W kontrolerach rodziny MCS’51 lista rozkazów zawiera instrukcje sterowania wybranymi bitami portu, bitami rejestrów w obszarze SFR jak równie bitami obszaru pami ci RAM od adresu 20H do adresu 2FH. Mówimy w takim przypadku o rozkazach sterowania bitowego lub trybie adresowania bitowego: Ŝ ą ą ą Ŝ ą ą Ŝ Ŝ ą ć ć ą ą ą Ŝ ę CLR bit SETB bit CPL bit zeruj wybrany bit ustaw wybrany bit neguj wybrany bit Bit wybierany jest przez podanie numeru, je li dotyczy to obszaru adresowania bitowego w pami ci RAM lub przez podanie jego nazwy, np. P2.0 dla bitu 0 portu P2. Nazwy bitów ustaliła firma Intel®, a ich definicje zawiera opis rejestrów SFR. Listing programu działaj cego podobnie do programu z listingu 1-1 przedstawiony jest ni ej. ś ę Ŝ ą 1; LISTING 1-4 2; Program sterowania bitu 0 portu P2 3 4 ORG 0 5 6 SETB P2.1 ; ustaw bit 1 portu P2 7 PETLA: 8 SETB P2.0 ; ustaw bit 0 portu P2 9. CLR P2.0 ; zeruj bit 0 portu P2 10 11 SJMP PETLA ; powtórz p tl 12 13 END ę 4 ę ZADANIE: Narysowa przebiegi czasowe uzyskiwane w programie 1-4. ć Wszystkie dotychczasowe programy wytwarzały przebiegi o cz stotliwo ciach rz du setek kHz. Obserwacja takich przebiegów jest mo liwa oscyloskopowo, mo na te mierzy ich parametry (cz stotliwo , okres) cz sto ciomierzem. Dla umo liwienia wzrokowej obserwacji migania diody konieczne jest znaczne zmniejszenie cz stotliwo ci przebiegu pr du diody LED do warto ci nie wi kszej ni kilkana cie do 25 Hz. W tym celu nale y zastosowa opó nienia w p tli programu tak, by dioda wieciła przez czas nie mniejszy ni ok. 20 msek. oraz by była wył czona przez podobny odcinek czasu. Naturalnie czasy te nie musz by równe, z zachowaniem okresu wi kszego ni 40 ms. ę Ŝ ś Ŝ ę Ŝ ć ę ś ć ę ś Ŝ Ŝ ę ś ą ś ę ś Ŝ ć ź ę ś Ŝ ą Ŝ ą ć ę Algorytm takiego programu przedstawiony jest na rysunku 1-3 START Wy lij bajt 00000000 ś Czekaj 50 msek. Wy lij bajt 00000001 ś Czekaj 50 msek. Rys. 1-3 Jedn z metod uzyskania zwłoki czasowej jest wykonywanie pewnej liczby rozkazów. Uzyskana w ten sposób zwłoka b dzie równa iloczynowi liczby wykonanych rozkazów i czasu potrzebnego na wykonanie jednego rozkazu. Poniewa czas potrzebny na wykonanie jednego rozkazu jednocyklowego wynosi (w module ABC-02) 1,085 µsek, to dla odliczenia czasu ok. 50 msek. kontroler musi wykona : ą ę Ŝ ć 50 msek / 1,085 µsek = ok. 46000 cykli rozkazowych. Wygodn metod zliczania cykli rozkazowych jest zwi kszanie lub zmniejszanie zawarto ci rejestru roboczego kontrolera. Poniewa kontroler operuje na słowach 8-bitowych to zakres zliczania ograniczony jest do 256 cykli. Dla zwi kszenia ilo ci zliczanych cykli nale y wykorzysta wi cej rejestrów pracuj cych według algorytmu przedstawionego na poni szym rysunku (liczby w przykładzie s wybrane przypadkowo): ą ą ę ś Ŝ Ŝ ę ś Ŝ ć ę ą ą 5 START Ładuj do R2 liczb 200 ę Ładuj do R1 liczb 100 ę Zmniejsz liczb w R1 ę N Czy R1 = 0 ? T Zmniejsz liczb w R2 ę N Czy R2 = 0 ? T STOP Rys. 1-4 W algorytmie tym mo na wyró ni p tl wewn trzn pracuj c na rejestrze R1 oraz p tl zewn trzn pracuj c na rejestrze R2. Przy ka dym wyzerowaniu rejestru R1 nast puje zmniejszenie zawarto ci rejestru R2 o 1 i nast pnie sprawdzenie warunku wyst pienia zera w tym rejestrze. Je li rejestr R2 zawiera liczb wi ksz od zera nast puje powrót do odtworzenia warto ci pocz tkowej rejestru R1 i ponowne odejmowanie w p tli wewn trznej. Wyzerowanie obu rejestrów umo liwia zako czenie pracy algorytmu. W ten sposób mo na zwi kszy liczb zliczanych impulsów – w tym wypadku jest to iloczyn mno nej i mno nika, czyli tutaj 100 x 200. Oczywi cie nale y uwzgl dni czas potrzebny na operacje sprawdzenia warunku zera oraz wykonania skoków w algorytmie. Faktyczny czas wykonania programu według powy szego algorytmu b dzie wi kszy ni tylko iloczyn mno nej i mno nika. Algorytm ten mo e by rozbudowywany o nast pne rejestry, co pozwoli na dalsze zwi kszenie ilo ci zliczanych cykli. Ŝ Ŝ ć ę ę ę ą ą ą ę ę Ŝ ę ą ą ą ę ś ę ś ś ę ę ą ą ę ą ę ę Ŝ Ŝ ń ę Ŝ ć ę Ŝ Ŝ ś ę Ŝ ć Ŝ ę Ŝ Ŝ ę Ŝ ć ę ę ś Program generuj cy przebieg prostok tny o cz stotliwo ci ok. 10 Hz z wykorzystaniem algorytmu przedstawionego na rysunku 1-4 zamieszczony jest w listingu 1-5. ą ą ę 6 ś 1; LISTING 1-5 2; Program sterowania bitu 0 portu P2; cz stotliwo przebiegu ok. 10 Hz 3 4 ORG 0 5 6 PETLA: 7 SETB P2.0 ; ustaw bit 0 portu P2 8 9 MOV R2, #227 ; ładuj licznik p tli zewn trznej 10 CZAS1: 11 MOV R1, #100 ; ładuj licznik p tli wewn trznej 12 DJNZ R1, $ ; zmniejsz liczb w rej. R1 i sprawd czy = 0 13 ; je li nie to powtórz 14 DJNZ R2, CZAS1 ; zmniejsz liczb w rej. R2 i sprawd czy = 0 15 ; je li nie to powtórz p tl CZAS1 16 CLR P2.0 ; zeruj bit 0 portu P2 17 18 MOV R2, #227 19 CZAS2: 20 MOV R1, #100 21 DJNZ R1, $ 22 DJNZ R2, CZAS2 23 24 SJMP PETLA ; powtórz główn p tl programu 25 26 END ę ś ć ę ę ę ę ę ź ś ę ź ś ę ą ę ę ę W programie znajduj si dwa praktycznie identyczne fragmenty, ró ni ce si tylko nazw u ytej etykiety. Czyli do tej samej funkcji zwłoki czasowej kod został napisany dwukrotnie, zajmuj c miejsce w pami ci programu. W takim wypadku korzystniej jest zastosowa ide podprogramu : Ŝ ą ę ą ę Ŝ ą ę ć ę 1; LISTING 1-6 2; Program sterowania bitu 0 portu P2; cz stotliwo przebiegu ok. 10 Hz 3; z wykorzystaniem podprogramu 4 ORG 0 5 6 PETLA: 7 SETB P2.0 ; ustaw bit 0 portu P2 8 9 CALL CZAS_50MS 10 11 CLR P2.0 ; zeruj bit 0 portu P2 12 13 CALL CZAS_50MS 14 15 SJMP PETLA ; powtórz główn p tl programu 16 ;******************************************* 17 ; Podprogram zwłoki czasowej 50 msek. 18 CZAS_50MS: 19 MOV R2, #227 20 CZAS2: 21 MOV R1, #100 22 DJNZ R1, $ 23 DJNZ R2, CZAS2 24 RET 25 26 END ę ś ć ą 7 ę ę ą Podprogram zwłoki czasowej (napisany w liniach 18 – 24) wywoływany jest w p tli głównej dwukrotnie. Ze wzgl du na niewielk obj to podprogramu zysk zaj to ci pami ci programu mikrokontrolera jest w tym przykładzie niezauwa alny, natomiast oczywista jest jego lepsza czytelno . ę ę ą ę ś ć ę ś ę Ŝ ś ć ZADANIE: Napisa program sterowania diodami LED portu P2 dla uzyskania widocznego gołym okiem efektu wiec cego punktu biegn cego w lew stron . Po osi gni ciu skrajnej lewej diody cykl powinien si powtarza . ć ś ą ą ę ą ę ą ę ć Program wykonuj cy to zadanie mo e składa si z sekwencji o miu rozkazów ładowania do portu P2 odpowiednich bajtów – w ka dym kolejnym bajcie jeden bit maj cy warto 1 umieszczany jest na kolejnych pozycjach, w lew stron . Posta taka, cho skuteczna, daje zbyt obszerny kod i jest mało elegancka. Lepszym rozwi zaniem jest wykorzystanie rozkazu RL A. Rozkaz ten przesuwa zawarto akumulatora o jeden bit w lewo; natomiast bit z pozycji najstarszej trafia na pozycj najmłodsz . Ŝ ą ć ę ś Ŝ ą ą ę ć ś ć ć ą ś ę Algorytm programu jest nast puj cy: ę ą START Ładuj do ACC 00000001B Wy lij do portu P2 ś Odczekaj 100 msek Przesu ACC o 1 bit w lewo ń Rys. 1-5 Program działaj cy według tego algorytmu przedstawiony jest na listingu 1-7. ą 1; LISTING 1-7 2; Program sterowania diodami LED portu P2; „biegn cy punkt” 3; z wykorzystaniem podprogramu 4 ORG 0 5 6 MOV A, #00000001B 7 PETLA: 8 MOV P2, A ; wy lij zawarto akumulatora do portu P2 9 CALL CZAS_100MS 10 11 RL A ; przesu bity akumulatora w lewo 12 13 SJMP PETLA ; powtórz główn p tl programu 14 ą ś ś ć ń ą 8 ę ę ą ć 15 ;******************************************* 16 ; Podprogram zwłoki czasowej 100 msek, fclk = 11,0592 MHz. 17 18 CZAS_100MS: 19 MOV R2, #228 20 CZAS2: 21 MOV R1, #200 22 DJNZ R1, $ 23 DJNZ R2, CZAS2 24 RET 25 26 END ZADANIE: 1. Napisa program sterowania diodami LED portu P2 dla wiec cego punktu poruszaj cego si naprzemiennie w lewo i w prawo. ć ś ą ą ę Powró my do listingu 1-3. ć Okazuje si , e drobna zmiana w programie polegaj ca na zamianie kolejno ci rozkazów wysyłania informacji do portu przynosi znacz c zmian w efektach pracy programu: Ŝ ę ą ą ą ś ę 1; LISTING 1-8 2; Program cyklicznej zmiany stanu bitu P2.0, wersja 2 3 4 ORG 0 5 6 PETLA: 7 MOV P2, #00000010B ; wy lij bajt do portu P2 8 MOV P2, #00000011B ; wy lij bajt do portu P2 9 SJMP PETLA ; powtórz p tl 10 11 END ś ś ę ę Poni ej zamieszczony jest rysunek przebiegów czasowych generowanych przez zmodyfikowany program. Ŝ MOV P2, #2 0 1 MOV P2, #3 2 3 SJMP PETLA 4 5 MOV P2, #2 6 1 obieg p tli ę Rys. 1-6 9 7 MOV P2, #3 8 W tej wersji programu cz stotliwo przebiegu jest zgodna z przebiegiem wg. programu z listingu 1-3, natomiast współczynnik wypełnienia impulsu jest równy 2/3 co spowoduje zwi kszenie jasno ci wiecenia diody LED sterowanej z linii P2.0. ę ę ś ś ć ś W przedstawionych programach informacja wysyłana do portu podawana była w postaci jawnej, jako stała. Mo liwe s te inne sposoby przygotowania takiej informacji. Wykorzystuj c własno ci funkcji logicznej Ex-OR (Exclusive OR – wył cznie LUB) mo emy zmienia stan wybranej linii portu – jednej lub wielu. Funkcja ta dla zgodnych warto ci bitów na danej pozycji w obu bajtach operandów daje warto 0, dla warto ci przeciwnych warto 1. Poni ej zamieszczony jest listing programu zawieraj cego tak metod zmiany stanu portu. Rozkaz XRL P2,#stała jest przykładem rozkazu Read-Modify-Write (czytaj stan portu – modyfikuj- zapisz do portu). Ŝ Ŝ ą ą Ŝ ś ą ć ś ś ć ś ś ć Ŝ ą ą ę 1; LISTING 1-9 2; Program cyklicznej zmiany stanu bitu P2.0, wersja 3 3 4 ORG 0 5 6. MOV P2,# 00000010B ; stan pocz tkowy 7 PETLA: 8 XRL P2, #00000001B ; Ex-OR stanu portu P2 ze stał 9 SJMP PETLA ; powtórz p tl 10 11 END ą ą ę ę Program ten jest prostszy od programu poprzedniego – zawiera tylko dwie instrukcje w p tli – natomiast wytwarzany przebieg steruj cy diod LED jest zaskakuj cy: ę ą SJMP 0 ą XRL P2, #1 1 2 3 ą SJMP 4 5 XRL P2, #1 6 7 8 9 10 1 obieg p tli ę Rys. 1-7 Oba rozkazy wykorzystane w tym przykładzie wykonywane s w 2 cyklach rozkazowych. Do wygenerowania pełnego okresu przebiegu na wyj ciu P2.0 wymagane s 2 obiegi p tli. Mimo, e program zawiera mniej rozkazów generowany przebieg prostok tny ma cz stotliwo dwukrotnie mniejsz ni przebiegi uzyskiwane w poprzednich przykładach. ą ś ą ę Ŝ ą Ŝ ą 10 ę ś ć Dla wyzerowania bitu lub kilku bitów (i w efekcie linii) portu wykorzysta mo na instrukcj iloczynu logicznego: Ŝ ć ę ANL P2,#maska Drugi operand instrukcji cz sto nazywany jest mask . Zgodnie z definicj iloczynu logicznego je li bity na zgodnych pozycjach obu operandów maj warto 1 w wyniku operacji uzyskuje si 1. Je li którykolwiek bit na zgodnych pozycjach obu operandów maj warto 0 w wyniku operacji uzyskuje si 0. Inaczej mówi c bity maj ce warto 0 w bajcie maski nadaj bitom wyniku warto 0 – maskuj je. Oczywi cie maska mo e by podana jawnie, jako stała lub te mo e by umieszczona w innym rejestrze np. rejestrze roboczym, komórce pami ci adresowanej bezpo rednio i innych. Instrukcja wykonywana jest w nast puj cych krokach: 1. odczyt stanu portu P2 2. iloczyn logiczny bajtu portu P2 z bajtem maski, operacja jest wykonywana mi dzy bitami na zgodnych pozycjach 3. zapis wyniku do portu P2 ę ą ą ś ą ę ś ć ś ą ę ą ą ś ś ć ć ą Ŝ ś ć ą Ŝ ś ć Ŝ ć ę ś ę ą ę Przykład: Stan portu P2: Maska ANL P2,#maska 10101010B = 0AAH 00001111B = 00FH 00001010B = 00AH Dla ustawienia bitu lub kilku bitów (i w efekcie linii) portu wykorzysta mo na instrukcj sumy logicznej: Ŝ ć ę ORL P2,#maska Drugi operand instrukcji cz sto nazywany jest mask . Zgodnie z definicj sumy logicznej je li bity na zgodnych pozycjach obu operandów maj warto 0 w wyniku operacji uzyskuje si 0. Je li którykolwiek bit na zgodnych pozycjach obu operandów maj warto 1 w wyniku operacji uzyskuje si 1. Inaczej mówi c bity maj ce warto 1 w bajcie maski nadaj bitom wyniku warto 1 – maskuj je. Oczywi cie maska mo e by podana jawnie, jako stała lub te mo e by umieszczona w innym rejestrze np. rejestrze roboczym, komórce pami ci adresowanej bezpo rednio i innych. Instrukcja wykonywana jest w nast puj cych krokach: 4. odczyt stanu portu P2 5. suma logiczny bajtu portu P2 z bajtem maski, operacja jest wykonywana mi dzy bitami na zgodnych pozycjach 6. zapis wyniku do portu P2 ę ą ą ą ś ć ę ś ą ę ą ą ś ś ś ć ć ą Ŝ ś ć ą Ŝ ś Ŝ ć ć ę ś ę ą ę Przykład: Stan portu P2: Maska ORL P2,#maska 10101010B = 0AAH 00001111B = 00FH 10101111B = 0AFH Program wykorzystuj cy opisane funkcje do cyklicznej zmiany stanu bitów P2.0 – P2.2 przedstawiony jest na listingu 1-10. Dla poprawienia czytelno ci maski wykorzystane w obu rozkazach zast piono zdefiniowanymi na pocz tku programu nazwami symbolicznymi. ą ś ą ą 11 1; LISTING 1-10 2; Program cyklicznej zmiany stanu bitów P2.0 – P2.2 3 4 MASKA1 EQU 00000111B 5 MASKA2 EQU 11111000B 6 7 ORG 0 8 9 MOV P2,# 00000000B ; zeruj wszystkie bity 10 PETLA: 11 ORL P2, # MASKA1 ; OR stanu portu P2 ze stał 12 ; ustaw bity P2.2 – P2.0 13 14 ANL P2, # MASKA2 ; AND stanu portu P2 ze stał 15 ; zeruj bity P2.2 – P2.0 16 17 SJMP PETLA ; powtórz p tl 18 19 END ą ą ę ę ZADANIA: 1. Narysowa przebiegi czasowe uzyskiwane w programie 1-10. 2. Napisa podprogram zwłoki czasowej równej 1 msek wykorzystuj cy jeden rejestr. Uwzgl dni czasy wywołania i powrotu z podprogramu. 3. Napisa program sterowania diodami LED portu P2 daj cy efekt wiec cej linijki o zwi kszaj cej si długo ci w prawo od 1 diody do 8 diod. Nast pnie diody powinny by wygaszane od prawej do lewej. ć ć ą ę ć ć ą ę ą ę ś ć 12 ś ą ę