PIC16F84
SFR (Special Function Register)

INDF
Register INDF digunakan untuk membaca data yang tersimpan pada register lain yang ditunjuk oleh register FSR. Register INDF menempati dua lokasi, yaitu 0x00 (bank 0) dan 0x80 (bank 1). Register ini dapat dibaca dibaca dan ditulisi.
TMR0
Register TMR0 menyimpan hasil cacahan pencacah TMR0, dapat dibaca dan ditulisi dan alamatnya adalah 0x01. Karena pencacah TMR0 hanya memiliki lebar 8 bit maka nilai register TMR0 berkisar dari 0x00 hingga 0xff.
PCL
Register PCL menyimpan 8 bit terbawah Counter Program. Register PCL beralamat di 0x02 (bank 0) dan 0x82 (bank 1). Register PCL bernilai 0x00 setelah reset atu setelah catu daya dinyalakan.
STATUS
Register status menyimpan kondisi flag dan indikator pengendali. Register status beralamat di 0x03 (bank 0) dan 0x83 (bank 1). Setelah reset atau catu daya dinyalakan, nilai register STATUS berkisar antara 0x18 and 0x1f, hal tersebut terjadi karena bit flag tidak dapat ditentukan secara pasti setelah proses reset.
| BIT | bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| NAMA | IRP | RP1 | RP0 | TO | PD | Z | DC | C |
| JENIS | R/W | R/W | R/W | R | R | R/W | R/W | R/W |
| DEFAULT | 0 | 0 | 0 | 1 | 1 | x | x | x |
FSR
register FSR digunakan untuk menunjuk register lain yang akan dialamati secara tidak langsung. Register FSR dapat dibaca dan ditulisi. Register FSR menempati alamat 0x04 dan 0x84. Misalnya, jika FSR berisi 0x10 maka INDF akan berisi nilai dari register yang beralamat di 0x10. Register ini menempati alamat 0x04.
PORTA
register PORTA merupakan buffer PORTA, baik untuk penulisan maupun pembacaan. Setelah reset atau setelah catu daya dinyalakan, nilai PORTA tidak dapat ditentukan secara pasti. Register ini menempati alamat 0x05.
PORTB
register PORTB merupakan buffer PORTB, baik untuk penulisan maupun pembacaan. Setelah reset atau setelah catu daya dinyalakan, nilai PORTB tidak dapat ditentukan secara pasti.Register ini menempati alamat 0x06.
EEDATA
Register EEDATA digunakan sebagai buffer membaca dan menulis ke EEPROM, karena pembacaan dan penulisan EEPROM dilakukan secara tidak langsung.
EEADR
register EEADR digunakan untuk menunjuk alamat EEPROm yang akan dibaca atau ditulisi. EEADR dapat dibaca dan ditulisi.
PCLATH
Register PCLATH digunakan untuk menuliskan 5 bit teratas Program COunter. Registr ini hanya dapat ditulisi saja.
INTCON
Register INTCOn digunakan untuk mengendalikan interupsi terhadap mikrokontroler, baik flag interupsi, aktivasi interupsi secara individual maupun aktivasi interupsi secara global.
OPTION_REG
OPTION_REG digunakan untuk menyimpan pengagaturan perangkat mikronkontroler PIC16F84 secara umum.
TRISA
TRISA digunakan untuk mengendalikan arah PORTA secara individual, apakah itu sebagai masukan atau keluaran. Jika suatu bit a REGISTER TRISA bernilai 1 maka bit a PORTA akan bertindak sebagai input, begitu pula sebaliknay jika bit tersebut bernilai 0, maka bit yang bersangkutan akan bertindak sebagai keluaran. Defaultnya, setelah reset semua bit TRISA bernilai 1 atau PORTA defaultnya adalah masukan.
TRISB
TRISB bekerja mirip dengan TRISA, hanya saja port yang dikendalikan yaitu PORTB.
EECON1
EECON1 dan EECON2 digunakan dalam proses penulisan EEPROM.