|
Wyjście Spis treści Wstecz Dalej
Autor artykułu |
©2026 mgr Jerzy Wałaszek
|

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s
permission is not required when using copyrighted material in:
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
|
Uwaga: Bity IRP i IRP1 (STATUS<7:6>) są zarezerwowane i zawsze powinny
być utrzymywane w stanie 0.
|
Plik rejestrów (ang. register file) jest zorganizowany w mikrokontrolerach PIC12F629/675 jako 64 komórki 8-bitowe. Dostęp do każdego z tych rejestrów jest bezpośredni lub pośredni przy pomocy Rejestru Wyboru z Pliku – FSR (ang. File Select Register) (Zobacz do podrozdziału “Adresowanie Pośrednie, Rejestry INDF i FSR”).
Rejestry funkcji specjalnych są używane przez mikroprocesor oraz funkcje peryferyjne do sterowania wybranymi operacjami mikrokontrolera (zobacz na tablicę 2-1). Rejestry te są statyczną pamięcią RAM.
Rejestry specjalne można sklasyfikować jako dwa zbiory: rdzeń oraz peryferia. Rejestry funkcji specjalnych związane z "rdzeniem" są opisane w tym rozdziale. Rejestry związane z pracą peryferiów są opisane w rozdziałach dotyczących tych peryferiów.
Rys. 2-2: Mapa pamięci danych dla PIC12F629/675

| Adres | Nazwa | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Po POR, BOD |
| Bank 0 | ||||||||||
| 00h | INDF(1) | Zaadresowanie tej komórki powoduje użycie zawartości FSR do zaadresowania pamięci danych | 0000 0000 | |||||||
| 01h | TMR0 | Rejestr modułu timera 0 | xxxx xxxx | |||||||
| 02h | PCL | Mniej znaczący bajt licznika programu (PC) | 0000 0000 | |||||||
| 03h | STATUS | IRP(2) | RP1(2) | RP0 | TO | PD | Z | DC | C | 0001 1xxx |
| 04h | FSR | Wskaźnik pośredniego adresu pamięci danych | xxxx xxxx | |||||||
| 05h | GPIO | — | — | GPIO5 | GPIO4 | GPIO3 | GPIO2 | GPIO1 | GPIO0 | --xx xxxx |
| 06h | — | Niezaimplementowane | — | |||||||
| 07h | — | Niezaimplementowane | — | |||||||
| 08h | — | Niezaimplementowane | — | |||||||
| 09h | — | Niezaimplementowane | — | |||||||
| 0Ah | PCLATH | — | — | — | Bufor zapisu dla 5 górnych bitów PC | ---0 0000 | ||||
| 0Bh | INTCON | GIE | PEIE | T0IE | INTE | GPIE | T0IF | INTF | GPIF | 0000 0000 |
| 0Ch | PIR1 | EEIF | ADIF | — | — | CMIF | — | — | TMR1IF | 00-- 0--0 |
| 0Dh | — | Niezaimplementowane | — | |||||||
| 0Eh | TMR1L | Rejestr przechowujący dolny bajt 16-bitowego Timera 1 | xxxx xxxx | |||||||
| 0Fh | TMR1H | Rejestr przechowujący górny bajt 16-bitowego Timera 1 | xxxx xxxx | |||||||
| 10h | T1CON | — | TMR1GE | T1CKPS1 | T1CKPS0 | T1OSCEN | T1SYNC | TMR1CS | TMR1ON | -000 0000 |
| 11h | — | Niezaimplementowane | — | |||||||
| 12h | — | Niezaimplementowane | — | |||||||
| 13h | — | Niezaimplementowane | — | |||||||
| 14h | — | Niezaimplementowane | — | |||||||
| 15h | — | Niezaimplementowane | — | |||||||
| 16h | — | Niezaimplementowane | — | |||||||
| 17h | — | Niezaimplementowane | — | |||||||
| 18h | — | Niezaimplementowane | — | |||||||
| 19h | CMCON | — | COUT | — | CINV | CIS | CM2 | CM1 | CM0 | -0-0 0000 |
| 1Ah | — | Niezaimplementowane | — | |||||||
| 1Bh | — | Niezaimplementowane | — | |||||||
| 1Ch | — | Niezaimplementowane | — | |||||||
| 1Dh | — | Niezaimplementowane | — | |||||||
| 1Eh | ADRESH(3) | Górne 8 bitów przesuniętego w lewo wyniku z przetwornika A/C lub 2 bity przesuniętego w prawo wyniku | xxxx xxxx | |||||||
| 1Fh | ADCON0(3) | ADFM | VCFG | — | — | CHS1 | CHS0 | GO/DONE | ADON | 00-- 0000 |
| Adres | Nazwa | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Po POR, BOD |
| Bank 1 | ||||||||||
| 80h | INDF(1) | Zaadresowanie tej komórki powoduje użycie zawartości FSR do zaadresowania pamięci danych | 0000 0000 | |||||||
| 81h | OPTION_REG | GPPU | INTEDG | T0CS | T0SE | PSA | PS2 | PS1 | PS0 | 1111 1111 |
| 82h | PCL | Dolny bajt licznika programu (ang. Program Counter, PC) | 0000 0000 | |||||||
| 83h | STATUS | IRP(2) | RP1(2) | RP0 | TO | PD | Z | DC | C | 0001 1xxx |
| 84h | FSR | Pośredni wskaźnik adresu pamięci danych | xxxx xxxx | |||||||
| 85h | TRISIO | — | — | TRISIO5 | TRISIO4 | TRISIO3 | TRISIO2 | TRISIO1 | TRISIO0 | --11 1111 |
| 86h | — | Niezaimplementowane | — | |||||||
| 87h | — | Niezaimplementowane | — | |||||||
| 88h | — | Niezaimplementowane | — | |||||||
| 89h | — | Niezaimplementowane | — | |||||||
| 8Ah | PCLATH | — | — | — | Bufor zapisu dla 5 górnych bitów PC | ---0 0000 | ||||
| 0Bh | INTCON | GIE | PEIE | T0IE | INTE | GPIE | T0IF | INTF | GPIF | 0000 0000 |
| 8Ch | PIE1 | EEIE | ADIE | — | — | CMIE | — | — | TMR1IE | 00-- 0--0 |
| 8Dh | — | Niezaimplementowane | — | |||||||
| 8Eh | PCON | — | — | — | — | — | — | POR | BOD | ---- --0x |
| 8Fh | — | Niezaimplementowane | — | |||||||
| 90h | OSCCAL | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | — | — | 1000 00-- |
| 91h | — | Niezaimplementowane | — | |||||||
| 92h | — | Niezaimplementowane | — | |||||||
| 93h | — | Niezaimplementowane | — | |||||||
| 94h | — | Niezaimplementowane | — | |||||||
| 95h | WPU | — | — | WPU5 | WPU4 | — | WPU2 | WPU1 | WPU0 | --11 -111 |
| 96h | IOC | — | — | IOC5 | IOC4 | IOC3 | IOC2 | IOC1 | IOC0 | --00 0000 |
| 97h | — | Niezaimplementowane | — | |||||||
| 98h | — | Niezaimplementowane | — | |||||||
| 9Ah | EEDATA | Rejestr adresu danych pamięci EEPROM | 0000 0000 | |||||||
| 9Bh | EEADR | — | Rejestr adresu danych pamięci EEPROM | -000 0000 | ||||||
| 9Ch | EECON1 | — | — | — | — | WRERR | WREN | WR | RD | ---- x000 |
| 9Dh | EECON2(1) | Rejestr sterujący 2 EEPROM | ---- ---- | |||||||
| 9Eh | ADRESL(3) | 2 dolne bity przesuniętego w lewo wyniku z przetwornika A/C lub 8 bitów wyniku przesuniętego w prawo | xxxx xxxx | |||||||
| 9Fh | ANSEL(3) | — | ADCS2 | ADCS1 | ADCS0 | ANS3 | ANS2 | ANS1 | ANS0 | -000 1111 |
Rejestr STATUS zawiera:
Rejestr STATUS może być celem dowolnej instrukcji, jak każdy inny rejestr. Jeśli jest on celem instrukcji modyfikującej znaczniki Z, DC lub C, to zapis do tych trzech bitów jest zablokowany. Bity te są ustawiane lub zerowane zgodnie z logiką mikrokontrolera. Co więcej bity TO i PD nie są zapisywalne. Z tego powodu wynik instrukcji adresującej docelowo rejestr STATUS może nie być zgodny z przewidywaniem.
Na przykład instrukcja CLRF STATUS wyzeruje trzy górne bity i ustawi bit Z. Pozostawi rejestr STATUS w stanie 000u u1uu (gdzie u = unchanged – bez zmiany). Dlatego do zmiany zawartości rejestru STATUS zaleca się stosować tylko instrukcje BCF, BSF, SWAPF i MOVWF, ponieważ nie modyfikują one żadnego bitu rejestru STATUS. Aby uzyskać informację o innych instrukcjach nie wpływających na żaden bit w rejestrze STATUS, zobacz do rozdziału "Podsumowanie listy rozkazów".
| Uwagi | 1: | Bity IRP i RP1 (STATUS[7:6]) nie są używane w mikrokontrolerze PIC12F629/675 i powinny być wyzerowane. Używania tych bitów nie zaleca się, ponieważ może to wpłynąć na kompatybilność z przyszłymi wersjami mikrokontrolera. |
| 2: | Bity C i DC działają jako odpowiednio bity wyjściowe pożyczki i pożyczki od cyfry w odejmowaniu (ang. Borrow i Digit Borrow). Zobacz na instrukcje SUBLW i SUBWF. |
| Zarezerw. | Zarezerw. | R/W-0 | R-1 | R-1 | R/W-x | R/W-x | R/W-x |
| IRP | RP1 | RP0 | TO | PD | Z | DC | C |
| b7 | b6 ... b1 | b0 | |||||
| Legenda | |||
| R = bit odczytywalny | W = bit zapisywalny | U = bit niezaimplentowany, daje odczyt '0' | |
| -n = wartość przy POR | ‘1’ = bit ustawiony | ‘0’ = bit wyzerowany | x = bit o nieznanym stanie |
| bit 7 | IRP: Ten bit jest zarezerwowany i powinien być utrzymywany w stanie ‘0’ | |
| bit 6 | RP1: Ten bit jest zarezerwowany i powinien być utrzymywany w stanie ‘0’ | |
| bit 5 | RP0: bit wyboru banku pamięci
(używany przy adresowaniu bezpośrednim) 0 = Bank 0 (00h - 7Fh) 1 = Bank 1 (80h - FFh) |
|
| bit 4 |
TO:
bit Time-out (przekroczenie czasu) 1 = po uruchomieniu, po instrukcjach CLRWDT i SLEEP 0 = wystąpił time-out WDT |
|
| bit 3 |
PD:
bit Power-down (wyłączenie zasilania) 1 = po power-up (włączenie zasilania) lub po instrukcji CLRWDT 0 = po wykonaniu instrukcji SLEEP |
|
| bit 2 | Z: bit zera 1 = Wynikiem operacji arytmetycznej lub logicznej jest zero 0 = Wynik operacji arytmetycznej lub logicznej jest różny od zera |
|
| bit 1 | DC: bit przeniesienia/pożyczki cyfry
(instrukcje ADDWF,
ADDLW, SUBLW,
SUBWF) Dla pożyczki polaryzacja jest odwrócona. 1 = wystąpiło przeniesienie poza 4-ty najmłodszy bit wyniku 0 = brak przeniesienia poza 4-ty najmłodszy bit wyniku |
|
| bit 0 | C: bit przeniesienia/pożyczki
(instrukcje ADDWF,
ADDLW, SUBLW,
SUBWF) 1 = wystąpiło przeniesienie poza najstarszy bit wyniku 0 = brak przeniesienia poza najstarszy bit wyniku |
| Uwaga | Przy pożyczce polaryzacja jest odwrócona. Odejmowanie wykonywane jest przez dodanie uzupełnienia do 2 drugiego argumentu. W instrukcjach obrotu (RRF, RLF) bit ten jest ładowany albo najmłodszym, albo najstarszym bitem rejestru źródłowego. |
Rejestr OPTION_REG jest rejestrem do zapisu i odczytu i zawiera różne bity sterujące do konfiguracji:
|
Uwaga: aby uzyskać ustawienie preskalera 1:1 dla
timera TMR0, przydziel preskaler do timera WDT przez
ustawienie na 1 bitu PSA (OPTION[3]).
Zobacz do podrozdziału "Preskaler".
|
| R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 |
| GPPU | INTEDG | T0CS | T0SE | PSA | PS2 | PS1 | PS0 |
| b7 | b6 ... b1 | b0 | |||||
| Legenda | |||
| R = bit odczytywalny | W = bit zapisywalny | U = bit niezaimplentowany, daje odczyt '0' | |
| -n = wartość przy POR | ‘1’ = bit ustawiony | ‘0’ = bit wyzerowany | x = bit o nieznanym stanie |
| bit 7 |
GPPU:
bit włączający oporniki podciągające w GPIO 1 = oporniki podciągające wyłączone w porcie GPIO 0 = oporniki włączone przez indywidualne wartości zatrzasków portu GPIO |
|||||||
| bit 6 | INTEDG: bit wyboru zbocza przerwania 1 = przerwanie przy narastającym zboczu na końcówce GP2/INT 0 = przerwanie przy opadającym zboczu na końcówce GP2/INT |
|||||||
| bit 5 | T0CS: bit wyboru źródła zegarowego timera
TMR0 1 = zmiana poziomu logicznego na końcówce GP2/T0CKI 0 = wewnętrzny zegar cyklu rozkazowego (CLKOUT) |
|||||||
| bit 4 | T0SE: bit wyboru zbocza źródła timera TMR0 1 = zwiększenie stanu TMR0 przy przejściu ze stanu wysokiego w niski na końcówce GP2/T0CKI 0 = zwiększenie stanu TMR0 przy przejściu ze stanu niskiego w wysoki na końcówce GP2/T0CKI |
|||||||
| bit 3 | PSA: bit przypisania preskalera 1 = preskaler przypisany do timera licznika zegarowego WDT 0 = preskaler przypisany do modułu TIMER0 |
|||||||
| bity 2-0 | PS2:PS0: bity wyboru podziału preskalera
|
Rejestr INTCON (ang. INTerrupt CONtrol) jest rejestrem do odczytu i zapisu, który zawiera różne bity włączające i znacznikowe dla przepełnienia rejestru TNR0, zmiany w porcie GPIO i przerwań zewnętrznych na końcówce GP2/INT.
|
Uwaga: bity znaczników przerwań są ustawiane przy
wystąpieniu przerwania, bez względu na stan odpowiednich
bitów uaktywniających lub bitu globalnego uaktywniania GIE
(INTCON[7]). Oprogramowanie
użytkownika powinno się, upewnić, że odpowiednie bity
znaczników przerwania zostały wyzerowane przed uaktywnieniem
przerwania.
|
| 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 | PEIE | T0IE | INTE | GPIE | T0IF | INTF | GPIF |
| b7 | b6 ... b1 | b0 | |||||
| Legenda | |||
| R = bit odczytywalny | W = bit zapisywalny | U = bit niezaimplentowany, daje odczyt '0' | |
| -n = wartość przy POR | ‘1’ = bit ustawiony | ‘0’ = bit wyzerowany | x = bit o nieznanym stanie |
| bit 7 | GIE: bit globalnego uaktywniania przerwań 1 = włącza wszystkie przerwania niemaskowane 0 = wyłącza wszystkie przerwania |
|
| bit 6 | PEIE: bit włączania przerwań peryferyjnych
(od modułów peryferyjnych) 1 = włącza wszystkie niemaskowane przerwania peryferyjne 0 = wyłącza wszystkie przerwania peryferyjne |
|
| bit 5 | T0IE: bit włączania przerwania przy
przepełnieniu TMR0 1 = włącza przerwanie TMR0 0 = wyłącza przerwanie TMR0 |
|
| bit 4 | INTE: bit włączania przerwania zewnętrznego z końcówki GP2/INT | |
| 1 = włącza przerwanie zewnętrzne z GP2/INT 0 = wyłącza przerwanie zewnętrzne z GP2/INT |
||
| bit 3 | GPIE: bit włączania przerwania przy zmianie
stanu portu(1) 1 = włącza przerwanie przy zmianie stanu portu GPIO 0 = wyłącza przerwanie przy zmianie stanu portu GPIO |
|
| bit 2 | T0IF: bit znacznika przerwania przy
przepełnieniu TMR0(2) 1 = rejestr TMR0 przepełnił się (musi być wyczyszczone programowo) 0 = rejestr TMR0 nie przepełnił się |
|
| bit 1 | INTF: bit znacznika przerwania zewnętrznego
z końcówki GP2/INT 1 = wystąpiło przerwanie zewnętrzne GP2/INT (musi być wyczyszczone programowo) 0 = przerwanie zewnętrzne GP2/INT nie wystąpiło |
|
| bit 0 | GPIF: bit znacznika przerwania przy zmianie
stanu portu 1 = co najmniej jedna zmiana stanu na końcówkach GP5:GP0 (musi być wyczyszczone programowo) 0 = żadna z końcówek GP5:GP0 nie miała zmiany stanu. |
Rejestr PIE1 (ang. Periferal Interrupt Enable register 1) zawiera bity uaktywniające przerwania peryferyjne (od modułów peryferyjnych mikrokontrolera).
|
Uwaga: Bit PEIE (INTCON[6]) musi
zostać ustawiony na 1, aby włączyć przerwania peryferyjne.
|
| R/W-0 | R/W-0 | U-0 | U-0 | R/W-0 | U-0 | U-0 | R/W-0 |
| EEIE | ADIE | — | — | CMIE | — | — | TMR1IE |
| b7 | b6 ... b1 | b0 | |||||
| Legenda | |||
| R = bit odczytywalny | W = bit zapisywalny | U = bit niezaimplentowany, daje odczyt '0' | |
| -n = wartość przy POR | ‘1’ = bit ustawiony | ‘0’ = bit wyzerowany | x = bit o nieznanym stanie |
| bit 7 | EEIE: bit włączający przerwanie przy zakończeniu
zapisu do EEPROM 1 = włącza to przerwanie 0 = wyłącza to przerwanie |
|
| bit 6 | ADIE: bit włączania przerwania od przetwornika A/C
(tylko PIC12F675) 1 = włącza to przerwanie 0 = wyłącza to przerwanie |
|
| bity 5-4 | Niezaimplementowane, dają odczyt '0' | |
| bit 3 | CMIE: bit włączający przerwanie z komparatora 1 = włącza to przerwanie 0 = wyłącza to przerwanie |
|
| bity 2-1 | Niezaimplementowane, dają odczyt '0' | |
| bit 0 | TMR1IE: bit włączający przerwanie przy
przepełnieniu timera TMR1 1 = włącza to przerwanie 0 = wyłącza to przerwanie |
Rejestr PIR1 (ang. Periferal Interrupt Register 1) zawiera bity bity znacznikowe przerwań peryferyjnych (od modułów peryferyjnych mikrokontrolera).
|
Uwaga: Bity znacznikowe przerwań są ustawiane, gdy
wystąpi warunek przerwania, bez względu na stan odpowiadających
im bitów uaktywniających przerwania w rejestrze
PIE1 lub stan globalnego bitu włączania przerwań GIE
(INTCON[7]).
Oprogramowanie użytkownika powinno upewnić się, iż odpowiedni
bit znacznikowy jest wyzerowany przed uaktywnieniem danego
przerwania.
|
| R/W-0 | R/W-0 | U-0 | U-0 | R/W-0 | U-0 | U-0 | R/W-0 |
| EEIF | ADIF | — | — | CMIF | — | — | TMR1IF |
| b7 | b6 ... b1 | b0 | |||||
| Legenda | |||
| R = bit odczytywalny | W = bit zapisywalny | U = bit niezaimplentowany, daje odczyt '0' | |
| -n = wartość przy POR | ‘1’ = bit ustawiony | ‘0’ = bit wyzerowany | x = bit o nieznanym stanie |
| bit 7 | EEIF: bit znacznikowy przerwania z operacji zapisu
do EEPROM 1 = operacja zapisu zakończona (musi być zerowane przez oprogramowanie) 0 = operacja zapisu nie jest zakończona lub nie zaczęła się jeszcze |
|
| bit 6 | ADIF: bit znacznikowy przerwania z przetwornika A/C
(tylko PIC12F675) 1 = konwersja w przetworniku A/C zakończona (musi być zerowane przez oprogramowanie) 0 = konwersja w przetworniku A/C nie jest zakończona |
|
| bity 5-4 | Niezaimplementowane, dają odczyt '0' | |
| bit 3 | CMIF: bit znacznikowy przerwania z komparatora 1 = wejście komparatora zmieniło się (musi być zerowane przez oprogramowanie) 0 = wejście komparatora nie zmieniło się |
|
| bity 2-1 | Niezaimplementowane, dają odczyt '0' | |
| bit 0 | TMR1IF: bit znacznikowy przerwania przy
przepełnieniu TMR1 1 = rejestr TMR1 przepełnił się (musi być zerowane przez oprogramowanie) 0 = rejestr TMR1 nie przepełnił się |
Rejestr sterowania zasilaniem (ang. Power CONtrol, PCON) zawiera bity znacznikowe pozwalające rozróżnić pomiędzy:
| U-0 | U-0 | U-0 | U-0 | U-0 | U-0 | R/W-0 | R/W-x |
| — | — | — | — | — | — | POR | BOD |
| b7 | b6 ... b1 | b0 | |||||
| Legenda | |||
| R = bit odczytywalny | W = bit zapisywalny | U = bit niezaimplentowany, daje odczyt '0' | |
| -n = wartość przy POR | ‘1’ = bit ustawiony | ‘0’ = bit wyzerowany | x = bit o nieznanym stanie |
| bity 7-2 | Niezaimplementowane, dają odczyt '0' | |
| bit 1 | POR:
bit stanu resetu przy włączeniu zasilania 1 = nie było tego resetu 0 = reset ten wystąpił (należy ustawić programowo na '1' po tym resecie) |
|
| bit 0 | BOD: bit stanu wykrycia spadku zasilania 1 = spadek napięcia zasilającego nie wystąpił 0 = wystąpił spadek napięcia (należy ustawić programowo na '1' po tym zdarzeniu) |
Rejestr kalibracyjny oscylatora (ang. OSCillator CALibration register, OSCCAL) używany jest do regulacji częstotliwości pracy wewnętrznego oscylatora 4 MHz. Zawiera 6 bitów do ustawiania częstotliwości w górę lub w dół, aby uzyskać 4 MHz.
| R/W-1 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 | U-0 | U-0 |
| CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | — | — |
| b7 | b6 ... b1 | b0 | |||||
| Legenda | |||
| R = bit odczytywalny | W = bit zapisywalny | U = bit niezaimplentowany, daje odczyt '0' | |
| -n = wartość przy POR | ‘1’ = bit ustawiony | ‘0’ = bit wyzerowany | x = bit o nieznanym stanie |
| bity 7-2 | 6-bitowa wartość ze znakiem do kalibracji
oscylatora 111111 = maksymalna częstotliwość 100000 = środkowa częstotliwość 000000 = minimalna częstotliwość |
|
| bity 1-0 | Niezaimplementowane, dają odczyt '0' |
Rys.2-3 Ładowanie rejestru PC w różnych sytuacjach

Wyliczane GOTO jest wykonywane przez dodanie przesunięcia do PC (ADDWF PCL). Przy wykonywaniu odczytu tablicy za pomocą metody wyliczanego GOTO, należy podjąć odpowiednie środki ostrożności, jeśli komórka tablicy wychodzi poza granicę PCL (każdy 256-bajtowy blok).
Rodzina mikrokontrolerów PIC12F629/675 posiada 8-poziomowy stos zapamiętujący słowa 13-bitowe (zobacz na rys.2-1). Przestrzeń stosu jest rozdzielona od przestrzeni pamięciowej programu i danych, a wskaźnik stosu nie jest rejestrem odczytywalnym ani zapisywalnym. Licznik programu PC jest umieszczany na stosie przy wykonywaniu instrukcji CALL lub przy wystąpieniu przerwania powodującego skok. Dane ze stosu są pobierane w przypadku wykonania instrukcji RETURN, RETLW lub RETFIE. Zawartość rejestru PCLATH nie jest zmieniana podczas zapisu lub odczytu stosu.
Stos pracuje jako zapętlony bufor. Oznacza to, iż po ośmiokrotnym zapisie na stos dziewiąty zapis nadpisze wartość zapisaną jako pierwsza. Dziesiąty zapis nadpisze wartość zapisaną jako druga, itd.
| Uwaga | Nie ma bitów stanu oznaczających przepełnienie (próba zapisu ponad osiem razy) lub niedopełnienie (próba odczytu większą liczbę razy niż zostało zapisane) stosu. |

MOVLW 0x20 ;inicjuj wskaźnik
MOVWF FSR ;do RAM
NEXT CLRF INDF ;zeruj element w RAM
INCF FSR ;zwiększ wskaźnik
BTFSS FSR,4 ;koniec?
GOTO NEXT ;nie, zeruj następny element
CONTINUE ;tak, kontynuuj
|
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2026 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.