Praktyka Techniki Mikroprocesorowej. Mikrokontroler PIC 16F84
|
|
- Ryszard Adamczyk
- 8 lat temu
- Przeglądów:
Transkrypt
1 Praktyka Techniki Mikroprocesorowej Elżbieta Ślubowska Mikrokontroler PIC 16F84 Materiały pomocnicze do I części zajęć laboratoryjnych. Warszawa 2005
2 2 1. Spis treści 1. Spis treści Opis stanowiska Charakterystyka mikrokontrolera PIC 16F Opis wyprowadzeń mikrokontrolera Organizacja wewnętrznej pamięci danych (RAM) Opis wybranych rejestrów specjalnych mikrokontrolera Rejestr W - akumulator Rejestr STATUS Rejestry PORTA i PORTB Rejestry TRISA i TRISB Rejestry INDF i FSR Pamięć programu Podstawowe zasady tworzenia programu Obsługa modułu wyświetlacza i klawiatury Program realizujący zapalenie diody Odliczanie czasu Program realizujący miganie diodą Stos i podprogramy Asembler mikrokontrolera PIC 16F Obsługa przerwań Rejestr INTCON Program korzystający z systemu przerwań Zasady korzystania z licznika TMR Rejestr OPTION_REG Przykłady programów Słowniczek...33
3 3 2. Opis stanowiska Podstawowy zestaw dydaktyczny wykorzystywany w laboratorium zawiera: płytkę uruchomieniową, kabel RS-232 i zasilacz 9V DC. Płytka uruchomieniowa została zbudowana w oparciu o układ PIC 16F84A. Jest to ośmiobitowy mikrokontroler typu RISC. Zestaw należy połączyć kablem RS 232 z portem COM komputera. Następnie należy podłączyć zasilanie. Zestaw powinien być zasilany napięciem stałym 9V. Napięcie musi być dostarczone ze źródła stabilizowanego (bateria, zasilacz stabilizowany). Napięcie zasilające należy odpowiednio podłączyć do gniazda zasilania ( + do kontaktu wewnętrznego, - do zewnętrznego). Zielona dioda świeceniem sygnalizuje poprawne podłączenie zasilania. Rys.1. Płytka uruchomieniowa zestawu laboratoryjnego. Najprostszym obiektem sterowania jaki można podłączyć do portów mikrokontrolera jest dioda świecąca (LED). Płytka uruchomieniowa wyposażona jest w monitor stanu portów. Każda linia portu zaopatrzona jest w czerwoną diodę, która sygnalizuje stan danej linii, przy czym świecenie diody oznacza jedynkę logiczną. Do napisania pierwszego programu wykorzystamy płytkę bez podłączania dodatkowych urządzeń do złącza portów. Moduł klawiatury i wyświetlacza przedstawiony na rys.2. jest obiektem sterowania uzupełniającym płytkę podstawową. W skład modułu wchodzi 12 przyciskowa klawiatura matryca LED 5x7, oraz przewód do łączenia z płytką uruchomieniową.
4 4 Rys.2. Moduł klawiatury i wyświetlacza. 3. Charakterystyka mikrokontrolera PIC 16F84 1kB pamięci programu, typu EEPROM 36 bajtów pamięci danych, typu SRAM 64 bajty dodatkowej pamięci danych, typu EEPROM ośmiopoziomowy stos sprzętowy (nie korzystający z pamięci RAM) 13 indywidualnie programowalnych linii wejścia / wyjścia (RA4... RA0 i RB7... RB0) watchdog timer (WDT) maksymalna częstotliwość zegara 10 MHz, czternastobitowa długość słowa rozkazu, ośmiobitowa długość słowa pamięci danych RAM oraz rejestrów sterujących 5 rejestrów specjalnych służących do konfigurowania układu natychmiastowy (bezpośredni) i pośredni tryb adresowania ośmiobitowy licznik z ośmiobitowym podzielnikiem wstępnym cztery źródła wywołujące przerwania: - zewnętrzne, po wystąpieniu odpowiedniego zbocza (rodzaj zbocza definiowany programowo) na nóżce RB0/INT procesora, - wewnętrzne, poprzez zmianę stanu na jednej z nóżek portu B (porty RB4, RB5, RB6, RB7), - wewnętrzne, poprzez przepełnienie TIMER-a - wewnętrzne, wywoływane gdy zakończone zostanie programowanie jednej z komórek pamięci danych w EEPROM ponad cykli programowania pamięci danych EEPROM, zachowanie zawartości pamięci danych EEPROM ponad 40 lat wykonanie w technologii CMOS, szeroki zakres napięć zasilających oraz niewielki pobór prądu (<2mA dla 5V 4MHz, 15mA dla 2V 32kHz oraz poniżej 1mA w stanie uśpienia). wykonywanie wszystkich rozkazów w jednym cyklu (dla zegara taktującego 10 MHz jeden cykl =400 ns, a 1 cykl maszynowy jest równy 4 taktom oscylatora) wyłączając rozkazy skoków, które realizowane są w dwóch cyklach maszynowych
5 4. Opis wyprowadzeń mikrokontrolera RA3 RA4/TOCKI MCLR GND RB0/INT RB1 RB2 RB3 PIC16F RA1 RA0 RA OSC1/CLKin 4 15 OSC2/CLKout 5 14 Vcc 6 13 RB RB RB RB4 Rys.3. Układ wyprowadzeń w mikrokontrolerze PIC16F84. Nazwa wyprowadzenia RA4... RA0 RB7... RB0 OSC1, OSC2 MCLR Opis funkcjonalny Uniwersalne linie wejścia / wyjścia, połączone z rejestrem PORTA Linia RA4/TOCKI jest dodatkowo połączona z wewnętrznym licznikiem Uniwersalne linie we / wy, połączone z rejestrem PORTB Linia RB0/INT jest dodatkowo wejściem dla sygnału przerwania zewnętrznego Wejścia służące do podłączenia rezonatora lub oscylatora Wejście zerujące mikrokontroler (RESET), aktywne niskim poziomem GND i Vcc Zasilanie (np. odpowiednio: masa i +5V DC) Tab.1. Opis wyprowadzeń w mikrokontrolerze PIC16F Organizacja wewnętrznej pamięci danych (RAM) Pamięć danych składa się z 11 rejestrów specjalnych oraz z 36 rejestrów uniwersalnych. Do wszystkich rejestrów programista ma bezpośredni dostęp, to znaczy każdy z nich może być argumentem rozkazu. Spośród rejestrów specjalnych, przy pisaniu najprostszych programów, istotne są następujące: FSR, STATUS, PORTA i PORTB. Pozostałe sterują pracą zaawansowanych funkcji. 5
6 6 Adres 00h INDF INDF 01h TMR0 OPTION_REG 02h PCL PCL 03h STATUS STATUS 04h FSR FSR 05h PORTA TRISA 06h PORTB TRISB 07h 08h EEDATA EECON1 09h EEADR EECON2 0Ah PCLATH PCLATH 0Bh INTCON INTCON 0Ch 68 Rejestrów ogólnego przeznaczenia (SRAM) Mapped (accesses) in Bank 0 4Fh 50h Nie zaimplementowan a część pamięci; odczytywana jako 0 Nie zaimplementowana część pamięci; odczytywana jako 0 7Fh BANK 0 BANK1 Rys.3. Mapa rejestrów dla procesora PIC 16F84A 6. Opis wybranych rejestrów specjalnych mikrokontrolera. INDF TMR0 PCL STATUS FSR PORTA PORTB TRISA Argument adresowania pośredniego (nie jest fizycznym rejestrem) Rejestr uniwersalnego zegara / licznika Młodszy bajt licznika programu Rejestr flag Wskaźnik adresowania pośredniego Rejestr połączony z portem A (wyprowadzenia RA0..RA4) Rejestr połączony z portem B (wyprowadzenia RB0..RB7) Rejestr ustawiający kierunek pracy portu A, wejście/wyjście
7 7 TRISB Rejestr ustawiający kierunek pracy portu B, wejście/wyjście EEDATA Rejestr danych wpisywanych do EEPROM-a EEADR Rejestr adresu w EEPROM-ie PCLATCH Starszy bajt licznika programu INTCON Rejestr sterujący przerwaniami OPTION_REG Ustawienia dotyczące pracy licznika i dzielnika częstotliwości 7. Rejestr W - akumulator Rejestr W jest akumulatorem, używanym przez instrukcje arytmetyczne i logiczne, służy także do wpisywania oraz przeładowywania danych w pamięci RAM. Rejestr W nie jest częścią pamięci RAM, tzn. nie może być argumentem instrukcji operujących na rejestrach uniwersalnych. Dostęp do akumulatora uzyskuje się poprzez stosowanie specjalnych instrukcji. 8. Rejestr STATUS Jest to rejestr specjalny składający się z bitów informujących o stanie jednostki arytmetyczno logicznej (tzw. bitów statusu lub flag). Flagi te można adresować poprzez podanie ich nazw lub przypisanego im numeru bitu w rejestrze., np. STATUS,Z lub równoważnie STATUS,2. R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP RP1 RP0 TO PD Z DC C bit 7 R możliwość odczytania wartości bitu W możliwość ustawienia wartości bitu -n wartość ustawiana po restarcie procesora Bit 7: IRP (Register Bank Select bit) Nie jest wykorzystywany w tym procesorze. Powinien być równy zero. Bit 6: RP1 (Register Bank Select bit) Nie jest wykorzystywany w tym procesorze. Powinien być wyzerowany. Bit 5: RP0 (Register Bank Select bit) 0 = Bank 0 (00h-7Fh) 1 = Bank 1 (80h- FFh) Bit 4:TO (Time-out bit ) 1 = ustawiany po włączeniu zasilania i po instrukcjach CLRWDT, SLEEP 0 = wyzerowany po przekroczeniu limitu czasowego dla WDT Bit 3: PD (Power-down bit) 1 = ustawiany po włączeniu zasilania i po CLRWDT 0 = zerowany po wykonaniu instrukcji SLEEP, flaga sygnalizująca włączenie trybu obniżonej mocy zasilania jeżeli jest równa zero. Bit 2: Z (Zero bit ) 1 = ustawiany gdy wynik operacji arytmetycznej lub logicznej jest równy zero 0 = gdy wynik operacji arytmetycznej lub logicznej jest różny od zera
8 8 Bit 1: DC (Digit carry/borrow bit) Flaga przeniesienia /pożyczki pomocniczej. Jest ustawiana jeśli w wyniku wykonania rozkazów: ADDWF, SUBWF, ADDLW i SUBLW wystąpi przeniesienie na najstarszej pozycji młodszej czwórki bitów. W przypadku wystąpienia pożyczki jest zerowana. Bit 0: C (Carry /borrow bit) Flaga przeniesienia / pożyczki. Jest ustawiana jeśli w rezultacie wykonania rozkazów: ADDWF, SUBWF, ADDLW i SUBLW wystąpi przeniesienie na najstarszej pozycji wyniku (wynik będzie liczbą większą od 255). W przypadku wystąpienia pożyczki C jest zerowane. Flaga CARRY jest także używana przez rozkazy rotacji rejestrów. 1 = nastąpiło przeniesienie z najbardziej znaczącego bitu 0 = nie wystąpiło przeniesienie najbardziej znaczącego bitu 9. Rejestry PORTA i PORTB Rejestry te są bezpośrednio połączone z wyprowadzeniami mikrokontrolera (Rys. 4). PIC 16F84 posiada 13 uniwersalnych linii wejścia / wyjścia, pogrupowanych w dwa porty: PORTA i PORTB. Zmiana zawartości tych rejestrów powoduje zmianę poziomów logicznych na końcówkach PIC16F84, pracujących jako wyjścia. Każda linia, niezależnie od pozostałych, może być wykorzystywana jako wejście lub wyjście. Do przełączania tych funkcji służą rejestry TRISA i TRISB. RA4 RA3 RA2 RA1 RA0 PIC 16F84A PORTA PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Rys.4.Połaczenie rejestrów PORTA i PORTB z liniami wejścia / wyjścia (wyprowadzeniami) mikrokontrolera. Stany wyjść można zmieniać dwojako: 1. Przepisując całą zawartość rejestru - np. rozkazem MOVWF PORTA (przepisz zawartość W do PORTA). 2. Zmieniając selektywnie stan któregoś bitu rejestru - np. rozkazem BSF PORTA,1 (ustaw bit nr 1 rejestru PORTA) co spowoduje ustawienie wysokiego stanu logicznego na wyprowadzeniu RA1 mikrokontrolera 18 nóżka układu. Uwaga: w rejestrze PORTA tylko pięć najmłodszych bitów jest połączone z wyprowadzeniami mikrokontrolera (linie RA4... RA0).
9 9 10. Rejestry TRISA i TRISB Rejestry te służą do ustawienia kierunku pracy (wejście czy wyjście) na konkretnej linii podłączonej do procesora. TRISA dotyczy ustawień dla linii należących do portu A. TRISB dotyczy linii przypisanych do portu B. Aby ustawić linię jako wejście należy wpisać do odpowiadającego jej bitu w rejestrze TRISA lub TRISB jedynkę logiczną. Aby ustawić linię jako wyjście należy wpisać zero. Rys.5. Zasady korzystania z rejestrów PORTA i TRISA. Rys.6. Zasady korzystania z rejestrów PORTB i TRISB.
10 10 Po restarcie mikrokontrolera PIC 16F84, wszystkie linie są ustawione jako wejścia. Aby dokonać zmiany zawartości rejestrów TRISA i TRISB należy ustawić w stan wysoki bit RP0 w rejestrze STATUS, następnie zmodyfikować zawartości rejestrów TRISA i TRISB po czym wyzerować bit RP0. Przykład: linie RB7..RB2 ustawić jako wejścia, natomiast linie RB1 i RB0 jako wyjścia. bsf STATUS,RP0 ; Przełącz adresowanie RAM-u na stronę konfiguracji molw B ; Do W nowy stan TRISB (linie RB0 i RB1 wyjścia) movwf TRISB ; Przepisz W do TRISB bcf STATUS,RP0 ; Przełącz adresowanie RAM-u na stronę podstawową 11. Rejestry INDF i FSR Są to rejestry służące do pośredniego adresowania pamięci RAM. PIC16F84 posiada dwa tryby adresowania pamięci RAM: bezpośredni i pośredni. Adresowanie bezpośrednie polega na podaniu adresu komórki RAM w postaci zmiennej liczbowej, umieszczonej w polu adresu rozkazu. Przykład: należy wyzerować rejestr o adresie 0Dh CLR H 0D ; zeruj komórkę RAM o adresie 0Dh Adresowanie pośrednie polega na wpisaniu adresu do rejestru wskaźnika (FSR) i podaniu w polu adresu rozkazu adresu 00h, co spowoduje pobranie przez procesor zawartości rejestru FSR i potraktowanie jej jako adresu komórki RAM, której dotyczy rozkaz. Rys.7. Zasady korzystania adresowania pośredniego. Przykład: należy wyzerować rejestr o adresie 0Dh movlw H 0D ; Wpisz do akumulatora liczbę 0Dh. movwf FSR ; Przepisz zawartość akumulatora ; do rejestru wskaźnika. clrf 00h ; Zeruj komórkę RAM, o adresie w FSR. Adresowanie pośrednie wykorzystuje się w pętlach programowych w celu skrócenia objętości kodu.
11 Pamięć programu Wbudowana w mikrokontroler pamięć programu ma objętość 1024 komórek. Każda komórka ma szerokość 14 bitów i dzięki temu mieści w sobie kod instrukcji wraz z jej argumentem. Po restarcie PIC16F84 rozpoczyna wykonywanie programu od rozkazu z komórki 000h. Do wskazywania procesorowi następnej komórki ROM, z której ma pobrać instrukcję do wykonania, służy licznik programu (Program Counter) oznaczany skrótowo PC. Reset zeruje PC. Po wczytaniu kolejnej instrukcji jego stan jest inkrementowany. Wyjątkiem są wszelkie rozkazy skoków, wywołań procedur i powrotów z procedur, które przeładowują PC zupełnie inną wartością adresem skoku. 13. Podstawowe zasady tworzenia programu W celu ułatwienia pracy zalecane jest żeby początkujący programista tworzył program zgodnie z poniższymi wytycznymi. Szablon programu: ;***************************************************************** ;Deklaracje wstępne - proszę tu niczego bez namysłu nie zmieniać!!! ; list P=16C84, F=INHX8M, R=DEC #include p16f84a.inc CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ; ;***************************************************************** ORG 0x00 ; kontroler rozpoczyna pracę od adresu 00 GOTO główny ; skok do programu głównego główny ;treść programu głównego koniec GOTO koniec ; końcowa pętla programu głównego END ; koniec programu ;***************************************************************** Powyższy tekst jest szablonem programu zapisanego w asemblerze dla mikrokontrolera PIC16F84, który posłuży jako szkielet do budowy własnego programu przez użytkownika. Pierwsze linie programu to deklaracje wstępne charakterystyczne dla mikroprocesora PIC16F84. Przepisany szkielet programu należy zapisać jako plik tekstowy z rozszerzeniem *.asm. Należy zwrócić uwagę na znak ; po którym można umieścić komentarz, który nie jest brany pod uwagę przez kompilator. W programie przewidziano wolne miejsce, gdzie można dopisać własny program. Podczas pisania programu należy zachować staranność w celu uzyskania czytelności programu. Nazwy zapisane w pierwszej kolumnie to etykiety (nazwy nadane przez twórcę programu). Nigdy nie należy umieszczać rozkazów w pierwszej kolumnie, ponieważ zostaną zinterpretowane jako etykiety, co prowadzi do błędnej kompilacji programu. Po zapisaniu treści programu należy poddać go kompilacji. Trzeba zwrócić uwagę na komunikaty kompilatora. Jeżeli w nowo napisanym programie znajdą się błędy wynikające ze składni bądź nieprawidłowego użycia rozkazów asemblera to zostaniemy o tym powiadomieni w linii Errors kompilatora. Szczegółowe informacje o rodzaju błędów i o tym, w którym miejscu je popełniliśmy można znaleźć w plikach z rozszerzeniem *.err i *.lst.
12 12 Jeżeli w programie nie ma błędów, to kompilator tworzy kod wynikowy z rozszerzeniem *.hex. W programie laboratoryjnym wykonując polecenie Wyślij wysyłamy plik w formacie hex do pamięci mikrokontrolera znajdującego się w zestawie laboratoryjnym. Przy pisaniu programu należy pamiętać o tym, że mikrokontroler wykonuje program bezkrytycznie oraz w sposób ciągły (nie istnieje w normalnym trybie pracy możliwość zatrzymania mikrokontrolera). Jeżeli program kończy się rozkazem nie będącym skokiem (słowo END jest dyrektywą dla kompilatora, a nie rozkazem dla procesora) to PC wskaże procesorowi następną komórkę ROM do pobrania adresu. Ta komórka i następne mogą mieć zupełnie przypadkową zawartość, co może spowodować nieprzewidywalne efekty w pracy mikrokontrolera. Jeżeli wszystkie nie wykorzystane przez programistę komórki ROM również nie zapętlają programu to PC po osiągnięciu maksymalnego stanu jest zerowany. Wtedy mikrokontroler rozpoczyna wykonywanie programu od początku i ta sytuacja powtarza się w sposób ciągły. Aby ustrzec się przed podobnymi efektami należy zadbać aby mikrokontroler wykonywał tylko te fragmenty kodu, które nas interesują. Można to osiągnąć stosując pętlę bezwarunkową w dwóch wariantach: 1. Umieszczenie w miejscu gdzie mikrokontroler ma się zatrzymać pętli pułapki skoku do tej samej linii programu (ma to sens tylko na potrzeby testowania fragmentów kodu). 2. Konstruowanie głównej części programu jako pętli bezwarunkowej. W przedstawionym powyżej szablonie koniec i główny to etykiety, które pozwalają na odwoływanie się do ich adresu, a goto to rozkaz skoku pod wskazany adres. Przy pomocy etykiety koniec wymuszono zatrzymanie wykonywania programu tylko do adresu tej etykiety. 14. Obsługa modułu wyświetlacza i klawiatury Obsługa modułu wyświetlacza i klawiatury polega na: 1. Odpowiednim ustawieniu kierunku pracy linii tworzących dany port. W praktyce oznacza to odpowiednie ustawienie rejestrów: TRISA i TRISB, zgodnie z fizyczną realizacją zaplanowanej funkcji (dla każdej linii osobno). 2. Odpowiednie ustawienie wartości (0 lub 1) na poszczególnych liniach mikrokontrolera. W praktyce realizowane jest to przez odpowiednie ustawienie rejestrów: PORTA i PORTB, zgodnie ze sprzętową realizacją danej funkcji (dla każdej linii osobno). Podczas wykorzystywania wyświetlacza zaleca się odłączenie klawiatury, co realizuje się przez ustawienie najstarszego bitu na porcie B na poziomie wysokim (RB7=1). Pozwoli to uniknąć wyświetlania się niepożądanych znaków, przy przypadkowym naciśnięciu klawisza. Na Rys.5. schematyczne przedstawiono połączenie wyświetlacza z liniami portów RA0..RA4 i RB0..RB6. Jeżeli chcemy zapalić wybraną diodę, to musimy ustawić linię odpowiadającą mu linię portu RA w stan niski, a linię portu RB w stan wysoki, oczywiście przy wcześniejszym ustawieniu kierunku pracy tych linii w rejestrach: TRISA i TRISB jako wyjścia (stan niski).
13 13 WŁĄCZONA GDY RB7 = 1 0 RA0 RA1 RA2 RA3 RA4 1 RB0 RB1 RB2 RB3 RB4 RB5 RB6 Rys.8. Sposób sterowania wyświetlaczem. Linie sterujące wyświetlaczem są stale podłączone, tylko klawiatura może być dołączana i odłączana. W związku z powyższym trzeba pamiętać, że podczas sterowania klawiaturą linia RB7 musi być ustawiona w stan niski (RB7=0). W czasie czytania klawiatury wyświetlacz powinien być wygaszony poprzez ustawienie jedynek na RA0..RA4. Uwaga! Aby kontrolować stan przełączników klawiatury należy: ustawić linie RB0..RB2 jako wyjścia, RB3..RB6 jako wejścia, modyfikując odpowiednio rejestry TRISA i TRISB. +5V RB0 RB1 RB2 0 0 RB3 RB4 RB5 RB * 0 # WŁĄCZONA GDY RB7 = 0 Rys.9. Sposób sterowania klawiaturą
14 14 Aby sprawdzić czy jest naciśnięty klawisz 6 należy wyzerować linię RB2, utrzymując stan wysoki na RB0 i RB1, i sprawdzić stan na linii RB4. Jeśli wykryte zostanie zero to klawisz jest naciśnięty, jeśli na RB4 jest stan wysoki to klawisz 6 jest zwolniony. W analogiczny sposób można sprawdzić stan pozostałych klawiszy kolumny trzeciej tj. 3, 9, #, po czym linię RB2 należy ponownie ustawić w stan wysoki i przejść do testowania klawiszy następnej kolumny według tej samej metody. 15. Program realizujący zapalenie diody Mikrokontroler PIC16F84 posiada dwa porty A i B. W porcie A dostępnych jest pięć indywidualnie programowalnych linii wejścia/wyjścia RA0..RA4 a w porcie B osiem RA0..RA7. W strukturze wewnętrznej mikrokontrolera porty umieszczone są w obszarze rejestrów PORTA i PORTB. W rejestry można wpisać informacje o długości 8 bitów. Każdy z bitów jest w stanie 0 lub 1, co odpowiada stanowi poszczególnych linii wejść/wyjść. Poprzez odpowiednie ustawianie stanów tych linii realizuje się sterowanie urządzeń zewnętrznych. Uwaga! Asembler mikrokontrolera PIC16F84 nie daje możliwości wpisywania zmiennych bezpośrednio do rejestrów RAM. Nie ma także możliwości kopiowania zawartości rejestru RAM do innego rejestru RAM. Aby wpisać zmienną do pamięci RAM należy najpierw wpisać ją do akumulatora, po czym przepisać z akumulatora do rejestru RAM. Podobnie przy kopiowaniu zawartości rejestrów najpierw przepisujemy zawartość źródła do akumulatora a potem akumulator do rejestru przeznaczenia. Działanie programu realizującego zapalenie diody w lewym dolnym rogu wyświetlacz można zobrazować prostym algorytmem. POCZATEK Zapal diodę w dolnym rogu KONIEC SKOK Rys.10. Algorytm programu zapalającego diodę w lewym dolnym rogu. Do zapalenia diody wykorzystano rozkaz bsf PORTB,6 który umożliwia ustawianie pojedynczej linii w stan wysoki (logiczna 1). W naszym przykładzie jest nią 6 linia portu B. Analogicznie do rozkazu bsf, rozkaz bcf PORTA,0 zeruje daną linię. W opisanym przypadku jest to zerowa linia portu A. Na końcu przykładu wykorzystujemy prostą pętlę do zatrzymania programu.
15 15 Oto tekst programu, który wpisany do pliku *.asm spowoduje zapalenie diody odpowiadającej linii RB6. MATRYCA LED Rys.11. Wyświetlacz z zapaloną jedną diodą w pierwszej kolumnie i siódmym wierszu. ;***************************************************************** ;Deklaracje wstępne - proszę tu niczego bez namysłu nie zmieniać!!! ; list P=16C84, F=INHX8M, R=DEC #include p16f84a.inc CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ; ;***************************************************************** ORG 0x00 ; kontroler rozpoczyna pracę od adresu 00 GOTO główny ; skok do programu głównego główny bsf STATUS,RP0 ; Niezbędne, aby zmienić rejestr TRISx movlw B' ' ; Wpisanie do akumulatora liczby zero ; 8 bitowa liczba w postaci binarnej movwf TRISA ; Ustawienie wszystkich linii tworzących ; port A w tryb wyjściowy ; (1 ustawia w tryb wejściowy) movlw B' ' ;To samo dla linii tworzących port B movwf TRISB ; bcf STATUS,RP0 ; Wyłączenie specjalnego adresowania ; Teraz należy sięgnąć do opisu ; modułu wyświetlacza! movlw B' ' ; Wygaszenie wyświetlacza przez wpisanie movwf PORTA ; do portu A ośmiu jedynek, co praktyczne ; wyłącza wszystkie kolumny movlw B' ' movwf PORTB ; Analogicznie wyłączenie wszystkich rzędów, ; przy czym należy pamiętać o ustawieniu ; jedynki na bicie siódmym w celu ; przełączenia funkcji modułu na wyświetlacz. bcf PORTA,0 bsf PORTB,6 ; Realizacja zapalenie siódmej diody ; w pierwszej kolumnie wyświetlacza koniec GOTO koniec ; końcowa pętla programu głównego END ; koniec programu. Nie kasować dyrektywy END! ;*****************************************************************
16 Odliczanie czasu Odliczanie czasu to jedno z najczęstszych zadań programu. Prostą metodą odliczania czasu jest wykonanie określonej liczby nieszkodliwych rozkazów. Dla mikrokontrolera PIC 16F84 wszystkie rozkazy wykonywane są w jednym cyklu maszynowym, wyłączając rozkazy skoków, które realizowane są w dwóch cyklach maszynowych. Przy zegarze taktującym 10 MHz jeden cykl maszynowy trwa 400 ns. Prostym rozkazem który nie popsuje naszego programu jest rozkaz NOP - nic nie rób. Do wykonania tego rozkazu potrzeba jednego cyklu maszynowego 400ns. Łatwo można sobie policzyć jak dużo rozkazów NOP musielibyśmy wstawić żeby odmierzyć czas np. 0,5 s. Do takiego zadania najlepiej użyć pętli. W poniższym przykładzie, realizującym miganie diody, zastosowano podwójnie zagnieżdżone pętle do odmierzania czasu. Rozkaz skoku to 2 cykle maszynowe, rozkaz dekrementacji 1 cykl, co razem daje 3 cykle maszynowe. Na jeden obrót pętli zewnętrznej przypada 255 obrotów pętli wewnętrznej x 3 cykle, co w sumie daje 255x3x255x3= cykli maszynowych x 400ns = 0,23 s. 17. Program realizujący miganie diodą W kolejnym przykładzie będziemy diodę na przemian zapalali i gasili. W tym celu należy dopisać linię programu, która spowoduje zgaszenie diody, a pętlę przesunąć na początek programu Jeżeli tak zmodyfikowany program wprowadzimy do stanowiska laboratoryjnego, to nie zaobserwujemy żadnej zmiany w stosunku do poprzedniego programu. W rzeczywistości dioda naprawdę jest zapalana i gaszona, ale dzieje się to bardzo szybko i nie jesteśmy w stanie tego zauważyć. Pomiędzy zapalanie i gaszenie diody należy wprowadzić przerwy zgodnie z przedstawionym poniżej algorytmem. POCZATEK Zapal diodę RB6 Odczekaj Zgaś diodę RB6 Odczekaj SKOK Rys.12. Algorytm programu migającego diodą w lewym dolnym rogu.
17 17 Poniżej przedstawiono fragment programu realizujący miganie diodą w lewym dolnym rogu wyświetlacz. ;***************************************************************** LICZNIK1 equ H 0C LICZNIK2 equ H 0D movlw D 255 movwf LICZNIK1 movwf LICZNIK2 bcf PORTA,0 POCZĄTEK PAUZA1 PAUZA11 decfsz LICZNIK1,F goto PAUZA11 decfsz LICZNIK2,F goto PAUZA1 bsf PORTB,6 PAUZA2 PAUZA22 decfsz LICZNIK1,F goto PAUZA22 decfsz LICZNIK2,F goto PAUZA2 bcf PORTB,6 goto POCZATEK ;***************************************************************** Pierwsze dwie linie to deklaracje stałych LICZNIK1 i LICZNIK2. Wartości jakie przyjmują stałe 0C i 0D to zapisane szesnastkowo adresy rejestrów dowolnego przeznaczenia (patrz opis i mapa pamięci danych na Rys. 3.). Kolejna instrukcja movlw D 255 zapisuję liczbę 255 podaną w notacji dziesiętnej do akumulatora. Następne dwie linie programu movwf LICZNIK1 i movwf LICZNIK2 zapisują zawartość akumulatora (liczba 255) do rejestrów o adresach LICZNIK1 i LICZNIK2. Rozkaz decfsz LICZNIK1,F powoduje dekrementowanie (zmniejszenie o 1) zawartości rejestru o adresie LICZNIK1 i wpisanie wyniku z powrotem do tego samego rejestru. Jeżeli wynik jest zerem następna instrukcja jest omijana. Ponieważ kolejna instrukcja to rozkaz skoku do etykiety poprzedzającej dekrementacje, pętla wykonywana jest 255 razy. Następne rozkazy tworzą analogiczną pętle nadrzędną do powyżej omówionej. W ten sposób osiągnęliśmy zauważalną dla oka (0,23s) przerwę pomiędzy zapalaniem i gaszeniem diody. 18. Stos i podprogramy PIC 16F84 ma wbudowany stos, który jest niezależny od pamięci danych. Wskaźnik stosu nie jest dostępny programowo i nie wymaga ustawienia po restarcie kontrolera. Stos PIC 16F84 ma osiem poziomów, co pozwala na ośmiokrotne zagnieżdżenie procedur w sobie (wywołanie kolejnej procedury z aktualnie wykonywanej procedury). Stos działa tak jak sugeruje to nazwa na wierzchu jest zawsze ostatnio odłożony adres, dzięki czemu procesor realizuje powroty z zagnieżdżonych procedur we właściwej kolejności.
18 18 Stos umożliwia automatyczny powrót z procedury (podprogramu) do miejsca jej wywołania w głównym programie. Wykonanie rozkazu CALL nn (gdzie nn jest adresem procedury) powoduje zapisanie na wierzchołku stosu adresu aktualnie wykonywanego rozkazu (czyli stanu licznika programu - Program Counter). Następnie procesor wykonuje skok do lokacji nn. Procedura nn musi być zakończona rozkazem RETURN (lub RETFIE, jeżeli obsługuje przerwanie). Wykonanie tego rozkazu powoduje odczytanie zawartości wierzchołka stosu i załadowanie jej do licznika programu, dzięki czemu procesor powraca do wykonywania głównego programu poniżej linii z której wyskoczył do procedury. Rozkazy CALL nn i RETURN współpracują ze sobą i muszą tworzyć pary. Użycie rozkazu RETURN bez wcześniejszego użycia CALL nn spowoduje przypadkowy skok procesora. Procedury muszą być umieszczone w takim miejscu aby mogły być wykonane tylko po wywołaniu rozkazem CALL nn (w przeciwnym razie mikrokontroler wykona rozkaz RETURN - czyli skoczy w niewiadome miejsce, bo na stosie nic nie było wcześniej odłożone). Poniższy przykład demonstruje jedną z możliwości umieszczenie kodu procedury poniżej bezwarunkowej pętli głównego programu. Można również umieścić kody procedur w dowolnym innym miejscu programu, trzeba tylko pamiętać o omijaniu ich bezwarunkowymi skokami. Użycie mechanizmu procedur (podprogramów) pozwala skrócić kod programu oraz czyni go bardziej przejrzystym. Procedura jest fragmentem programu wykonywanym po wywołaniu rozkazem CALL n (gdzie n jest adresem jej początku ). Cała sztuka sprowadza się głównie do prawidłowego użycia rozkazów CALL n i RETURN. Przykład zastosowania mechanizmu procedur do przykładu opisującego miganie diody przedstawiony jest poniżej. ; ****************************************************************************** * ;Deklaracje wstępne - proszę tu niczego bez namysłu nie zmieniać!!! ; list P=16C84, F=INHX8M, R=DEC #include p16f84a.inc CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC ; ; ****************************************************************************** LICZNIK1 equ H 0C LICZNIK2 equ H 0D ORG 0x00 ;kontroler rozpoczyna pracę od adresu 00 GOTO GŁÓWNY ;skok do programu głównego GŁÓWNY bsf STATUS,RP0 ;Niezbędne, aby zmienić rejestr TRISx movlw B' ' ;Wpisanie do akumulatora liczby zero ;8 bitowa liczba w postaci binarnej movwf TRISA ;Ustawienie wszystkich linii tworzących ;port A w tryb wyjściowy movlw B' ' ;To samo dla linii tworzących port B movwf TRISB ; bcf STATUS,RP0 ;Wyłączenie specjalnego adresowania ; movlw B' ' ;Wygaszenie wyświetlacza przez wpisanie movwf PORTA ;do portu A ośmiu jedynej, co praktyczne ;wyłącza wszystkie kolumny.
19 19 movlw B' movwf PORTB ;Analogicznie wyłączenie wszystkich rzędów. bcf PORTA,0 MIGANIE bsf PORTB,6 CALL CZEKAJ bcf PORTB,6 CALL CZEKAJ GOTO MIGANIE ;zapalenie diody ;realizacja opóźnienia, wywołanie CZEKAJ ;zgaszenie diody ;realizacja opóźnienia, wywołanie CZEKAJ ;zapętlenie programu CZEKAJ ;deklaracja procedury movlw D 255 movwf LICZNIK1 movwf LICZNIK2 PAUZA1 PAUZA11 decfsz LICZNIK1,F goto PAUZA11 decfsz LICZNIK2,F goto PAUZA1 RETURN ;koniec procedury END ;koniec programu ; ****************************************************************************** * 19. Asembler mikrokontrolera PIC 16F84 W opisie każdego rozkazu wymienione są następujące jego cechy: Ilość komórek ROM, które zajmuje rozkaz (pozycja Słów:...). Czas potrzebny mikrokontrolerowi na wykonanie instrukcji, wyrażony w cyklach maszynowych (pozycja Cykli:...). W zestawie laboratoryjnym częstotliwość zegara systemowego wynosi 10MHz, co daje czas trwania jednego cyklu 400ns. Bity statusu (flagi), które są ustawiane w zależności od rezultatu wykonania rozkazu (pozycja Bity statusu:...). Skróty użyte w składni rozkazów: k argument rozkazu - liczba (nie można w tym polu wskazać zawartości rejestru); f adres rejestru liczba ; d - przeznaczenie wyniku operacji (litera W lub F); b numer bitu w rejestrze (liczba 0..7); ADDLW Add Literal to W (dodaj stałą do W ) Składnia: ADDLW k (W + k) W Słów: 1 Cykli: 1 Bity statusu: C, DC, Z Ośmiobitowa stała k jest dodawana do zawartości akumulatora.
20 20 ADDWF Add W to f (dodaj W do f) Składnia: ADDWF f,d (W + f) d Słów: 1 Cykli: 1 Bity statusu: C, DC, Z Zwartość akumulatora jest dodawana do zawartości rejestru f. Jeżeli d = W rezultat jest umieszczany w akumulatorze, jeżeli d = F rezultat jest wpisywany do rejestru f. ANDLW And Literal and W (pomnóż W przez stałą) Składnia: ANDLW k (W.and. k) W Słów: 1 Cykli: 1 Bity statusu: Z Zawartość akumulatora jest mnożona logicznie przez ośmiobitową liczbę k. Rezultat jest wpisywany do akumulatora. ANDWF And W with f (pomnóż W przez f) Składnia: ANDWF f,d (W.and. f) d Słów: 1 Cykli: 1 Bity Statusu: Z Zawartość akumulatora jest mnożona logicznie przez zawartość rejestru f. Jeżeli d = W wynik jest umieszczany w akumulatorze, jeżeli d = F wynik jest umieszczany w rejestrze f. BCF Bit clear f (zeruj bit w f) Składnia: BCF f,b 0 f(b) Słów: 1 Cykli: 1 Bity statusu: żaden Zerowany jest bit numer b w rejestrze f, b może być dane tylko liczbą BSF Bit set f (ustaw bit w f) Składnia: BSF f,b 1 f(b) Słów: 1 Cykli: 1 Bity statusu: żaden Ustawiany jest bit numer b w rejestrze f, b może być dane tylko liczbą BTFSC Bit test, skip if clear (testuj bit, przeskocz jeśli jest wyzerowany) Składnia: BTFSC f,b Przeskocz jeśli f(b) = 0 Słów: 1 Cykli: 1 (2) Bity statusu: żaden Jeżeli bit numer b w rejestrze f jest zerem wtedy następna instrukcja, umieszczona w programie poniżej instrukcji BTFSC, jest omijana. Zamiast niej jest wtedy wykonywany rozkaz NOP co sprawia, że wykonanie instrukcji BTFSC zajmuje w takim przypadku 2 cykle maszynowe. Jeśli bit numer b jest jedynką następna instrukcja nie jest omijana.
21 21 BTFSS Bit test, skip if set (testuj bit, przeskocz jeśli jest ustawiony) Składnia: BTFSS f,b Przeskocz jeśli f(b) = 1 Słów: 1 Cykli: 1 (2) Bity statusu: żaden Jeżeli bit numer b w rejestrze f jest jedynką wtedy następna instrukcja (umieszczona w programie poniżej instrukcji BTFSS...) jest omijana. Zamiast niej jest wtedy wykonywany rozkaz NOP co sprawia, że wykonanie instrukcji BTFSS... w takim przypadku zajmuje 2 cykle maszynowe. Jeśli bit numer b jest zerem następna instrukcja nie jest omijana. CALL Subroutine call (wywołanie procedury) Składnia: CALL k PC +1 TOS, k PC Słów: 1 Cykli: 2 Bity statusu: żaden Zawartość PC jest umieszczana na stosie, liczba k jest wpisywana do PC. CLRF Clear f (zeruj f) Składnia: CLRF f 00h f Słów: 1 Cykli: 1 Bity statusu: Z Rejestr f jest zerowany. CLRW Clear W register (zeruj rejestr W) Składnia: CLRW 00h f Słów: 1 Cykli: 1 Bity statusu: Z Akumulator jest zerowany. COMF Complement f (neguj f) Składnia: COMF f,d f d Słów: 1 Cykli: 1 Bity statusu: Z Zawartość rejestru f jest negowana. Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany w rejestrze f. DECF Decrement f (dekrementuj f) Składnia: DECF f,d (f - 1) d Słów: 1 Cykli: 1 Bity statusu: Z Zawartość rejestru f jest dekrementowana (zmniejszana o jeden). Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany w f. DECFSZ Decrement f, skip if 0 (dekrementuj f, przeskocz jeśli zero) Składnia: DECFSZ f,d
22 22 (f - 1) d, przeskocz jeśli 0 Słów: 1 Cykli: 1 (2) Bity statusu: żaden Zawartość rejestru f jest dekrementowana (zmniejszana o jeden). Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany z powrotem w f. Dekrementacja rejestru zawierającego zero daje wynik 255 (H FF ). Jeżeli wynik dekrementacji jest zerem, następna instrukcja jest omijana, a w jej miejsce jest wykonywany rozkaz NOP co sprawia, że wykonanie instrukcji DECFSZ zajmuje w takim przypadku 2 cykle maszynowe. GOTO Unconditional branch (skok bezwarunkowy) Składnia: GOTO k k PC Słów: 1 Cykli: 2 Bity statusu: żaden Wykonywany jest skok do adresu k. Wykonanie tej instrukcji zabiera dwa cykle. INCF Increment f (inkrementuj f) Składnia: INCF f,d (f +1) d Słów: 1 Cykli: 1 Bity statusu: Z Zawartość rejestru f jest inkrementowana (zwiększana o jeden, H FF + 1 = H 00 ). Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany w f. INCFSZ Increment f, skip if 0 (inkrementuj f, przeskocz jeśli 0) Składnia: INCFSZ f,d (f +1) d, przeskocz jeśli 0 Słów: 1 Cykli: 1 (2) Bity statusu: Z Zawartość rejestru f jest inkrementowana (zwiększana o jeden). Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany w f. Jeżeli wynik inkrementacji jest zerem (inkrementowanie rejestru o zawartości H FF powoduje zmianę na H 00 ), następna instrukcja, umieszczona w programie poniżej instrukcji INCFSZ, jest omijana, a w jej miejsce jest wykonywany rozkaz NOP co sprawia, że wykonanie instrukcji INCFSZ zajmuje w takim przypadku 2 cykle maszynowe. IORLW Inclusive OR Literal with W (sumuj logicznie stałą i W) Składnia: IORLW k (W.OR. k) W Słów: 1 Cykli: 1 Bity statusu: Z Zawartość akumulatora jest sumowana logicznie z liczbą k. Wynik jest wpisywany do akumulatora. IORWF Inclusive OR W with f (sumuj logicznie W i f) Składnia: IORWF f,d (W.OR. f) d Słów: 1 Cykli: 1 Bity statusu: Z Zawartość akumulatora jest sumowana logicznie z zawartością rejestru f. Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany w f. MOVLW Move Literal to W (przepisz stałą do W)
23 23 Składnia: MOVLW k k W Słów: 1 Cykli: 1 Bity statusu: żaden Ośmiobitowa liczba k jest wpisywana do akumulatora. MOVF Move f (przepisz f) Składnia: MOVF f,d f d Słów: 1 Cykli: 1 Bity statusu: Z Zawartość rejestru f jest przepisywana do rejestru przeznaczenia d. Jeżeli d =W to rejestrem przeznaczenia jest W, jeżeli d = F to rejestrem przeznaczenia jest z ten sam rejestr f. Jeżeli rejestr f zawiera liczbę zero to ustawiana jest flaga ZERO (Z) w rejestrze STATUS, w przeciwnym wypadku flaga Z jest zerowana. MOVWF Move W to f (przepisz W do f) Składnia: MOVWF f W f Słów: 1 Cykli: 1 Bity statusu: żaden Zawartość akumulatora jest przepisywana do rejestru f. NOP No operation (nic nie rób) Składnia: NOP Brak operacji Słów: 1 Cykli: 1 Bity statusu: żaden Instrukcja pusta. RETLW Return Literal to W (wracaj wpisując stałą do W) Składnia: RETLW k k W; TOS PC Słów: 1 Cykli: 2 Bity statusu: żaden Ośmiobitowa liczba k jest wpisywana do akumulatora, wykonywany jest powrót z procedury. RETURN Return from Subroutine (wracaj z procedury) Składnia: RETURN TOS PC Słów: 1 Cykli: 2 Bity statusu: żaden Wykonywany jest powrót z procedury. RETFIE Return from Interrupt (wracaj z obsługi przerwania) Składnia: RETFIE TOS PC Słów: 1 Cykli: 2 Bity statusu: żaden Wykonywany jest powrót z procedury obsługi przerwania z automatycznym uruchomieniem wszystkich przerwań, automatycznie ustawiany jest bit GIE w rejestrze INTCON. RLF Rotate Left through Carry (rotuj w lewo poprzez Carry)
24 24 Składnia: RLF f,d Słów: 1 Cykli: 1 Bity statusu: C C b7 b6 b5 b4 b3 b2 b1 b0 Zawartość rejestru f jest rotowana w lewo, poprzez flagę CARRY (bit C w rejestrze STATUS). Stan C jest wpisywany do najmłodszego bitu rejestru f. Najstarszy bit f jest przepisywany do C. RRF Rotate Right through Carry (rotuj w prawo poprzez Carry) Składnia: RRF f,d Słów: 1 Cykli: 1 Bity statusu: C b7 B6 b5 b4 b3 b2 b1 b0 C Zawartość rejestru f jest rotowana w prawo, poprzez CARRY (bit C w rejestrze STATUS). Stan C jest wpisywany do najstarszego bitu rejestru f. Najmłodszy bit f jest przepisywany do C. SUBLW Subtract W from Literal (odejmij W od stałej) Składnia: SUBLW k (k - W) W Słów: Cykli: 1 Bity statusu: C, DC, Z Zawartość akumulatora jest odejmowana (w kodzie U2) od ośmiobitowej liczby k. Wynik umieszczany jest w akumulatorze. SUBWF Subtract W from f (odejmij W od f) Składnia: SUBWF f,d (f - W) d Słów: 1 Cykli: 1 Bity statusu: C, DC, Z Zawartość akumulatora jest odejmowana (w kodzie U2) od zawartości rejestru f. Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany w f. SWAPF Swap f (odwróć f) Składnia: SWAPF f,d Słów: 1 Cykli: 1 Bity statusu: żaden Młodsza czwórka bitów rejestru f (b3 - b0) jest zamieniana miejscami ze starszą czwórką (b7 - b4). Jeżeli d = W to wynik jest wpisywany do akumulatora, jeżeli d = F wynik jest umieszczany w f. XORLW Exlusive OR literal with W (funkcja XOR stałej k i akumulatora)
25 25 Składnia: XORLW k (W.XOR. k) W Słów: 1 Cykli: 1 Bity statusu: Z Wynik działania XOR na zawartości akumulatora i stałej k jest wpisywany do W. XORWF Exlusive OR W with f (funkcja XOR rejestrów W i f) Składnia: XORWF f,d (W.XOR. f) W Słów: 1 Cykli: 1 Bity statusu: Z Wynik działania XOR na zawartości rejestrów W i f jest wpisywany do W, jeżeli d = W, lub do f jeżeli d = F 20. Obsługa przerwań Każdy mikrokontroler jest wyposażony jest mechanizm obsługi przerwań. Mechanizm ten jest bardzo ważny ze względu na optymalne wykorzystanie czasu pracy procesora. Rys.13. Istota wykorzystywania mechanizmu przerwań. Przerwanie (interrupt) to sygnał powodujący zmianę przepływu sterowania, niezależnie od aktualnie wykonywanego programu. Pojawienie się przerwania powoduje wstrzymanie aktualnie wykonywanego programu i wykonanie przez procesor kodu procedury obsługi przerwania (interrupt handler). W mikrokontrolerze PIC16F84 przewidziane są 4 źródła sygnału, wywołującego przerwanie: Zewnętrzne przerwanie na linii RB0/INT Przerwanie od przepełnienia licznika TMR0 Przerwanie wywołane zmianą stanu na liniach RB7:RB4
26 26 Przerwanie od EEPROM Rys.14. Organizacja systemu przerwań w mikrokontrolerze PIC16F84. INTCON to podstawowy rejestr służący do konfigurowania mechanizmu przerwań w mikrokontrolerze PIC16F84. W rejestrze tym należy wyróżnić dwa rodzaje bitów. Do pierwszej grupy należą bity zezwalające na obsługę wybranego typu przerwania lub wszystkich przerwań: EEIE, T0IE, RBIE, INTE, GIE. Do drugiej grupy należą bity, które wskazują, jaki sygnał wywołał przerwanie. Są to tak zwane flagi: EEIF, T0IF, RBIF, INTF. Szczegółowy opis rejestru INTCON został przedstawiony został poniżej. 21. Rejestr INTCON Rejestr ten przeznaczony jest do sterowania pracą przerwań dostępnych w danym mikrokontrolerze. R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 GIE EEIE T0IE INTE RBIE T0IF INTF RBIF bit 7 R możliwość odczytania wartości bitu W możliwość ustawienia wartości bitu -0 wartość ustawiana po restarcie procesora Bit 7 GIE (Global Interrupt Enable bit) 1 = zezwolenie na obsługę wszystkich przerwań 0 = zablokowanie obsługi wszystkich przerwań Bit 6 EEIE (EEPROM Write Complete Interrupt Enable bit) 1 = przerwanie dozwolone 0 = przerwanie zabronione Bit 5 T0IE (TMR0 Overflow Interrupt Enable bit) 1 = przerwanie dozwolone 0 = przerwanie zablokowane Bit 4: INTE (INT External Interrupt Enable bit ) 1 = przerwanie dozwolone
27 27 0 = przerwanie zablokowane Bit 3: RBIE (RB port change Interrupt Enable bit) 1 = umożliwia obsługę przerwania wywołaną zmianą stanu linii 0 = blokuje obsługę przerwania Bit 2: T0IF (TMR0 Overflow Interrupt Flag bit ) 1 = wartość jest wpisywana, gdy licznik zmienia wartość z FFh na 00h 0 = przepełnienie licznika nie wystąpiło Ten bit musi zostać wyzerowany aby możliwe było przyjęcie następnego przerwania Bit 1: INTF (INT External Interrupt Flag bit ) 1 = przerwanie zewnętrzne na linii RB0 wystąpiło 0 = przerwanie nie wystąpiło Jeżeli pojawi się narastające lub opadające zbocze na linii RB0/INT to ten bit zostaje wstawiony. Należy go zerować programowo. Bit 0: RBIF (RB Port Change Interrupt Flag bit) Bit, który informuje, czy pojawiła się zmiana stanu na wejściu RB4,RB5, RB6 lub RB7 1 = wartość zostaje ustawiona, jeżeli przynajmniej stan jednego w wymienionych wejść się zmieni 0 = żadna zmiana na wymienionych wejściach nie wystąpiła Bit ten musi być zerowany programowo aby umożliwić wykrycie następnej zmiany stanu na powyższych wejściach. 22. Program korzystający z systemu przerwań ORG 0x00 GOTO główny ; Skok do programu głównego. ORG 0x04 GOTO przerwanie ; Skok do podprogramu obsługi przerwania. główny ;Treść programu głównego. start GOTO start ; Pętla programu głównego. przerwanie... ; Należy wpisać co procesor ma robić po ; wykryciu przerwania.... RETFIE ; Zakończenie podprogramu obsługi przerwania, ; powrót do programu głównego. ; Instrukcja ta automatycznie ustawia bit GIE, ; umożliwiając przyjęcie kolejnego przerwania END ; Koniec programu.
28 Zasady korzystania z licznika TMR0 Mikrokontroler PIC16F84 wyposażony jest w jeden licznik sprzętowy. Licznik ten może być wykorzystywany do odliczania czasu, zgodnie z cyklem maszynowym procesora, lub do zliczania impulsów zewnętrznych podawanych na wejście RA4/T0CKI. Dodatkowo sygnał taktujący licznik może zostać spowolniony przy pomocy sprzętowego dzielnika częstotliwości. Do konfigurowania pracy licznika służą trzy rejestry specjalne: TMR0, INTCON i OPTION_REG. Zależności między ustawieniami w tych rejestrach, a pracą licznika przedstawione zostały na rys. 15. Rys.15. Zasady korzystania ze sprzętowego licznika w mikrokontrolerze PIC16F84. Rys.16. Zależności czasowe w trakcie wywołania przerwania od licznika T0.
29 29 Zasady korzystania z licznika TMR0: 1. Ustawić, w rejestrze TMR0, wartość początkową, od której licznik każdorazowo zaczyna zliczać impulsy w górę do wartości FF. 2. Ustawić bity w rejestrze OPTION_REG zgodnie z oczekiwaną pracą licznika, pamiętając przy tym, że rejestr ten znajduje się w Banku Należy w rejestrze INTCON umożliwić przyjęcie przerwania od licznika przez ustawienie bitu T0IE i włączyć obsługę wszystkich przerwań bitem GIE. 4. Przed wyjściem z programu obsługi przerwania należy wyzerować flagę T0IF, aby umożliwić ponowne odliczanie licznika. 24. Rejestr OPTION_REG W rejestrze tym ustawiamy zaawansowane opcje dotyczące: przerwań zewnętrznych, pracy licznika T0 oraz sprzętowego dzielnika częstotliwości. R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit 7 R możliwość odczytania wartości bitu W możliwość ustawienia wartości bitu -1 wartość ustawiana po restarcie procesora bit 7: RBPU (Pull-up Enable bit) Włącza możliwość przyjęcia przerwania na wejściach RB4:RB7 1 = Przerwania na PORT B zablokowane 0 = Przerwania na PORTB możliwe bit 6: INTEDG (Interrupt Edge Select bit) 1 = Wywołanie obsługi przerwania po wykryciu narastającego zbocza na wejściu RB0 0 = Wywołanie obsługi przerwania po wykryciu opadającego zbocza na wejściu RB0 bit 5: T0CS (TMR0 Clock Source Select bit ) 1 = Taktowanie licznika impulsami z wejścia zewnętrznego RA4/T0CKI 0 = Taktowanie licznika zgodnie z cyklem maszynowym (CLKOUT) bit 4: T0SE (TMR0 Source Edge Select bit 1 = Zwiększanie licznika po wykryciu opadającego zbocza na wejściu RA4/T0CKI 0 = Zwiększanie licznika po wykryciu narastającego zbocza na wejściu RA4/T0CKI bit 3: PSA (Prescaler Assignment bit) 1 = Przypisanie dzielnika częstotliwości do taktowania WDT 0 = Przypisanie dzielnika częstotliwości do taktowania licznika TMR0 bit 2-0: PS2:PS0 Wartości określające ustawienia dzielnika częstotliwości Wartości bitów Częstotliwość Częstotliwość PS2:PS0 dla licznika dla WDT 000 1:2 1: :4 1:2
30 :8 1: :16 1: :32 1: :64 1: :128 1: :256 1: Przykłady programów Pisząc program w edytorze tekstowym, należy korzystać z klawisza tabulacji. Pozwala to ustawiać etykiety, mnemoniki rozkazów, argumenty i komentarze w kolejnych kolumnach, co poprawia czytelność programu. Średnik oznacza tekst komentarza (od średnika do końca linii wszystkie znaki są ignorowane przez kompilator). Etykieta (miejsca skoku w programie bądź adresu komórki RAM) może być ciągiem liczącym do 32 znaków. Nie może zaczynać się cyfrą ani zawierać znaku odstępu. Celowe jest takie dobieranie tych nazw aby sugerowały funkcję skoku bądź rejestru. Przykład 1: Należy wyzerować rejestry pamięci RAM, począwszy od adresu 10h do 2Fh. Główna część programu wykorzystujący adresowanie bezpośrednie, zajmuje 23 komórki i wygląda następująco: 0 clrf 10h 1 clrf 11h clrf 2Fh Program wykorzystujący adresowanie pośrednie zajmuje 7 komórek ROM: 0 movlw H 10 ; Wpisz do akumulatora adres pierwszej komórki. 1 movwf FSR ; Przepisz zawartość akumulator do FSR. 2 movlw D 23 ; Wpisz do akumulatora liczbę komórek do wyzerowania. 3 movwf H 0C ; Przepisz zawartość akumulatora do komórki 0Ch,licznika ; pętli. 4 HOP clrf 00h ; Zeruj komórkę o adresie w FSR. 5 incf FSR,F ; Inkrementuj zawartość FSR. 6 decfsz H 0C,F ; Dekrementuj licznik, jeśli licznik = 0 ; to omiń następny rozkaz. 7 goto HOP ; Powtórz pętlę od miejsca oznaczonego jako HOP
31 31 Przykład 2: Należy wygenerować 50 impulsów prostokątnych. Wykonanie poniższego fragmentu programu przez PIC 16F84 spowoduje wygenerowanie na linii RA0 50 impulsów prostokątnych. LICZNIK equ H 0C ; Zdefiniuj etykietę LICZNIK bsf STATUS,RP0 ; Przełącz adresowanie banków RAM movlw B ; Ustaw linię RA0 jako wyjście movwf TRISA bcf STATUS,RP0 movlw D 50 ; Załaduj do W liczbę 50 movwf LICZNIK ; Przepisz zawartość W do licznika Gen bsf PORTA,0 ; Ustaw linię RA0 w stan wysoki bcf PORTA,0 ; Ustaw linię RA0 w stan niski decfsz LICZNIK,F; Dekrementuj licznik, przeskocz następny goto Gen ; rozkaz, jeśli w liczniku jest zero. ; Powtórz pętlę 50razy STOP goto STOP ; Zatrzymaj się w tym miejscu po wykonaniu ; programu. END ; Dyrektywa dla kompilatora Przykład 3: Należy policzyć jedynki w akumulatorze i wynik umieścić w akumulatorze. Wykonanie poniższego fragmentu programu spowoduje policzenie bitów akumulatora będących jedynkami i umieszczenie wyniku w akumulatorze. TEMP equ H 0C ; Etykieta adresu rejestru pomocniczego LICZ_PETLI equ H 0D ; Etykieta adresu rejestru licznika pętli LICZ_BITOW equ H 0E ; Etykieta adresu rejestru licznika pętli movwf TEMP ; Przepisz zawartość akumulatora do TEMP. movlw D 08 ; Załaduj do licznika pętli liczbę 8. movwf LICZ_PETLI clrf LICZ_BITOW ; Zeruj licznik bitów Test btfsc TEMP,0 ; Testuj stan b0 rejestru TEMP incf LICZ_BITOW,F ; Inkrementuj licznik bitów jeśli b0=1 rrf TEMP,F ; Rotuj zawartość TEMP, wynik umieść w TEMP decfsz LICZ_PETLI,F ; Odlicz 8 wykonań pętli programu goto Test movf LICZ_BITOW,W ; Przepisz wynik do akumulatora STOP goto STOP ; Zatrzymaj się w tym miejscu ; po wykonaniu programu END ; Dyrektywa dla kompilatora Przykład 4: Należy sprawdzić zawartość rejestru WYNIK i odpowiednio ustawić linie portu B. Wykonanie poniższego fragmentu programu spowoduje sprawdzenie zawartości rejestru WYNIK i jeżeli WYNIK=H 00 to do wszystkie linie tworzące PORTB zostaną wyzerowane, a jeżeli WYNIK 0 to wszystkie linie portu B zostaną ustawione w stan wysoki. Po tej operacji mikrokontroler zatrzyma się na linii STOP. STOP movlw H 00 ; Przygotuj w W stan PORTB dla WYNIK = 0 movf WYNIK,F ; Przepisz WYNIK w celu ustawienia flag w STATUS btfss STATUS,Z ; Jeśli WYNIK=0 to Z=1 - następna linia będzie ominięta movlw H FF ; Zmień zawartość akumulatora dla WYNIK 0 movwf PORTB ; Przepisz akumulator do rejestru PORTB goto STOP ; Zatrzymaj się na tej linii programu Przykład 5: Należy sprawdzań stan linii RA0 i odpowiednio ustawiać stan linii RB0.
32 32 Wykonanie poniższego fragmentu programu spowoduje ciągłe sprawdzanie stanu linii RA0 (wejścia) i ustawianie zgodnie z nim stanu linii RB0 (wyjścia). Konfigurowanie linii w odpowiednie tryby wejścia/wyjścia zostało pominięte. Spr Btfss PORTA,0 Bcf PORTB,0 ; Ten rozkaz będzie wykonany jeżeli RA0=0 Btfsc PORTA,0 Bsf PORTB,0 ; Ten rozkaz będzie wykonany jeżeli RA0=1 goto Spr Przykład 6: Należy wygenerować przebieg prostokątny o okresie 240 us wiedząc, że częstotliwość zegara systemowego 10 MHz 1 cykl maszynowy = 400n. LICZNIK equ H 0C ; Zdefiniuj etykietę LICZNIK. bsf STATUS,RP0 ; Przełącz adresowanie banków RAM. movlw B ; Ustaw linię RA0 jako wyjście. movwf TRISA bcf STATUS,RP0 HOP bsf PORTA,0 ; Ustaw linię RA0 w stan wysoki. call Op120us ; Wywołaj procedurę opóźnienia. bcf PORTA,0 ; Ustaw linię RA0 w stan niski. Call Op120us ; Wywołaj procedurę opóźnienia. Goto HOP ; Powtarzaj pętlę w nieskończoność. Op120us ; Tu zaczyna się procedura opóźnienia. movlw D 100 ; Załaduj 100 do LICZNIKA. movwf LICZNIK ; Licz od 100 do 0. OP1 decfsz LICZNIK,F; Wykonanie tej pętli trwa 100 x 3 cykle goto OP1 ; maszynowe czyli 120 us. return END Rozkazy CALL nn i RETURN wykorzystują specjalny mechanizm realizujący powrót z procedury do właściwej linii głównego programu. Po pierwszym wywołaniu procedury Op120us i po jej wykonaniu procesor powinien wykonać rozkaz BCF PORTA,0. Natomiast po drugim wywołaniu rozkaz GOTO HOP. Procedura kończy się zawsze rozkazem RETURN jak zatem realizowane są powroty w różne miejsca głównego programu? Umożliwia je stos, czyli specjalna strefa pamięci, w której procesor zapisuje sobie adres następnej komórki ROM, po tej, w której napotkał rozkaz CALL nn. Następnie wykonuje skok do komórki o adresie nn i wykonuje program zapisany w procedurze. Po napotkaniu rozkazu RETURN, odczytuje adres zapisany na stosie i wraca do tej linii głównego programu, która znajdowała się bezpośrednio po wywołaniu procedury.
2. Architektura mikrokontrolerów PIC16F8x... 13
Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator
Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski
Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 90-236 Łódź, Pomorska 149/153 https://std2.phys.uni.lodz.pl/mikroprocesory/
Wstęp...9. 1. Architektura... 13
Spis treści 3 Wstęp...9 1. Architektura... 13 1.1. Schemat blokowy...14 1.2. Pamięć programu...15 1.3. Cykl maszynowy...16 1.4. Licznik rozkazów...17 1.5. Stos...18 1.6. Modyfikowanie i odtwarzanie zawartości
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2
Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci,
Technika Mikroprocesorowa Laboratorium cz. 1b
Technika Mikroprocesorowa Laboratorium cz. 1b Politechnika Gdańska Wydział Elektroniki, Telekomunikacji i Informatyki Gdańsk 2007 Spis treści Ćwiczenie 1 Współpraca mikrokontrolera PIC z klawiaturą i wyświetlaczem...1
Wydział Mechaniczny. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 4. Laboratorium z przedmiotu: Technika cyfrowa i mikroprocesorowa
Politechnika Białostocka Wydział Mechaniczny Instrukcja do zajęć laboratoryjnych Temat ćwiczenia: Programowanie układu do sterowania wyświetlaczem 7-segmentowym Numer ćwiczenia: 4 Laboratorium z przedmiotu:
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury
Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury Cel ćwiczenia: Głównym celem ćwiczenia jest nauczenie się obsługi klawiatury. Klawiatura jest jednym z urządzeń wejściowych i prawie zawsze występuje
Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne
Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...
Technika mikroprocesorowa I Wykład 2
Technika mikroprocesorowa I Wykład 2 Literatura: www.zilog.com Z80 Family, CPU User Manual Cykle magistrali w mikroprocesorze Z80 -odczyt kodu rozkazu, -odczyt-zapis pamięci, -odczyt-zapis urządzenia we-wy,
Systemy wbudowane. Układy czasowo-licznikowe Obsługa przerwań Zasilanie, zegar i zerowanie Tryb uśpienia
Systemy wbudowane Układy czasowo-licznikowe Obsługa przerwań Zasilanie, zegar i zerowanie Tryb uśpienia Ogólnie o timerach Układy czasowo-licznikowe służą do precyzyjnego odmierzania czasu i/lub zliczania
Ćwiczenie 1 Podstawowe właściwości mikrokontrolera rodziny PIC
Spis treści Ćwiczenie 1 Podstawowe właściwości mikrokontrolera rodziny PIC...1 Wykorzystywany sprzęt...1 Cel ćwiczenia...1 Szczegółowe zagadnienia...1 Zadania...1 Potrzebne informacje...1 Uwagi do realizacji
Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski
Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 90-236 Łódź, Pomorska 149/153 https://std2.phys.uni.lodz.pl/mikroprocesory/
Opis układów wykorzystanych w aplikacji
Opis układów wykorzystanych w aplikacji Układ 74LS164 jest rejestrem przesuwnym służącym do zamiany informacji szeregowej na równoległą. Układ, którego symbol logiczny pokazuje rysunek 1, posiada dwa wejścia
Hardware mikrokontrolera X51
Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)
Struktura i działanie jednostki centralnej
Struktura i działanie jednostki centralnej ALU Jednostka sterująca Rejestry Zadania procesora: Pobieranie rozkazów; Interpretowanie rozkazów; Pobieranie danych Przetwarzanie danych Zapisywanie danych magistrala
Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika
Rejestry procesora Procesor podczas wykonywania instrukcji posługuje się w dużej części pamięcią RAM. Pobiera z niej kolejne instrukcje do wykonania i dane, jeżeli instrukcja operuje na jakiś zmiennych.
Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780
Dane techniczne : Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780 a) wielkość bufora znaków (DD RAM): 80 znaków (80 bajtów) b) możliwość sterowania (czyli podawania kodów znaków) za pomocą
1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych
Dodatek A Wyświetlacz LCD. Przeznaczenie i ogólna charakterystyka Wyświetlacz ciekłokrystaliczny HY-62F4 zastosowany w ćwiczeniu jest wyświetlaczem matrycowym zawierającym moduł kontrolera i układ wykonawczy
Systemy wbudowane. Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej. Witold Kozłowski
Uniwersytet Łódzki Wydział Fizyki i Informatyki Stosowanej Systemy wbudowane Witold Kozłowski Zakład Fizyki i Technologii Struktur Nanometrowych 9-236 Łódź, Pomorska 49/53 https://std2.phys.uni.lodz.pl/mikroprocesory/
Laboratorium 1: Wprowadzenie do środowiska programowego. oraz podstawowe operacje na rejestrach i komórkach pamięci
Laboratorium 1: Wprowadzenie do środowiska programowego oraz podstawowe operacje na rejestrach i komórkach pamięci Zapoznanie się ze środowiskiem programowym: poznanie funkcji asemblera, poznanie funkcji
dokument DOK 02-05-12 wersja 1.0 www.arskam.com
ARS3-RA v.1.0 mikro kod sterownika 8 Linii I/O ze zdalną transmisją kanałem radiowym lub poprzez port UART. Kod przeznaczony dla sprzętu opartego o projekt referencyjny DOK 01-05-12. Opis programowania
3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8
3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8 Układ PCF 8583 jest pobierającą małą moc, 2048 bitową statyczną pamięcią CMOS RAM o organizacji 256 x 8 bitów. Adresy i dane są przesyłane szeregowo
UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.
Zadaniem centralnej jednostki przetwarzającej CPU (ang. Central Processing Unit), oprócz przetwarzania informacji jest sterowanie pracą pozostałych układów systemu. W skład CPU wchodzą mikroprocesor oraz
Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Mikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
Przykładowe pytania DSP 1
Przykładowe pytania SP Przykładowe pytania Systemy liczbowe. Przedstawić liczby; -, - w kodzie binarnym i hexadecymalnym uzupełnionym do dwóch (liczba 6 bitowa).. odać dwie liczby binarne w kodzie U +..
Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED
Ćwiczenie 2 Siedmiosegmentowy wyświetlacz LED 2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się studentów ze sposobem obsługi wielopozycyjnego 7-segmentowego wyświetlacza LED multipleksowanego programowo
MIKROKONTROLERY I MIKROPROCESORY
PLAN... work in progress 1. Mikrokontrolery i mikroprocesory - architektura systemów mikroprocesorów ( 8051, AVR, ARM) - pamięci - rejestry - tryby adresowania - repertuar instrukcji - urządzenia we/wy
2. PORTY WEJŚCIA/WYJŚCIA (I/O)
2. PORTY WEJŚCIA/WYJŚCIA (I/O) 2.1 WPROWADZENIE Porty I/O mogą pracować w kilku trybach: - przesyłanie cyfrowych danych wejściowych i wyjściowych a także dla wybrane wyprowadzenia: - generacja przerwania
ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!
ćwiczenie nr 7 str.1/1 ĆWICZENIE 7 Wprowadzenie do funkcji specjalnych sterownika LOGO! 1. CEL ĆWICZENIA: zapoznanie się z zaawansowanymi możliwościami mikroprocesorowych sterowników programowalnych na
Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej
Struktura stanowiska laboratoryjnego Na rysunku 1.1 pokazano strukturę stanowiska laboratoryjnego Z80 z interfejsem częstościomierza- czasomierz PFL 21/22. Rys.1.1. Struktura stanowiska. Interfejs częstościomierza
1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro
1. Cel ćwiczenia Celem ćwiczenia jest zaprojektowanie sterowania układem pozycjonowania z wykorzystaniem sterownika VersaMax Micro oraz silnika krokowego. Do algorytmu pozycjonowania wykorzystać licznik
Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów
Marcin Stępniak Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów 1. Informacje Poniższe laboratoria zawierają podsumowanie najważniejszych informacji na temat
Metody obsługi zdarzeń
SWB - Przerwania, polling, timery - wykład 10 asz 1 Metody obsługi zdarzeń Przerwanie (ang. Interrupt) - zmiana sterowania, niezależnie od aktualnie wykonywanego programu, spowodowana pojawieniem się sygnału
Ćw. 7: Układy sekwencyjne
Ćw. 7: Układy sekwencyjne Wstęp Celem ćwiczenia jest zapoznanie się z sekwencyjnymi, cyfrowymi blokami funkcjonalnymi. W ćwiczeniu w oparciu o poznane przerzutniki zbudowane zostaną następujące układy
CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki
Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Komputer jest urządzeniem, którego działanie opiera się na wykonywaniu przez procesor instrukcji pobieranych z pamięci operacyjnej
Dokumentacja Licznika PLI-2
Produkcja - Usługi - Handel PROGRES PUH Progres Bogdan Markiewicz ------------------------------------------------------------------- 85-420 Bydgoszcz ul. Szczecińska 30 tel.: (052) 327-81-90, 327-70-27,
Programowanie Mikrokontrolerów
Programowanie Mikrokontrolerów Wyświetlacz alfanumeryczny oparty na sterowniku Hitachi HD44780. mgr inż. Paweł Poryzała Zakład Elektroniki Medycznej Alfanumeryczny wyświetlacz LCD Wyświetlacz LCD zagadnienia:
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW
MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW Projektowanie urządzeń cyfrowych przy użyciu układów TTL polegało na opracowaniu algorytmu i odpowiednim doborze i zestawieniu układów realizujących różnorodne funkcje
Ćwiczenie 7 Matryca RGB
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -1- Ćwiczenie 7 Matryca RGB IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z inną oprócz RS - 232 formą szeregowej
INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie
INSTRUKCJA OBSŁUGI 1. Zastosowanie Przekaźnik czasowy ETM jest zadajnikiem czasowym przystosowanym jest do współpracy z prostownikami galwanizerskimi. Pozwala on załączyć prostownik w stan pracy na zadany
MIKROPROCESORY architektura i programowanie
Systematyczny przegląd. (CISC) SFR umieszczane są w wewnętrznej pamięci danych (80H 0FFH). Adresowanie wyłącznie bezpośrednie. Rejestry o adresach podzielnych przez 8 są też dostępne bitowo. Adres n-tego
Podstawy techniki mikroprocesorowej
Podstawy techniki mikroprocesorowej Temat 2 Obsługa wyświetlaczy v.1.0 Uniwersytet Pedagogiczny, Instytut Techniki Dominik Rzepka, dominik.rzepka@agh.edu.pl, 2014 1. Obsługa pinów mikroprocesora i wyświetlacze
CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe
MIKROKONTROLER RODZINY MCS 5 Cykl rozkazowy mikrokontrolera rodziny MCS 5 Mikroprocesory rodziny MCS 5 zawierają wewnętrzny generator sygnałów zegarowych ustalający czas trwania cyklu zegarowego Częstotliwość
petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla
Asembler A51 1. Symbole Nazwy symboliczne Symbol jest nazwą, która może być użyta do reprezentowania wartości stałej numerycznej, wyrażenia, ciągu znaków (tekstu), adresu lub nazwy rejestru. Nazwy symboliczne
1. Operacje logiczne A B A OR B
1. Operacje logiczne OR Operacje logiczne są operacjami działającymi na poszczególnych bitach, dzięki czemu można je całkowicie opisać przedstawiając jak oddziałują ze sobą dwa bity. Takie operacje logiczne
Uniwersalny zestaw uruchomieniowy ZL4PIC
Uniwersalny zestaw uruchomieniowy ZL4PIC Uniwersalny zestaw uruchomieniowy ZL4PIC przeznaczony jest testowania aplikacji realizowanych na bazie mikrokontrolerów PIC. Jest on przystosowany do współpracy
IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych
IIPW_SML3_680 (Z80) przewodnik do ćwiczeń laboratoryjnych wrzesieo 2010 UWAGA: Moduł jest zasilany napięciem do 3.3V i nie może współpracowad z wyjściami układów zasilanych z wyższych napięd. Do pracy
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści
Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści 1. Konfiguracja pinów2 2. ISP..2 3. I/O Ports..3 4. External Interrupts..4 5. Analog Comparator5 6. Analog-to-Digital Converter.6 7.
Architektura komputerów. Asembler procesorów rodziny x86
Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych
ad a) Konfiguracja licznika T1 Niech nasz program składa się z dwóch fragmentów kodu: inicjacja licznika T1 pętla główna
Technika Mikroprocesorowa Laboratorium 4 Obsługa liczników i przerwań Cel ćwiczenia: Celem ćwiczenia jest nabycie umiejętności obsługi układów czasowo-licznikowych oraz obsługi przerwań. Nabyte umiejętności
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Przerwania laboratorium: 04 autor: mgr inż. Michał Lankosz dr hab. Zbisław Tabor,
Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe
Mikrokontroler ATmega32 System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe 1 Przerwanie Przerwanie jest inicjowane przez urządzenie zewnętrzne względem mikroprocesora, zgłaszające potrzebę
Logiczny model komputera i działanie procesora. Część 1.
Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.
A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym
MARIE A Machine Architecture that is Really Intuitive and Easy http://computerscience.jbpub.com/ecoa Słowo 16b Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym od 8000h (- 32,768 = -2^15) do 7FFFh
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery Dostęp do portów mikrokontrolera ATmega32 język C laboratorium: 10 autorzy: dr
Organizacja typowego mikroprocesora
Organizacja typowego mikroprocesora 1 Architektura procesora 8086 2 Architektura współczesnego procesora 3 Schemat blokowy procesora AVR Mega o architekturze harwardzkiej Wszystkie mikroprocesory zawierają
Pracownia elektryczno-elektroniczna klasa IV
Ćwiczenie nr 1 Cel ćwiczenia: Celem ćwiczenia jest zapoznanie się z elementami systemu DSM-51, poprawną jego pracą, oprogramowaniem na PC, możliwymi trybami pracy oraz ze sterowaniem urządzeniami sprzężonymi
Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.
E113 microkit Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100 1.Opis ogólny. Zestaw do samodzielnego montażu. Edukacyjny sterownik silnika krokowego przeznaczony jest
Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.
Generowanie sygnałów testowych VHDL Wariant współbieżny (bez procesu): sygnał
1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.
Ćwiczenie 9 Rejestry przesuwne i liczniki pierścieniowe. Cel. Poznanie właściwości i zasady działania rejestrów przesuwnych.. Poznanie właściwości i zasady działania liczników pierścieniowych. Wprowadzenie.
Struktura programu w asemblerze mikrokontrolera 8051
Struktura programu w asemblerze mikrokontrolera 8051 Program w asemblerze, dający ten sam kod wynikowy, może być napisany na wiele sposobów. Źle napisany program po pewnym czasie (a być może już w czasie
Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).
Ćw. 10 Układy sekwencyjne 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z sekwencyjnymi, cyfrowymi blokami funkcjonalnymi. W ćwiczeniu w oparciu o poznane przerzutniki zbudowane zostaną układy rejestrów
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR
Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR Zadanie polega na napisaniu pierwszego programu w języku C, jego poprawnej kompilacji i wgraniu na mikrokontroler. W tym celu należy zapoznać
Modułowy programowalny przekaźnik czasowy firmy Aniro.
Modułowy programowalny przekaźnik czasowy firmy Aniro. Rynek sterowników programowalnych Sterowniki programowalne PLC od wielu lat są podstawowymi systemami stosowanymi w praktyce przemysłowej i stały
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC
ZL4PIC uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC (v.1.0) ZL4PIC Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC 1 Zestaw jest przeznaczony dla elektroników zajmujących się aplikacjami
Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515
Laboratorium Techniki Mikroprocesorowej Informatyka studia dzienne Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515 Cel ćwiczenia Celem ćwiczenia jest poznanie możliwości nowoczesnych
Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"
Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026" Sp. z o.o. 41-250 Czeladź ul. Wojkowicka 21 Tel. 032 763-77-77 Fax: 032 763-75-94 v.1.2 www.mikster.pl mikster@mikster.pl (14.11.2007) SPIS
Mikrokontrolery AVR Wprowadzenie
Mikrokontrolery AVR Wprowadzenie Komunikacja z otoczeniem mikrokontrolera Każdy z mikrokontrolerów posiada pewna liczbę wyprowadzeń cyfrowych które służą do wprowadzania i odbierania informacji z mikrokontrolera.
Architektura komputerów
Architektura komputerów Wykład 3 Jan Kazimirski 1 Podstawowe elementy komputera. Procesor (CPU) 2 Plan wykładu Podstawowe komponenty komputera Procesor CPU Cykl rozkazowy Typy instrukcji Stos Tryby adresowania
Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:
Współpraca mikroprocesora z urządzeniami zewnętrznymi Urządzenia wejścia-wyjścia, urządzenia których zadaniem jest komunikacja komputera z otoczeniem (zwykle bezpośrednio z użytkownikiem). Do najczęściej
organizacja procesora 8086
Systemy komputerowe Procesor 8086 - tendencji w organizacji procesora organizacja procesora 8086 " # $ " % strali " & ' ' ' ( )" % *"towego + ", -" danych. Magistrala adresowa jest 20.bitowa, co pozwala
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i mikrokontrolery Liczniki i timery laboratorium: 03 autor: mgr inż. Michał Lankosz dr hab. Zbisław
MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN
MODBUS RTU wersja M1.14 protokół komunikacyjny do wyświetlaczy SEM 04.2010 Str. 1/5 MODBUS RTU wersja M1.14 protokół komunikacyjny wyświetlaczy LDN W wyświetlaczach LDN protokół MODBUS RTU wykorzystywany
Hades. Uniwersalny symulator układów
narzędzia Uniwersalny konstruktora symulator układów Hades Uniwersalny symulator układów Luca Giordano, fresk w Palazzo Medici-riccardi Doświadczenie programisty i jakość użytych narzędzi w czasie pisania
Moduł licznika położenia LP 2.
Pracownia Elektroniki i Automatyki W.J. Dubiński ul. Krzyszkowicka 16 32-020 WIELICZKA tel./fax (12) 278 29 11 NIP 676-010-37-14 Moduł licznika położenia LP 2. 1. Przeznaczenie. Licznik rewersyjny LP 2
Programowanie mikrokontrolerów. 8 listopada 2007
Programowanie mikrokontrolerów Marcin Engel Marcin Peczarski 8 listopada 2007 Alfanumeryczny wyświetlacz LCD umożliwia wyświetlanie znaków ze zbioru będącego rozszerzeniem ASCII posiada zintegrowany sterownik
Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051
Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051 Katedra Automatyki, Wydział EAIiE Akademia Górniczo-Hutnicza w Krakowie Marcin Piątek Kraków 2008 1. Ważne uwagi i definicje Poniższy
Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1
Liczniki, rejestry lab. 09 Mikrokontrolery 8051 cz. 1 PODSTAWY TECHNIKI CYFROWEJ I MIKROPROCESOROWEJ EIP KATEDRA ENERGOELEKTRONIKI I AUTOMATYKI SYSTEMÓW PRZETWARZANIA ENERGII WWW.KEIASPE.AGH.EDU.PL AKADEMIA
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Techniki mikroprocesorowe i systemy wbudowane
Techniki mikroprocesorowe i systemy wbudowane Wykład 1 Procesory rodziny AVR ATmega. Wstęp Wojciech Kordecki wojciech.kordecki@pwsz-legnica.eu Państwowa Wyższa Szkoła Zawodowa im. Witelona w Legnicy Wydział
Licznik rewersyjny MD100 rev. 2.48
Licznik rewersyjny MD100 rev. 2.48 Instrukcja obsługi programu PPH WObit mgr inż. Witold Ober 61-474 Poznań, ul. Gruszkowa 4 tel.061/8350-620, -800 fax. 061/8350704 e-mail: wobit@wobit.com.pl Instrukcja
PC 3 PC^ TIMER IN RESET PC5 TIMER OUT. c 3. L 5 c.* Cl* 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 LTJ CO H 17 AD7 U C-"
PC 3 PC^ TIMER IN RESET PC5 TIMER OUT 10/H CE RO WR ALE ADO AD1 AD2 AD3 AD4 A05 A06 AD7 U ss c 3 L 5 c.* Cl* S 9 10 11 12 13 U 15 H 17 Cu C-" ln LTJ CO 2.12. Wielofunkcyjne układy współpracujące z mikroprocesorem
Język FBD w systemie Concept
Adresowanie obiektów Bit - stan pojedynczego sygnału - wejście lub wyjście dyskretne, bit pamięci Bajt - 8 bitów - wartość od -128 do +127 Słowo - 16 bitów - wartość od -32768 do 32767 -wejście lub wyjście
Przerwania, polling, timery - wykład 9
SWB - Przerwania, polling, timery - wykład 9 asz 1 Przerwania, polling, timery - wykład 9 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Przerwania, polling, timery - wykład 9 asz 2 Metody obsługi zdarzeń
Programowany układ czasowy APSC
Programowany układ czasowy APSC Ośmiobitowy układ czasowy pracujący w trzech trybach. Wybór trybu realizowany jest przez wartość ładowaną do wewnętrznego rejestru zwanego słowem sterującym. Rejestr ten
START: ; start programu od adresu 0100H ; zerowanie komórek od 01H do 07FH ( 1 dec dec)
Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01 PRACA KROKOWA MIKROKONTROLERA Cel ćwiczenia: Zapoznanie się ze środowiskiem programowym: poznanie funkcji asemblera, poznanie funkcji symulatora. Operacje na plikach,
Sprzęt i architektura komputerów
Radosław Maciaszczyk Mirosław Łazoryszczak Sprzęt i architektura komputerów Laboratorium Temat: Mikroprocesory i elementy asemblera Katedra Architektury Komputerów i Telekomunikacji 1. MIKROPROCESORY I
Instrukcja do oprogramowania ENAP DEC-1
Instrukcja do oprogramowania ENAP DEC-1 Do urządzenia DEC-1 dołączone jest oprogramowanie umożliwiające konfigurację urządzenia, rejestrację zdarzeń oraz wizualizację pracy urządzenia oraz poszczególnych
TRD-MINI COMBO. Uniwersalny moduł czytnika transponderów UNIQUE - wersja OEM. Podstawowe cechy :
TRD-MINI COMBO Uniwersalny moduł czytnika transponderów UNIQUE - wersja OEM Podstawowe cechy : niewielkie rozmiary - 19 x 26 x 12 mm zasilanie od 3V do 6V 12 formatów danych wyjściowych tryb IDLE wyjście
Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów
Operacje na stosie Stos jest obszarem pamięci o dostępie LIFO (Last Input First Output). Adresowany jest niejawnie przez rejestr segmentowy SS oraz wskaźnik wierzchołka stosu SP. Używany jest do przechowywania
Opis Ogólny OPIS OGÓLNY LICZNIKA AL154LI01.
1. OPIS OGÓLNY LICZNIKA AL154LI01. 8 Przyrząd umożliwia pomiar, wyświetlenie na wyświetlaczu oraz przesłanie na komputer wartości ośmiu niezależnych liczników impulsów. Zerowanie oraz włączenie (uruchomienie)
CECHY URZĄDZENIA: Podłączenie wyświetlacza
CECHY URZĄDZENIA: Napięcie zasilania: 230 VAC; Średni pobór prądu (gdy wyświetlany jest tekst) 0,25A; Maksymalny pobór prądu 0,45 A; Matryca LED o wymiarach 32 x 128 punktów, zbudowana z czerwonych diod
Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski
Układ wykonawczy, instrukcje i adresowanie Dariusz Chaberski System mikroprocesorowy mikroprocesor C A D A D pamięć programu C BIOS dekoder adresów A C 1 C 2 C 3 A D pamięć danych C pamięć operacyjna karta
Ćwiczenie 01 - Strona nr 1 ĆWICZENIE 01
ĆWICZENIE 01 Ćwiczenie 01 - Strona nr 1 Polecenie: Bez użycia narzędzi elektronicznych oraz informatycznych, wykonaj konwersje liczb z jednego systemu liczbowego (BIN, OCT, DEC, HEX) do drugiego systemu
Gdzie przyjęto, że: IR7...IR4 to starsze bity przesyłanej danej lub rozkazu, IR3...IR0 to młodsze bity przesyłanej danej lub rozkazu.
Temat: Obsługa wyświetlacza LCD systemie STRC51. Ćwiczenie 5. (sd) 1.Wyświetlacz LCD. 1.1.Zasada pracy wyświetlaczy LCD i kody sterujące. Standardem na rynku wyświetlaczy LCD alfanumerycznych, są moduły
Programowanie mikrokontrolerów - laboratorium
Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu Instytut Techniczny Programowanie mikrokontrolerów- laboratorium Nazwisko i imię 1. 2. Data wykonania ćwiczenia: Grupa: Ocena sprawozdania Zaliczenie: Symbol:
Diagnostyka pamięci RAM
Diagnostyka pamięci RAM 1 (Pobrane z slow7.pl) Uszkodzenie pamięci RAM jest jednym z najczęściej występujących problemów związanych z niestabilnym działaniem komputera. Efektem uszkodzenia kości RAM są
Programowanie mikrokontrolera 8051
Programowanie mikrokontrolera 8051 Podane poniżej informacje mogą pomóc w nauce programowania mikrokontrolerów z rodziny 8051. Opisane są tu pewne specyficzne cechy tych procesorów a także podane przykłady