Mikrokontrolery PIC Wykład 2 2/51 Rodzina PIC MID Range PIC - MidRange - Architektura PIC16C84 charakteryzuje się następującymi cechami:  architektura Harvard RISC;  8-bitowe ALU;  1024x14

Download Report

Transcript Mikrokontrolery PIC Wykład 2 2/51 Rodzina PIC MID Range PIC - MidRange - Architektura PIC16C84 charakteryzuje się następującymi cechami:  architektura Harvard RISC;  8-bitowe ALU;  1024x14

Mikrokontrolery PIC
Wykład 2
2/51
Rodzina PIC MID Range
PIC - MidRange - Architektura
PIC16C84 charakteryzuje się następującymi cechami:
 architektura Harvard RISC;
 8-bitowe ALU;
 1024x14 EEPROM programu;
 15 rejestrów specjalnych;
 36B SRAM+64B EEPROM (żywotność 106 cykli) danych;
 35 rozkazów o kodzie 14-bitowym, wykonywane w 1 cyklu
(wyjątek: rozkazy skoku i wywołania);
 8-poziomowy stos sprzętowy;
3/51
PIC - MidRange - Architektura
4/51
Cechy c.d.:
 proste (bezpośredni, pośredni i względny) tryby adresowania danych
i rozkazów;
 4 źródła przerwań;
 13 linii we/wy o obciążalności 20/25mA;
 8-bitowy timer/licznik z 8-bitowym programowalnym preskalerem;
interfejs SPI do programowania w trybie ISP;
 wbudowany układ resetu od zasilania, z timerem resetu;
 watchdog z wbudowanym własnym oscylatorem RC;
PIC - MidRange - Architektura
Cechy c.d.:
 tryb oszczędzania energii SLEEP;
 częstotliwość taktowania 0-10MHz (czas cyklu: 400ns - );
 wbudowany oscylator RC z programowalną kalibracją;
 możliwość wyboru rodzaju generatora taktu
(wewn/zewn, RC/kwarc/prostokąt);
 bity ochronne programu;
 szeroki zakres napięć pracy: 2,0 - 6,0 V.
5/51
PIC - MidRange - Architektura
Struktura blokowa układu PIC16C84
6/51
PIC - MidRange - Architektura
Organizacja pamięci programu
PC - 13-bitowy, jego młodszy bajt jest widoczny jako PCL
Przestrzeń adresowa pamięci programu Mid Range:
000..1FFFh (8k×14b słów).
Przy pamięci programu o pojemności P<8kW, PC adresuje ją modulo P.
Podzielona na 4 strony po 2kW.
7/51
PIC - MidRange - Architektura
8/51
Organizacja pamięci programu - c.d.
13
12
0
PC
13
0
adres restartu
dostępna
w 16C84
przestrzeń
0000h
adres obsł. przerwań 0004h
strona 0
03FFh
0400h
07FFh
0800h
strona 1
0FFFh
1000h
strona 2
17FFh
1800h
strona 3
1FFFh
dostępna
w Mid-range
przestrzeń
PIC - MidRange - Architektura
9/51
Organizacja pamięci programu - c.d.
Komórki o adresach 2000h..200Fh to tzw. pamięć konfiguracyjna:
2000h, 2001h, 2002h i 2003h są przeznaczone na numer identyfikacyjny układu (bity
3..0).
2007h - rejestr konfiguracyjny CONFIG
2000h
2001h
2002h
2003h
2007h
ID
ID
ID
ID
CONFIG
PIC - MidRange - Architektura
10/51
Organizacja pamięci programu - c.d.
Rejestr konfiguracyjny CONFIG:
13
12
11
10
9
8
7
6
5
4
3
2
1
0
CP PWRTE WDTE FOSC1 FOSC0
CP -
bit ochronny kodu programu: gdy =1 - ochrona wył., =0 - ochrona włącz.
PWRTE - bit włączający power-up timer: gdy =1 - włącz., =0 - wył.
WDTE - bit włączający watch-dog: gdy =1 watch-dog włączony, =0 - wyłączony
FOSC1, FOSC0 - bity wybierające źródło sygnału taktującego:
00 - LP zewn. oscylator kwarcowy o f=32-400kHz;
01 - XT zewn. oscylator kwarcowy o f=0,4-4MHz;
10 - HS wewn. oscylator RC ok. 4MHz albo zewn. oscylator kwarcowy 4-10MHz;
11 - RC zewn. oscylator RC o f do 4MHz
PIC - MidRange - Architektura
11/38
Modyfikacja i odtwarzanie PC
1. Przez rozkaz zapisujący rejestr PCL 1B wartością
12
8
7
PCL
0
PC:
bajt z ALU
PCLATCH:
Dowolny rozkaz arytmetyczno-logiczny lub przesłania,
dla którego wskazano PCL jako rejestr docelowy
PIC - MidRange - Architektura
12/38
Modyfikacja i odtwarzanie PC
2. Przez rozkaz wywołania procedury CALL
sprzętowy stos 8 x 13b
adres
szczyt
powrotu
stosu
szczyt stosu
12
8
7
PCL
0
PC:
11b z kodu
rozkazu CALL
PCLATCH:
PIC - MidRange - Architektura
13/38
Modyfikacja i odtwarzanie PC
3. Przez rozkaz skoku GOTO
12
10
PCL
0
PC:
11b z kodu
rozkazu GOTO
PCLATCH:
PIC - MidRange - Architektura
14/38
Modyfikacja i odtwarzanie PC
4. Przez rozkazy powrotu z procedury RETURN, RETLW, RETFIE
sprzętowy stos 8 x 13b
szczyt stosu
12
PC:
PCLATCH:
8
7
PCL
0
PIC - MidRange - stos
15/51
Stos:
• sprzętowy;
• 8-poziomowy (8 13-bitowych rejestrów);
• wskaźnik stosu nie jest dostępny;
• działa jak rejestr cyrkulacyjny
- 9-ty zapis na stos spowoduje zamazanie pierwszego wpisu;
sprzętowy stos 8 x 13b
szczyt stosu
PIC - MidRange - Architektura
16/51
Organizacja pamięci danych
FSR:
7 6
STATUS:
0
7 6
IRP
kod rozkazu:
0
RP1,RP0
00
01
00h
80h
30h
0B0h
7Fh
bank #0
0FFh
bank #1
10
100h
17Fh
bank #2
11
180h
1FFh
bank #3
obszar
niedostępny
w 16C84
PIC - MidRange - Architektura
17/51
16C84
Organizacja pamięci danych
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
0Bh
0Ch
- blok rejestrów np. 16C84
2Fh
30h
INDF1)
TMR0
PCL
STATUS
FSR
PORTA
PORTB
INDF1)
OPTION
PCL
STATUS
FSR
TRISA
TRISB
EEDATA
EEADR
PCLATCH
INTCON
36 rejestrów
ogólnego
przeznaczenia
(bajty SRAM)
EECON1
EECON21)
PCLATCH
INTCON
obszar
mapowany
w bank #0
7Fh
1)
bank #0
bank #1
rejestr nie istniejący fizycznie
80h
81h
82h
83h
84h
85h
86h
87h
88h
89h
8Ah
8Bh
8Ch
0AFh
0B0h
0FFh
PIC - MidRange - blok rejestrów specjalnych
rejestr
b7
b6
b5
b4
b3
18/51
b2
b1
b0
adres
INDF
wirtualny rejestr do odwołań do RAM
00h
TMR0
stan 8-bitowego timera/licznika
01h
PCLOW
02h
PCL
STATUS
IRP
RP1
-
-
-
RA4/T0CKI
PORTB RB7 RB6 RB5
-
-
EEDATA
EEADR
PCLATCH
INTCON
/T0
/PD
Z
DC
C
rejestr adresujący pamięć RAM
FSR
PORTA
RP0
GIE
-
RB3
-
-
-
04h
RA3 RA2 RA1
RB4
RB2 RB1
-
03h
-
RA0 05h
RB0/INT
06h
-
07h
rejestr danych EEPROM
08h
rejestr adresujący EEPROM
09h
-
bufor zapisu starszych bitów PC12..8 0Ah
EEIE T0IE INTIE RBIE T0IF INTF RBIF 0Bh
szare pola - bity nie używane;
- - niezaimplementowany przy odczycie 0
PIC - MidRange - blok rejestrów specjalnych
rejestr
b7
b6
b5
b4
19/51
b3
OPTION /RBPU INTEDG T0CS T0SE PSA
PCL
IRP
RP1
-
INTCON
PS1
PS0 81h
RP0
/T0
82h
/PD
Z
DC
C
-
-
rejestr sterujący portem PORTA
-
-
-
-
-
-
-
-
EEIF
WRERR
-
GIE
-
-
85h
86h
-
WREN WR
-
87h
RD 88h
dodatkowy "wirtualny" rejestr kontrolny EEPROM
-
83h
84h
rejestr sterujący portem PORTB
EECON2
PCLATCH
PS2
adres
80h
rejestr adresujący pamięć RAM
TRISB
EECON1
b0
PCLOW
FSR
TRISA
b1
wirtualny rejestr do odwołań do RAM
INDF
STATUS
b2
89h
bufor zapisu starszych bitów PC12..8 8Ah
EEIE T0IE INTE RBIE T0IF INTF RBIF 8Bh
szare pola - bity nie używane;
- - niezaimplementowany przy odczycie 0
PIC - MidRange - blok rejestrów specjalnych
STATUS:
IRP
RP1
RP0
/TO
20/51
/PD
Z
DC
C
C - flaga przeniesienia/pożyczki
DC - flaga przeniesienia połówkowego
Z - flaga sygnalizująca zerowy wynik operacji
/PD - flaga sygnalizująca przejście w stan uśpienia:
0 - po rozkazie SLEEP
1 - po resecie od zasilania lub wykonaniu rozkazu CLRWDT
/TO - flaga przepełnienia licznika watch-doga:
0 - po resecie od zasilania, po wykonaniu rozkazów CLRWDT lub SLEEP
1 - gdy przepełnił się licznik watch-doga
RP1,RP0 - bity wyboru aktywnego banku rejestrów przy adresowaniu bezpośr.:
00 - bank #0 (00..7Fh),
01 - bank #1 (80h..0FFh),
10 - bank #2 (100h..17Fh), 11 - bank #3 (180h..1FFh)
IRP - bit wyboru banku rejestrów przy adresowaniu pośrednim:
0 - bank #0 i #1 (00..0FFh);
1 - bank #2 i #3 (100h..1FFh).
IRP i RP1 są nieużywane w PIC16C84
PIC - MidRange - blok rejestrów specjalnych
rej. OPTION
7
6
5
4
3
/RBPU INTEDG T0CS
T0SE
PSA
21/51
2
PS2
1
PS1
0
PS0
/RBPU - bit włączający gdy =0 oporniki podciągające na liniach portu PORTB
INTEDG - bit wyboru aktywnego zbocza przerwania INT 0-opadające/1-narastające
T0CS - bit wyboru źródła sygnału dla licznika TMR0:
1 - zliczanie impulsów zewn. podanych na pin T0CKI
0 - zliczanie cykli maszynowych
T0SE - bit wyboru zbocza na pinie T0CKI:
1 - zliczanie zboczy opadających;
0 - zliczanie zboczy narastających
PSA - bit przypisanie preskalera:
1 - do licznika watch-doga
0 - do licznika TMR0
PS2,PS1,PS0 - bity wyboru podzielnika:
dla TMR0:
dla WDT:
000 1:2
100 1:32
000 1:1
100 1:16
001 1:4
101 1:64
001 1:2
101 1:32
010 1:8
110 1:128
010 1:4
110 1:64
011 1:16
111 1:256
011 1:8
111 1:128
PIC - MidRange - tryby adresowania
22/51
Tryb adresowania operandów - bitów
• bezpośredni
kod rozkazu
bcf
bit
10,3
Tryby adresowania operandów - bajtów
• natychmiastowy
kod rozkazu
andlw
130
operand
blok
rejestrów
f
PIC - MidRange - tryby adresowania
23/51
Tryby adresowania operandów - bajtów - cd.
• rejestrowy
kod rozkazu
rejestry/SRAM
f
/bezpośredni
7b
RP1 RP0
addwf
10
2b
wybór banku
9b
Rf:
operand
PIC - MidRange - tryby adresowania
24/51
Tryby adresowania operandów - bajtów - cd.
rejestry/SRAM
• rejestrowy
pośredni
f*
kod rozkazu
f*=00h,80h
clrf
FSR:
INDF
IRP
2b
wybór banku
7b
9b
operand
PIC - MidRange
Generator taktu
25/51
PIC - MidRange
Przetwarzanie rozkazów
Q1 - dekodowanie rozkazu, inkrement PC
Q2 - pobranie argumentów
Q3 - wykonanie rozkazu
Q4 - zapamiętanie wyniku i koniec pobierania nast. rozkazu
26/51
PIC - MidRange
27/51
Przetwarzanie rozkazów - cd.
1. MOVLW
55h
2. MOVWF
PORTB
3. CALL
PROC1
4. BSF
PORTA,BIT3
............
x. PROC1: ...
pobranie 1 wykonanie 1
pobranie 2 wykonanie 2
pobranie 3 wykonanie 3
pobranie 4 odrzucenie 4
pobranie x wykonanie x
PIC - MidRange
28/51
Obwód resetu
PIC - MidRange
Obwód resetu - działanie układu BOR (Brown Out Reset)
29/51
PIC - MidRange
30/51
Stan rejestrów specjalnych po resecie, zależnie od przyczyny:
reset zewn.;
podczas
WDT reset
SLEEP:
rejestr
power-on
podczas pracy przerwanie;
WDT time-out
W
xxxxxxxx
uuuuuuuu
uuuuuuuu
INDF
--------
--------
--------
TMR0
xxxxxxxx
uuuuuuuu
uuuuuuuu
PCL
00000000
00000000
PC+1
STATUS
00011xxx
000qquuu
uuuqquuu
FSR
xxxxxxxx
uuuuuuuu
uuuuuuuu
PORTA
---xxxxx
---uuuuu
---uuuuu
PORTB
xxxxxxxx
uuuuuuuu
uuuuuuuu
- - niezaimplementowany, przy odczycie 0;
x - wartość nieokreślona;
u - wartość niezmieniona;
q - wartość zależna od przyczyny resetu;
PIC - MidRange
31/51
Stan rejestrów specjalnych po resecie, zależnie od przyczyny:
reset zewn.;
podczas
WDT reset
SLEEP:
rejestr
power-on
podczas pracy przerwanie;
WDT time-out
EEDATA
xxxxxxxx
uuuuuuuu
uuuuuuuu
EEADR
xxxxxxxx
uuuuuuuu
uuuuuuuu
PCLATCH
---00000
---00000
---uuuuu
INTCON
0000000x
0000000u
uuuuuuuu
OPTION
11111111
11111111
uuuuuuuu
TRISA
---11111
---11111
---uuuuu
TRISB
11111111
11111111
uuuuuuuu
EECON1
---0x000
---0q000
---0uuuu
EECON2
--------
--------
--------
- - niezaimplementowany, przy odczycie 0;
x - wartość nieokreślona;
u - wartość niezmieniona;
q - wartość zależna od przyczyny resetu;
PIC - MidRange
32/51
Praca z obniżonym poborem prądu
• tryb włącza się rozkazem SLEEP;
• główny oscylator wyłącza się
• następuje wstrzymanie wykonywanie programu
• linie portu pozostają b.z.
• zerowany jest licznik WDT i jego postskaler
• zużycie prądu spada do ok. 1μA
• bity: /PD=0, /TO=1
Wyjście z trybu power down może być wywołane:
• zewnętrzny reset na /MCLR - restart programu od 0000
• reset od WDT time-out
- wznowienie programu od nast. rozkazu
• niezamaskowanym przerwaniem - j.w. i wejście w obsługę przerwania
PIC - MidRange - przerwania
System przerwań PIC16C84:
• 4 źródła przerwań:
zewnętrzne RB0/INT
od przepełnienia TMR0
od zmiany stanu wejść PORTB7..4
od końca zapisu do EEPROM
• wspólny wektor obsługi - od adresu 004h;
• maskowalny - indywidualne flagi maskowania + flaga globalna GIE;
• zablokowany po RESET;
• powrót z procedury obsługi rozkazem RETFIE, ustawiającym także GIE=1;
• przerwania mogą „budzić” mikrokontroler z trybu SLEEP;
• przerwania mają swe flagi sygnalizacyjne.
33/51
PIC - MidRange - przerwania
34/51
Rejestr kontrolny przerwań PIC16C84:
GIE
EEIE
T0IE INTE RBIE T0IF
INTF RBIF
GIE - globalna flaga zezwolenia na przerwania;
EEIE - zezwolenie na przerwanie od EEPROM;
T0IE - zezwolenie na przerwanie od TMR0;
INTE - zezwolenie na przerwanie zewnętrzne;
RBIE - zezwolenie na przerwanie od zmiany PORTB;
T0IF - flaga przerwania od TMR0;
INTF - flaga przerwania zewnętrznego;
RBIF - flaga przerwania od PORTB;
EEIF - flaga przerwania od EEPROM, umieszczona na 4 bicie EECON1.
PIC - MidRange - przerwania
35/51
Struktura procedury obsługi przerwania:
1. Przechowanie rejestrów W, STATUS, PCLATCH (i innych) w zarezerwowanych
rejestrach banku #0.
2. Rozpoznanie przyczyny przerwania
(z powodu wspólnego wektora dla 4 możliwych źródeł).
3. Obsłużenie wybranego przerwania.
4. Skasowanie jego indywidualnej flagi zgłoszenia przerwania
(np. rozkazem BCF).
5. Odtworzenie stanu rejestrów (innych), PCLATCH, STATUS, W
z zarezerwowanych rejestrów w banku #0.
6. Powrót z procedury obsługi przerwania rozkazem RETFIE
(odblokowującym ponownie system przerwań).
PIC - MidRange - przerwania
36/51
Struktura procedury obsługi przerwania:
Przykład przechowania stanu rejestrów na początku procedury obsługi przerwania:
MOVWF temp_W
MOVF
STATUS,W
MOVWF temp_STATUS
MOVF
PCLATCH,W
MOVWF temp_PCLATCH
Przykład odtworzenia stanu rejestrów
MOVF
temp_PCLATCH,W
MOVWF PCLATCH
MOVF
temp_STATUS,W
MOVWF STATUS
MOVF
temp_W,W
PIC - MidRange - peryferia
Port A
• port ma 5 linii:
RA0..RA3 - zwykłe we/wy;
RA4 - we/wy albo
wejście impulsów dla TMR0;
• rejestr TRISA decyduje o kierunku
(ustawione bity TRIS oznaczają
wejście 3-stanowe);
• linie RA0..RA3 mają diody
zabezpieczające dołączone do masy
i zasilania
37/51
PIC - MidRange - peryferia
Port A
• linia RA4 ma diodę zabezpieczającą
dołączoną tylko do masy
38/51
PIC - MidRange - peryferia
Port B
• port ma 8 linii:
RB0 - we/wy albo
wejście przerwania zewn. /INT0
RB1..RB3 - zwykłe we/wy;
RB4..RB7 - zwykłe we/wy
z możliwością przerwania
od zmiany stany
• rejestr TRISB decyduje o kierunku
(ustawione bity TRISB włączają
opornik podciągający)
39/51
PIC - MidRange - peryferia
Port B
• linie RB6 i RB7 są wykorzystywane
przy szeregowym programowaniu
układu
40/51
PIC - MidRange - peryferia
Timer
• 8-bitowy licznik z preskalerem/postskalerem wspólnym z watchdogiem;
• zlicza cykle masz. (fOSC/4) albo zewn. impulsy wejściowe (na T0CKI);
• jego przepełnienie powoduje ustawienie flagi T0IF;
• widoczny jako rejestr TMR0;
• sterowanie pracą - poprzez bity rej. OPTION.
41/51
PIC - MidRange - peryferia
Watchdog
• bazuje na własnym oscylatorze RC;
• przepełnia się po 18ms (ale zależy to od temp. i nap.zasil.:7-33ms);
• by uzyskać dłuższe czasy należy użyć postskalera;
• przy normalnej pracy WDT Time-out powoduje RESET,
a przy pracy w uśpieniu - obudzenie μC;
• watchdog zeruje się rozkazem CLRWDT albo SLEEP;
• watchdog można zablokować tylko w fazie programowania układu.
42/51
PIC - MidRange - peryferia
Watchdog
43/51
PIC - MidRange - peryferia
Wykorzystanie preskalera/postskalera przez timer i watchdog
wsp. podziału preskalera: 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/516 - dla TMR0
postskalera 1/1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 - dla WDT
44/51
PIC - MidRange - peryferia
Pamięć EEPROM
• dostępna poprzez rejestry EEDATA i EEADR;
• dodatkowo rejestry sterujące EECON1 i EECON2 (wirtualny);
• zapis polega na przeprogramowaniu pojedynczego bajtu;
• czas zapisu do 10ms/B, kontrolowany przez lokalny timer
i zależny od temperatury i napięcia pracy;
• koniec zapisu powoduje ustawienie flagi EEIF,
która może być zgłoszeniem przerwania;
45/51
PIC - MidRange - peryferia
46/51
Odczyt EEPROM
1. Wpisanie adresu do EEADR.
2. Ustawienie bitu RD w EECON1.
3. Odczyt zawartości rejestru EEDATA.
Przykład programu:
BCF
STATUS,RP0
; Bank 0
MOVLW
CONFIG_ADDR
;
MOVWF
EEADR
; adres EEPROM do odczytu
BSF
STATUS,RP0
; Bank 1
BSF
EECON1,RD
; odczyt komorki EEPROM
BCF
STATUS,RP0
; Bank 0
MOVF
EEDATA,W
; W = EEDATA
PIC - MidRange - peryferia
Zapis do EEPROM
1. Wpisanie adresu do EEADR.
2. Wpisanie danej do EEDATA.
3. Zablokowanie przerwań INTCON.GIE=0.
4. Odblokowanie wpisu do EEPROM EECON.WREN=1.
5. Zapis do EECON2 kolejno: 55h i 0AAh.
6. Włączenie zapisu do EEPROM EECON1.WR=1.
7. Odblokowanie przerwań INTCON.GIE=1.
Przykład programu:
BSF
BCF
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BSF
STATUS,RP0
INTCON,GIE
EECON1,WREN
55h
EECON2
AAh
EECON2
EECON1,WR
INTCON, GIE
; wybór banku #1
; wyłączenie przerwań
; odblokowanie zapisu
; wpisanie 55h
; wpisanie AAh
; start zapisu
; odblokowanie INTs.
47/51
PIC - MidRange - lista rozkazów
mnemonik arg.
zmiany ilość
flag
c.m.
kod rozkazu
48/51
opis
ADDLW k
C,DC,Z
1 11111xkkkkkkkk W := W + k
ADDWF f,d
C,DC,Z
1 000111dfffffff d := W + F
SUBLW k
C,DC,Z
1 11110xkkkkkkkk W := k-W
SUBWF f,d
C,DC,Z
1 000010dfffffff d := F-W
INCF
f,d
Z
1 001010dfffffff d := F+1
DECF
f,d
Z
1 000011dfffffff d := F-1
INCFSZ f,d
-
1/2 001111dfffffff d := F+1, jeśli wynik=0 to pomiń
następny rozkaz
DECFSZ f,d
-
1/2 001011dfffffff d := F-1, jeśli wynik=0 to pomiń
następny rozkaz
rozszerzenie względem BaseLine
kkkkkkkk - dana 1-bajtowa
fffffff - adres w banku rejestrów/pamięci wskazujący na F
d - bit wskazujący lokalizację wyniku: d=0 - wynik do W, d=1 wynik do F
s - adres skoku, wywołania procedury
x - wartość dowolna (0/1)
PIC - MidRange - lista rozkazów
mnemonik arg.
zmiany ilość
flag c.m.
kod rozkazu
49/51
opis
ANDLW k
Z
1 111001kkkkkkkk W := W  k
ANDWF f,d
Z
1 000101dfffffff d := W  F
IORLW
k
Z
1 11011xkkkkkkkk W := W  k
IORWF
f,d
Z
1 000100dfffffff d := W  F
XORLW k
Z
1 11111xkkkkkkkk W := W  k
XORWF f,d
Z
1 000110dfffffff d := W  F
COMF
f,d
Z
1 001001dfffffff d := ~F (negacja logiczna)
RLF
f,d
C
1 001101dfffffff d := SHL(F)
RRF
f,d
C
1 001100dfffffff d := SHR(F)
SWAPF f,d
-
1 001110dfffffff d := F3..0F7..4 (zamiana tetrad miejscami)
PIC - MidRange - lista rozkazów
mnemonik arg.
zmiany ilość
flag c.m.
kod rozkazu
50/51
opis
CLRF
f
Z
1
0000011fffffff F := 0
CLRW
-
Z
1
00000100000011 W := 0
BCF
f,b
-
1
0100bbbfffffff bit F.b := 0
BSF
f,b
-
1
0101bbbfffffff bit F.b := 1
BTFSC
f,b
-
1/2 0110bbbfffffff jeśli F.b=0 to pomiń następny
rozkaz
BTFSS
f,b
-
1/2 0111bbbfffffff jeśli F.b=1 to pomiń następny
rozkaz
MOVF
f,d
-
1
001000dfffffff d := F
MOVLW k
-
1
000001kkkkkkkk W := k
MOVWF f
-
1
0001001fffffff F := W
PIC - MidRange - lista rozkazów
mnemonik arg.
zmiany ilość
flag
c.m.
kod rozkazu
51/51
opis
GOTO
s
-
2 101sssssssssss skok bezwarunkowy pod adres s
CALL
s
-
2 100sssssssssss wywołanie procedury od adresu s
na bieżącej stronie pamięci
programu
RETFIE -
-
2 00000000001001 powrót z przerwania, GIE := 1
RETLW k
-
2 1101xxkkkkkkkk powrót z procedury ze stałą k w W
RETURN -
-
2 00000000001000 powrót z procedury
NOP
-
1 00000000000000 nic nie rób
-
CLRWDT-
TO, PD
1 00000001100100 zeruj licznik WDT
SLEEP
TO,PD
1 00000001100011 przejdź w stan uśpienia
-
OPTION -
-
1 00000001100010 OPTION_REG := W
TRIS
-
1 00000000001fff TRISx := W, f=5 (TRISA),
6 (TRISB), 7 (TRISC)
f