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 programu...2 Przykładowy program...2 Ćwiczenie 2 Tryb oszczędzania energii mikrokontrolerów PIC...4 Wykorzystywany sprzęt...4 Cel ćwiczenia...4 Szczegółowe zagadnienia...4 Zadania...4 Potrzebne informacje...4 Uwagi do realizacji programu...5 Ćwiczenie 3 Zaawansowane cechy mikrokontrolerów rodziny PIC...6 Wykorzystywany sprzęt...6 Cel ćwiczenia...6 Szczegółowe zagadnienia...6 Zadania...6 Potrzebne informacje...7 Załącznik A Układ laboratoryjny PIC10F202...8 Schemat ideowy...8 Rysunek układu...9 Opis układu...9 Załącznik B Plik nagłówkowy P10F202.INC definicje nazw...10 Załącznik C Zestaw instrukcji mikrokontrolera PIC10FXXX...13
Ćwiczenie 1 Podstawowe właściwości mikrokontrolera rodziny PIC Wykorzystywany sprzęt Układ laboratoryjny PIC10F202 Układ programatora Kabel szeregowy RS232 Komputer z oprogramowaniem Cel ćwiczenia Poznanie budowy i podstawowych właściwości mikrokontrolerów PIC Szczegółowe zagadnienia Podstawowe instrukcje mikrokontrolera Pętle, instrukcje warunkowe Czas wykonania instrukcji Zwłoki czasowe Porty we-wy Zadania Napisać program zapalający i gaszący w wybranej sekwencji diody LED, podłączone do trzech portów mikrokontrolera Każda dioda powinna świecić przez inny czas Do określenia odstępów czasu należy wykorzystać pętle opóźniające, instrukcje dekrementacji i skoku warunkowego oraz rejestry ogólnego przeznaczenia (GPR) jako liczniki Skompilować program Zaprogramować układ testowy PIC10F202 UWAGA: Przed podłączeniem programatora do układu odłączyć baterię!!! Sprawdzić, czy program działa zgodnie z założeniami Potrzebne informacje Opis układu laboratoryjnego PIC10F202 załącznik A Definicje nazw rejestrów plik nagłówkowy P10F202.INC załącznik B Zestaw instrukcji mikrokontrolera PIC10F202 załącznik C
Ćwiczenie 1 Podstawowe właściwości mikrokontrolera rodziny PIC Karta katalogowa mikrokontrolera PIC10F202 Microchip Data Sheet DS41239C Organizacja i adresy rejestrów mikrokontrolera rozdz. 4.3, str. 16 Rejestr STATUS rozdz. 4.4, str. 19 Rejestr OPTION rozdz. 4.5, str. 20 Porty we/wy rozdz. 5.0, str. 25-26 Stan po włączeniu zasilania lub resecie MCLR rozdz. 9.3, str. 42 Szczegółowy opis instrukcji mikrokontrolera rozdz. 10.0, str. 51-58 Uwagi do realizacji programu Na początku pliku źródłowego należy włączyć plik z definicjami rejestrów P10F202.INC, za pomocą dyrektywy INCLUDE Następnie, na początku programu, należy ustawić porty we/wy w odpowiedni stan (wy) za pomocą instrukcji TRIS UWAGA: Kolejność przyporządkowania funkcji dla portów we/wy podana jest w tab. 5-1, str. 25 karty katalogowej. Należy odłączyć wejście timera z portu GP2 poprzez rejestr OPTION. Dopiero po odpowiednim zainicjowaniu procesora następuje właściwa, nieskończona pętla programu Przykładowy program UWAGA: Poniższy program działa, lecz specjalnie napisany jest bardzo niestarannie i zasługuje na ocenę bliską niedostatecznej! LIST P=10F202 INCLUDE p10f202.inc CNT0 EQU 08H CNT1 EQU 09H ORG MOVLW OPTION MOVLW MOVWF MOVLW 0000H 11011111B 11111000B GPIO 11111000B 2
Ćwiczenie 1 Podstawowe właściwości mikrokontrolera rodziny PIC LOOP WAIT TRIS CALL CALL CALL MOVLW MOVWF CALL MOVLW MOVWF CALL MOVLW MOVWF CALL GOTO CLRF CLRF GPIO WAIT WAIT WAIT 11111110B GPIO WAIT 11111101B GPIO WAIT 11111011B GPIO WAIT LOOP CNT0 CNT1 WAIT1 NOP 1 us NOP 1 us DECFSZ CNT1 1 us GOTO WAIT1 2 us Razem 5 us x 256 DECFSZ GOTO CNT0 WAIT1 RETLW 0 END Uwaga: Niepodanie przeznaczenia w instrukcji jest równoznaczne z domyślnym skierowaniem wyniku do rejestru. Instrukcja MOVWF GPIO jest równoznaczna instrukcji MOVWF GPIO, F (F=1, W=0). 3
Ćwiczenie 2 Tryb oszczędzania energii mikrokontrolerów PIC Wykorzystywany sprzęt Układ laboratoryjny PIC10F202 Układ programatora Kabel szeregowy RS232 Komputer z oprogramowaniem Cel ćwiczenia Zapoznanie się z trybem oszczędzania energii oraz bardziej zaawansowanymi możliwościami mikrokontrolerów PIC Szczegółowe zagadnienia Instrukcja SLEEP wyłączenie mikrokontrolera Watchdog Preskaler Kontynuacja programu po restarcie Zadania Napisać program zapalający i gaszący w wybranej sekwencji diody LED, podłączone do trzech portów mikrokontrolera Procesor przez większość czasu musi pozostawać w stanie Sleep, jako licznik czasu wykorzystując watchdoga wraz z preskalerem Po wciśnięciu klawisza Reset lub włączeniu zasilania powinny zapalić się na krótki czas wszystkie trzy diody, następnie program ma generować niekończącą się sekwencję błysków Skompilować program Zaprogramować układ testowy PIC10F202 UWAGA: Przed podłączeniem programatora do układu odłączyć baterię!!! Sprawdzić, czy program działa zgodnie z założeniami Potrzebne informacje Opis układu laboratoryjnego PIC10F202 załącznik A Definicje nazw rejestrów plik nagłówkowy P10F202.INC załącznik B Zestaw instrukcji mikrokontrolera PIC10F202 załącznik C
Ćwiczenie 2 Tryb oszczędzania energii mikrokontrolerów PIC Karta katalogowa mikrokontrolera PIC10F202 Microchip Data Sheet DS41239C Organizacja i adresy rejestrów mikrokontrolera rozdz. 4.3, str. 16 Rejestr STATUS rozdz. 4.4, str. 19 Rejestr OPTION rozdz. 4.5, str. 20 Porty we/wy rozdz. 5.0, str. 25-26 Stan po włączeniu zasilania lub resecie MCLR rozdz. 9.3, str. 42 Watchdog Timer rozdz. 9.6, str. 46-47 Prescaler rozdz. 6.2, str. 31-32 Bit 4 NOT_TO Time-out rejestru STATUS określa czy restart nastąpił z powodu zwykłego resetu, czy watchdoga na skutek upływu określonego czasu bezczynności Uwagi do realizacji programu Na początku pliku źródłowego należy włączyć plik z definicjami rejestrów P10F202.INC, za pomocą dyrektywy INCLUDE Następnie, na początku programu, należy ustawić porty we/wy w odpowiedni stan (wy) za pomocą instrukcji TRIS UWAGA: Kolejność przyporządkowania funkcji dla portów we/wy podana jest w tab. 5-1, str. 25 karty katalogowej. Należy odłączyć wejście timera z portu GP2 poprzez rejestr OPTION. Następnie należy sprawdzić przyczynę resetu (testując bit TO rejestru STATUS) i w zależności od niej wykonać odpowiednie instrukcje UWAGA: Instrukcja SLEEP zatrzymuje wykonanie programu. Wyjście z niej następuje jedynie przez reset lub upływ czasu ustawionego dla watchdoga. Program wykonuje się potem od początku Po zapaleniu lub zgaszeniu odpowiednich diod należy ustawić dzielnik preskalera i wykonać na końcu instrukcję SLEEP UWAGA: Rejestry ogólnego przeznaczenia zachowują swoją zawartość po resecie (lecz nie po wyłączeniu zasilania) patrz tab. 9-1, str. 42 5
Ćwiczenie 3 Zaawansowane możliwości mikrokontrolerów PIC Wykorzystywany sprzęt Układ laboratoryjny PIC10F202 Układ programatora Kabel szeregowy RS232 Komputer z oprogramowaniem Cel ćwiczenia Zapoznanie się z zaawansowanymi możliwościami mikrokontrolerów PIC, reakcja na zdarzenia zewnętrzne Szczegółowe zagadnienia Instrukcja SLEEP wyłączenie mikrokontrolera Watchdog Preskaler Reakcja na zdarzenie Wake-up from Sleep on pin change Powrót do pracy po restarcie, w zależności od przyczyny Zadania Napisać program zapalający i gaszący w wybranych sekwencjach diody LED, podłączone do trzech portów mikrokontrolera Procesor przez większość czasu musi pozostawać w stanie Sleep, jako licznik czasu wykorzystując watchdoga i preskaler Po włączeniu zasilania (Power-on Reset) procesor ma generować niekończącą się sekwencję błysków diod Po wciśnięciu klawisza Reset (MCLR Reset) procesor ma wygenerować jedną, inną sekwencję błysków i oczekiwać w stanie Sleep na wciśnięcie klawisza GP0 lub GP1 W zależności od uprzednio wciśniętego klawisza (GP0 lub GP1) procesor ma generować różne, niekończące się sekwencje błysków i reagować jedynie na klawisz Reset (MCLR Reset) lub wyłączenie zasilania (Power-on Reset) Skompilować program Zaprogramować układ testowy PIC10F202 UWAGA: Przed podłączeniem programatora do układu odłączyć baterię!!!
Ćwiczenie 3 Zaawansowane możliwości mikrokontrolerów PIC Sprawdzić, czy program działa zgodnie z założeniami Potrzebne informacje Opis układu laboratoryjnego PIC10F202 załącznik A Definicje nazw rejestrów plik nagłówkowy P10F202.INC załącznik B Zestaw instrukcji mikrokontrolera PIC10F202 załącznik C Karta katalogowa mikrokontrolera PIC10F202 Microchip Data Sheet DS41239C Specjalne cechy mikrokontrolera rozdz. 9.0, str 41 Słowo konfiguracji rozdz. 9.1, str. 41 Reset rozdz. 9.3, str. 42-43 Rejestr STATUS rozdz. 4.4, str. 19 Rejestr OPTION rozdz. 4.5, str. 20 Watchdog Timer rozdz. 9.6, str. 46-47 Prescaler rozdz. 6.2, str. 31-32 Wake-up from Sleep rozdz. 9.7, str 48 7
Załącznik A Układ laboratoryjny PIC10F202 Schemat ideowy
Załącznik A Układ laboratoryjny PIC10F202 Rysunek układu Opis układu Układ laboratoryjny został wykonany w postaci trójkątnej płytki drukowanej. W centralnej części znajduje się mikrokontroler PIC10F202 w 6-nóżkowej obudowie SMD. W trzech rogach płytki znajdują się diody świecące podłączone do trzech portów mikrokontrolera: GP0, 1 i 2. Sygnał niski na wyjściu procesora zapala odpowiednią diodę. Dodatkowo, do portów GP0 i GP1 podłączone są czarne mikroprzełączniki zwierające port do masy. Centralny, czerwony mikroprzełącznik podłączony jest do wejścia reset (MCLR). Przy podstawie płytki znajduje się złącze do programowania układu za pomocą dedykowanego programatora, podłączanego do portu RS232 komputera. Zewnętrzna płaszczyzna miedzi oraz metalowe słupki podłączone są do plusa zasilania układu, masę stanowi obszar miedzi w centralnej części, pod przyciskiem reset. Całość zasilana jest z bateri litowej 3V UWAGA: Po zakończeniu pracy i na czas programowania, odłączyć baterię poprzez wsunięcie pod kontakt plastikowej izolacji. 9
Załącznik B Plik nagłówkowy P10F202.INC definicje nazw LIST P10F202.INC Standard Header File, Version 1.01 Microchip Technology, Inc. NOLIST This header file defines configurations, registers, and other useful bits of information for the PIC10F202 microcontroller. These names are taken to match the data sheets as closely as possible. Note that the processor must be selected before this file is included. The processor may be selected the following ways: 1. Command line switch: C:\ MPASM MYFILE.ASM /P10F202 2. LIST directive in the source file LIST P=10F202 3. Processor Type entry in the MPASM full-screen interface ========================================================================== Revision History ========================================================================== Rev: Date: Reason: 1.00 04/14/04 Initial Release 1.01 10/05/05 Add IntRC_OSC comment 1.02 01/13/06 Added GPIO bit descriptions ========================================================================== Verify Processor ========================================================================== IFNDEF 10F202 MESSG "Processor-header file mismatch. Verify selected processor." ENDIF ========================================================================== Register Definitions ========================================================================== W EQU H'0000' F EQU H'0001' ----- Register Files ----------------------------------------------------- INDF EQU H'0000' TMR0 EQU H'0001' PCL EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' OSCCAL EQU H'0005'
Załącznik B Plik nagłówkowy P10F202.INC definicje nazw GPIO EQU H'0006' ----- STATUS Bits -------------------------------------------------------- GPWUF EQU H'0007' NOT_TO EQU H'0004' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' ----- OPTION Bits -------------------------------------------------------- NOT_GPWU EQU H'0007' NOT_GPPU EQU H'0006' T0CS EQU H'0005' T0SE EQU H'0004' PSA EQU H'0003' PS2 EQU H'0002' PS1 EQU H'0001' PS0 EQU H'0000' ----- OSCCAL Bits -------------------------------------------------------- CAL6 EQU H'0007' CAL5 EQU H'0006' CAL4 EQU H'0005' CAL3 EQU H'0004' CAL2 EQU H'0003' CAL1 EQU H'0002' CAL0 EQU H'0001' FOSC4 EQU H'0000' ----- GPIO Bits -------------------------------------------------------- GP0 EQU H'0000' GP1 EQU H'0001' GP2 EQU H'0002' GP3 EQU H'0003' ========================================================================== RAM Definition ========================================================================== MAXRAM H'1F' BADRAM H'07' ========================================================================== Configuration Bits ========================================================================== 11
Załącznik B Plik nagłówkowy P10F202.INC definicje nazw _MCLRE_ON EQU H'0FFF' _MCLRE_OFF EQU H'0FEF' _CP_ON EQU H'0FF7' _CP_OFF EQU H'0FFF' _WDT_ON EQU H'0FFF' _WDT_OFF EQU H'0FFB' _IntRC_OSC EQU H'0FFF'IntRC_OSC is the only option. It is here for backwards compatibility only. LIST 12
Załącznik C Zestaw instrukcji mikrokontrolera PIC10FXXX Mnemonic, Operands Description Cycles 12-Bit Opcode BYTE-ORIENTED FILE REGISTER OPERATIONS MSb LSb Status Affected ADDWF f, d Add W and f 1 0001 11df ffff C, DC, Z ANDWF f, d AND W with f 1 0001 11df ffff Z CLRF f Clear f 1 0000 011f ffff Z CLRW Clear W 1 0000 0100 0000 Z COMF f, d Complement f 1 0010 01df ffff Z DECF f, d Decrement f 1 0000 11df ffff Z DECFSZ f, d Decrement f, skip if 0 1 (2) 0010 11df ffff None INCF f, d Increment f 1 0010 10df ffff Z INCFSZ f, d Increment f, skip if 0 1 (2) 0011 11df ffff None IORWF f, d Inclusive OR W with f 1 0001 00df ffff Z MOVF f, d Move f 1 0010 00df ffff Z MOVWF f Move W to f 1 0000 001f ffff None NOP No Operation 1 0000 0000 0000 None RLF f, d Rotate left f through Carry 1 0011 01df ffff C RRF f, d Rotate right through Carry 1 0011 00df ffff C SUBWF f, d Subtract W from f 1 0000 10df ffff C, DC, Z SWAPF f, d Swap f 1 0011 10df ffff None XORWF f, d Exclusive OR W with f 1 0001 10df ffff Z BIT-ORIENTED FILE REGISTER OPERATIONS BCF f, b Bit Clear f 1 0100 bbbf ffff None BSF f, b Bit Set f 1 0101 bbbf ffff None BTFSC f, b Bit Test f, Skip if Clear 1 (2) 0110 bbbf ffff None BTFSS f, b Bit Test f, Skip if Set 1 (2) 0111 bbbf ffff None LITERAL AND CONTROL OPERATIONS ANDLW k AND literal with W 1 1110 kkkk kkkk Z CALL k Call Subroutine 2 1001 kkkk kkkk None CLRWDT Clear Watchdog Timer 1 0000 0000 0100 TO, PD GOTO k Unconditional branch 2 101k kkkk kkkk None IORLW k Inclusive OR literal with W 1 1101 kkkk kkkk Z MOVLW k Move literal to W 1 1100 kkkk kkkk None OPTION Load OPTION register 1 0000 0000 0010 None RETLW k Return, place literal in W 2 1000 kkkk kkkk None SLEEP Go into Standby mode 1 0000 0000 0011 TO, PD TRIS f Load TRIS register 1 0000 0000 0fff None XORLW k Exclusive OR literal to W 1 1111 kkkk kkkk Z f adres rejestru, b numer bitu, k stała, d=1 wynik w f, d=0 wynik w W
Zestaw instrukcji mikrokontrolera PIC10F202 Składnia Opis Cykli Kod rozkazu Flagi Operacje bajtowe na rejestrach ADDWF f,d (f) + (W) (dest) 1 0001 11df ffff C,DC,Z ANDWF f,d (f).and. (W) (dest) 1 0001 01df ffff Z CLRF f 00H (f) 1 0000 011f ffff Z CLRW 00H (w) 1 0000 0100 0000 Z COMF f,d 0FFH -(f) (dest) 1 0010 01df ffff Z DECF f,d (f) - 1 (dest) 1 0000 11df ffff Z DECFSZ f,d (f) - 1 (dest) omiń gdy 0 1 (2) 0010 11df ffff - INCF f,d (f) + 1 (dest) 1 0010 10df ffff Z INCFSZ f,d (f) + 1 (dest) omiń gdy 0 1 (2) 0011 11df ffff - IORWF f,d (f).or. (W) (dest) 1 0001 00df ffff Z MOVF f,d (f) (dest) 1 0010 00df ffff Z MOVWF f (W) (f) 1 0000 001f ffff Z NOP Nic nie rób 1 0000 0000 0000 - RLF f,d Rotacja w lewo przez C 1 0011 01df ffff C RRF f,d Rotacja w prawo przez C 1 0011 00df ffff C SUBWF f,d (f) - (W) (dest) 1 0000 10df ffff C,DC,Z SWAPF f,d Zamiana (7-4)(3-0) (dest) 1 0011 10df ffff - XORWF f,d (f).xor. (W) (dest) 1 0001 10df ffff Z Operacje bitowe na rejestrach BCF f,b 0 (f<b>) 1 0100 bbbf ffff - BSF f,b 1 (f<b>) 1 0101 bbbf ffff - BTFSC f,b Testuj (f<b>) omiń gdy 0 1(2) 0110 bbbf ffff - BTFSS f,b Testuj (f<b>) omin gdy 1 1(2) 0111 bbbf ffff - Operacje na rejestrach i stałych ANDLW k (W).AND. k (W) 1 1110 kkkk kkkk Z IORLW k (W).OR. k (W) 1 1101 kkkk kkkk Z MOVLW k K (W) 1 1100 kkkk kkkk - XORLW k (W).XOR. k (W) 1 1111 kkkk kkkk Z Operacje sterujące CALL k Wywołanie procedury 2 1001 kkkk kkkk - CLRWDT 0 WDT 1 0000 0000 0100 TO,PD GOTO k Skok bezwarunkowy 2 101k kkkk kkkk - OPTION (W) OPTION 1 0000 0000 0010 - RETLW k (k) (W) Powrót z proc. 2 1000 kkkk kkkk - SLEEP Przejdź w stan uśpienia 1 0000 0000 0011 TO,PD TRIS 6 (W) TRIS GPIO 1 0000 0000 0110 - f adres rejestru b numer bitu k stała d=1 to dest=f d=0 to dest =W