Anda di halaman 1dari 13

3.

Register Mikrokontroler MCS-51


Sebagaimana semua mikrokontroler, MCS-51 memiliki sejumlah register
yang memiliki fungsi khusus (special function register - SFR) dan register
umum (general purpose register). General purpose register yang dapat
diakses adalah 8 byte per bank yaitu register R0-R7, dengan jumlah bank
sebanyak 4. Special Function Register yang terdapat pada mikrokontroler
ini memiliki address 080h-0FFh dengan peta memori seperti pada gambar
3.1. Tempat yang kosong pada peta memori tidak diimplementasikan
dalam chip. Pembacaan data pada tempat kosong ini akan menghasilkan
data acak, sedangkan penulisan data pada tempat-tempat kosong tersebut
tidak akan mengakibatkan perubahan apa-apa. Register yang ditulis dalam
tanda kurung menunjukkan register yang hanya ada pada versi
8032/8052/8752. Semua Register yang terletak pada kolom terkiri adalah
register-register yang dapat dialamati per bit.
F8h
F0h
E8h
E0h
D8h
D0h
C8h
C0h
B8h
B0h
A8h
A0h
98h
90h
88h
80h

B
ACC
PSW
(T2CON)
IE
P3
IP
P2
SCON
P1
TCON
P0

(RCAP2L)

(RCAP2H)

(TL2)

(TH2)

TL0
DPL

TL1
DPH

TH0

TH1

SBUF
TMOD
SP

IP

FFh
F7h
EFh
E7h
DFh
D7H
CFh
C7h
BFh
B7h
AFh
A7h
9Fh
97h
8Fh
87h

Gambar 3.1. Peta memori Special Function Registers


Mikrokontroler MCS51

15

Masing-masing register tersebut dapat dideskripsikan sebagai berikut :


Register ACC (accumulator) :
register ini memiliki alamat
adressable).

0E0h, dapat dialamati per bit (bit

Pada penulisan program assembly, register ini biasa

ditulis dengan kode A.

Register B:
register ini memiliki alamat
adressable).

0F0h, dapat dialamati per bit (bit

Pada penulisan program assembly, register ini biasa

ditulis dengan kode B. Register ini digunakan pada proses perkalian


dan pembagian, dan dapat dipakai pada instruksi lain sebagai register
umum.

Register PSW (Program Status Register) :


register ini memiliki alamat
adressable).

0D0h, dapat dialamati per bit (bit

Pada penulisan program assembly, register ini biasa

ditulis dengan kode PSW.


Bit-bit pada register ini berikut fungsinya dapat dilihat pada tabel di
bawah ini :
CY
(MSB)

AC

Mikrokontroler MCS51

F0

RS1

RS0

OV

P
(LSB)

16

Simbol
CY
AC
F0
RS1
RS0
OV
P

Tabel 3.1. Fungsi bit pada register PSW


Posisi
Nama dan arti
PSW.7 carry flag
auxiliary carry flag, untuk operasi
PSW.6 menggunakan bilangan BCD (binary coded
decimal)
PSW.5 Flag 0, bisa digunakan untuk keperluan
pemakai
PSW.4 Bit 1 pemilih bank register *)
PSW.3 Bit 0 pemilih bank register *)
PSW.2 Overflow flag
PSW.1 flag yang dapat didefinisikan oleh pemakai
Parity flag yang di-set atau di-clear oleh
PSW.0 hardware setiap siklus instruksi untuk
memberikan kode parity terhadap isi register
Accumulator

*) RS1 dan RS0 menentukan pemilihan register bank sebagai berikut :

Tabel 3.2. Pemilihan Bank Register R0-R7


RS1 RS0 Bank Address Register R0-R7
0
0
0
00h - 07h
0
1
1
08h - 0fh
1
0
2
10h - 17h
1
1
3
18h - 1fh
Stack Pointer (SP) :
register yang

memiliki alamat

081h ini nilainya ditambah 1

(increment) sebelum data disimpan dengan perintah PUSH ataupun


CALL. Stack Pointer memiliki nilai 07h setelah proses RESET dan
POWER ON, dengan demikian stack akan berawal dari alamat 080h.
Namun posisi stack bisa berada di mana saja RAM internal.

Mikrokontroler MCS51

18

Data Pointer (DPTR) :


register ini adalah register 16 bit yang terdiri dari dua register 8 bit
yaitu DPL

(address : 082h) dan DPH (address : 083h). DPTR

digunakan untuk menunjuk address memory 16 bit yang akan diakses


misalnya oleh instruksi MOVX A,@DPTR.
PORT 0-3 (P0-P3) :
register-register ini merupakan isi dari latch port eksternal P0,P1,P2
dan P3. Memberikan nilai pada register ini sama artinya dengan
memberikan data output pada pin port yang bersangkutan.
Register SBUF (Serial Data Buffer) :
register ini sebenarnya terdiri dari 2 buah register input dan output.
Membaca register ini sama artinya dengan membaca data yang
diterima melalui pin serial port. Menuliskan nilai pada register ini
akan menghasilkan pengiriman nilai tersebut melalui port serial
keluar.
Register TIMER :
Yaitu register-register 16 bit yang merupakan isi dari timer/counter
0,1, dan 2. Timer/counter 1 memiliki register TH1 dan TL1,
timer/counter 0 registernya TH0 dan TL0, sedangkan timer/counter 2
registernya TH2 dan TL2. Register TH2 dan TL2 hanya terdapat pada
versi 8052.
Register Capture (RCAP2L dan RCAP2H) :
register ini adalah register 16 bit yang digunakan oleh timer/counter 2
pada 8052 untuk melakukan mode capture. yaitu suatu mode dimana

Mikrokontroler MCS51

19

pada saat transisi tegangan logika pada pin T2EX, maka isi register
TH2 dan TL2 akan dipindahkan ke register capture ini.
Register PCON (Power control) :
register ini memiliki alamat

087h, dengan bit-bit kontrol sebagai

berikut :

SMOD
(MSB)

GF1

GF2

PD

IDL
(LSB)

Tabel 3.3. Fungsi bit kontrol pada register PCON


Posisi
Nama dan arti
PCON.7 Double baud rate bit
SMOD =1 baud rate adalah double jika
serial port dijalankan pada mode 1,2, atau 3
GF1
PCON.3 General purpose flag 1 (flag untuk penggunaan umum)
GF2
PCON.2 General purpose flag 2 (flag untuk penggunaan umum)
PD
PCON.1 Mengaktifkan Power Down Mode untuk
80C51BH
IDL
PCON.0 Mengaktifkan Idle Mode untuk 80C51BH

Simbol
SMOD

Keterangan :
penjelasan selengkapnya tentang baud rate, serial port dan mode
kerjanya dapat dilihat pada pembahasan mengenai serial port.
GF1 dan GF2 dapat dipergunakan pemrogram untuk mendefinisikan
sendiri bit flag yang diinginkan.
Power down adalah salah satu fasilitas untuk mematikan operasi
mikrokontroler tanpa menghilangkan isi data pada RAM, yang hanya

Mikrokontroler MCS51

20

tersedia pada MCS-51 dengan versi CHMOS yaitu 80C51BH,


80C31BH atau 87C51. Pada mode ini, setelah flag PCON.1 diset,
maka clock osilator sistem dihentikan sehingga mikrokontroler
berhenti beroperasi, akan tetapi isi RAM dan isi register-register yang
ada tidaklah hilang. Untuk keluar dari mode ini dapat dilakukan
dengan melakukan hardware RESET yang akan menyebabkan
hilangnya isi SFR (special function register) sedangkan isi RAM tetap
seperti semula.
Idle mode juga hanya tersedia pada MCS-51 versi CHMOS. Pada
mode ini, sinyal clock dimatikan hanya pada unit pemroses pusat.
Timer, sistem Interrupt dan Serial Port tetap bekerja sebagaimana
biasa. Dengan tidak bekerjanya unit pemroses pusat, maka arus listrik
yang ditarik oleh mikrokontroler adalah berkurang sehingga
menghemat energi catu daya. Hal ini biasanya dilakukan pada saat
mikrokontroler menunggu adanya sinyal interrupt. Selama proses
tunggu, adalah bijaksana jika unit pemroses pusat dimatikan untuk
penghematan energi.

Untuk keluar dari mode ini ada dua cara, yaitu dengan adanya
pengaktifan sinyal interrupt yang secara otomatis akan membuat bit
idle mode menjadi 0 secara hardware. Setelah interrupt selesai
dilayani

(ditandai

dengan

eksekusi

instruksi

IRET),

maka

mikrokontroler kembali pada idle mode. Cara kedua adalah dengan


hardware RESET.

Mikrokontroler MCS51

21

Register IE (Interrupt Enable) :


Register ini memiliki address 0A8h, digunakan untuk mengatur sistem
interrupt. Penjelasan selengkapnya mengenai sistem interrupt dapat
dilihat

pada

pembahasan

tentang

interrupt

pada

bab

yang

bersangkutan. Bit-bit kontrolnya adalah :

EA
(MSB)

ET2

ES

ET1

EX1

ET0

EX0
(LSB)

Fungsi dari bit-bit kontrol ini dapat dilihat pada tabel 3.4 :

Simbol
EA

ET2
ES
ET1
EX1
ET0
EX0

Tabel 3.4. Fungsi bit kontrol pada register IE


Posisi
Nama dan arti
IE.7
Enable Interrupt
EA = 0 sistem interrupt tidak bekerja
EA =1 mengijinkan pengaktifan tiap sumber
interrupt
IE.5
Dicadangkan untuk penggunaan di masa depan
IE.4
Enable Serial Port interrupt
IE.3
Enable Timer 1 interrupt
IE.2
Enable external pin 1 interrupt
IE.1
Enable timer 0 interrupt
IE.0
Enable external pin 0 interrupt

Register IP (Interrupt Priority) :


Register ini memiliki address 0B8h, digunakan

untuk mengatur

prioritas tertinggi yang dilayani sistem interrupt. Penjelasan


selengkapnya mengenai hal ini dapat dilihat pada pembahasan tentang
interrupt pada bab yang bersangkutan. Bit-bit kontrolnya adalah :

Mikrokontroler MCS51

22

(MSB)

PT2

PS

PT1

PX1

PT0

PX0
(LSB)

Fungsi dari bit-bit kontrol ini dapat dilihat pada tabel 3.5:

Simbol
PT2
PS
PT1
PX1
PT0
PX0

Tabel 3.5. Fungsi bit kontrol pada register IP


Posisi
Nama dan arti
IP.5
Dicadangkan untuk penggunaan di masa
depan
IP.4
Prioritas Tertinggi Pada Serial Port
interrupt
IP.3
Prioritas Tertinggi Pada Timer 1 interrupt
IP.2
Prioritas Tertinggi Pada external pin 1
interrupt
IP.1
Prioritas Tertinggi Pada timer 0 interrupt
IP.0
Prioritas Tertinggi Pada external pin 0
interrupt

Register TCON (Timer/Counter Control) :


Register yang memiliki address 088h berfungsi untuk mengontrol
fungsi Timer 1 dan Timer 0, mengatur respons MCS-51 terhadap
level tegangan pada input external interrupt, serta memberikan tanda
flag jika telah ada sinyal interrupt external. Penjelasan selengkapnya
mengenai hal ini dapat dilihat pada bab yang bersangkutan. Bit-bit
register ini adalah :

TF1
(MSB)

Mikrokontroler MCS51

TR1

TF0

TR0

IE1

IT1

IE0

IT0
(LSB
)

23

Fungsi dari bit-bit register ini dapat dilihat pada tabel 3.6 :

Simbol

TF1

TR1

TF0

TR0
IE1
IT1

IE0

IT0

Tabel 3.6. Fungsi bit-bit pada register TCON


Posisi
Nama dan arti
Timer 1 overflow flag. Bit ini di-set oleh
hardware pada saat terjadi overflow di
timer/counter 1. Bit tersebut akan otomatis
TCON.7 di-clear oleh hardware pada saat
mikrokontroler mengeksekusi program
pelayanan interrupt Timer 1.
TCON.6 Timer 1 run control bit, untuk membuat
ON/OFF Timer/counter 1
Timer 0 overflow flag. Bit ini di-set oleh
hardware pada saat terjadi overflow di
TCON.5 timer/counter 0. Bit tersebut akan otomatis
di-clear oleh hardware pada saat
mikrokontroler mengeksekusi program
pelayanan interrupt Timer 0.
TCON.4 Timer 0 run control bit, untuk membuat
ON/OFF Timer/counter 0
TCON.3 Interrupt Edge 1 =1 menunjukkan adanya
sinyal interrupt pada pin external interrupt 1
TCON.2 Type interrupt 1
IT1 = 1 : falling edge triggered interrupt
IT1 = 0 : low level triggered interrupt
TCON.1 Interrupt Edge 0 =1 menunjukkan adanya
sinyal interrupt pada pin eksternal interrupt
0
Type interrupt 0
TCON.0 IT0 = 1 : falling edge triggered interrupt
IT0 = 0 : low level triggered interrupt

Register TMOD (Timer/Counter Mode) :

Mikrokontroler MCS51

24

Register yang memiliki address 089h berfungsi untuk mengontrol


mode Timer 1 dan Timer 0. Bit-bit register ini adalah :

GATE
C/-T
(MSB)
Timer1

M1

M0

GATE

C/-T

M1

M0
(LSB)
Timer 0

Fungsi dari bit-bit register ini dapat dilihat pada tabel 3.7 :

Bit

GATE

C/-T
M1
M0

M1
0
0
1

Tabel 3.7. Fungsi bit-bit pada register TMOD


Fungsi
untuk menentukan apakah timer/counter dikontrol oleh
hardware ataukah software
GATE = 1 : hardware control : timer/counter x aktif jika
pin INTx dalam kondisi high dan TRx pada register
TCON diaktifkan
GATE = 0 : software control : timer/counter x aktif jika
TRx pada register TCON diaktifkan
counter/timer mode
selector mode
selector mode

Tabel 3.8. Mode operasi timer/counter


M0
Mode Operasi
0
13-bit timer (kompatible dengan MCS-48)
1
16 - bit timer/counter
0
8 - bit auto-reload timer/counter
(Timer 0) : TL0 berfungsi sebagai 8 - bit
timer/counter yang dikontrol oleh control bit Timer 0
1
yang standard, sedangkan TH0 adalah 8-bit timer
yang dikontrol oleh control bit Timer 1. Pada mode
ini Timer/counter 1 berhenti beroperasi

Mikrokontroler MCS51

25

Register T2CON (Timer/Counter 2 Control) :


Register ini hanya dipunyai oleh 8052, dengan address 0C8h
berfungsi untuk mengontrol fungsi Timer 2. Bit-bit register ini adalah
:

TF2
(MSB)

Simbol

TF2

EXF2

RCLK

TCLK

EXEN2

EXF2 RCLK TCLK EXEN2 TR2 C/-T2

CP/-RL2
(LSB)

Tabel 3.9. Bit-bit kontrol Timer/Counter 2


Posisi
Nama dan arti
Timer 2 overflow flag. Bit ini di-set oleh
hardware pada saat terjadi overflow di
T2CON.7 timer/counter 1. Bit tersebut akan otomatis
di-clear oleh hardware pada saat
mikrokontroler mengeksekusi program
pelayanan interrupt Timer 2.
T2CON.6 Timer 1 run control bit, untuk membuat
ON/OFF Timer/counter 1
Timer 0 overflow flag. Bit ini di-set oleh
hardware pada saat terjadi overflow di
T2CON.5 timer/counter 0. Bit tersebut akan otomatis
di-clear oleh hardware pada saat
mikrokontroler mengeksekusi program
pelayanan interrupt Timer 0.
T2CON.4 Timer 0 run control bit, untuk membuat
ON/OFF Timer/counter 0
timer 2 external enable flag
= 1 : mengijinkan capture atau auto reload
saat terjadi transisi negatif pada pin T2EX,
T2CON.3 jika timer 2 tidak sedang digunakan untuk
memberikan clock pada serial port.

Mikrokontroler MCS51

26

TR2

T2CON.2

C/-T2

T2CON.1

CP/-RL2

T2CON.0

= 0 : mengabaikan perubahan level


tegangan pada PIN T2EX
TR2 = 1 : start timer 2
TR2 = 0 : stop timer 2
Memilih mode timer/counter 2
Capture/Reload flag
= 1 : capture terjadi saat transisi negatif
pada T2EX, jika EXEN2= 1
= 0 : auto-reload terjadi saat timer 2
overflow atau saat transisi negatif pada
T2EX, jika EXEN2= 1

Register SCON (Serial Port Control) :


Register ini memiliki

address 098h berfungsi untuk mengontrol

fungsi Serial Port. Bit-bit register ini adalah :

SM0
(MSB)

Simbol
SM0
SM1
SM2

REN
TB8

RB8

SM1

SM2 REN

TB8

RB8

TI

RI
(LSB)

Tabel 3.10. Bit-bit kontrol Serial Port


Posisi
Nama dan arti
SCON.7
Bit Pemilih mode Serial Port
SCON.6
Bit Pemilih mode Serial Port
Mengijinkan komunikasi multiprosesor
SCON.5
pada mode 2 dan 3. Penjelasan
selengkapnya lihat bab mengenai serial
port
SCON.4
Reception Enable : menghidup/matikan
penerimaan data serial
SCON.3
bit ke-9 yang akan dikirimkan (mode 2
dan 3)
bit ke-9 yang diterima (untuk mode 2
SCON.2
dan 3) sedangkan pada mode 1 bit ini

Mikrokontroler MCS51

27

adalah stop bit jika SM2=0

TI
SCON.1

RI

SCON.0

Transmit interrupt flag : diset oleh


hardware pada akhir waktu bit ke-8
untuk mode 0, atau pada awal stop bit
pada mode-mode yang lain. Flag ini
hanya bisa di-clear oleh software
Receive interrupt flag : diset oleh
hardware pada akhir waktu bit ke-8
untuk mode 0, atau pada setengah jalan
selama waktu stop bit untuk mode yang
lain. Flag ini hanya bisa di-clear oleh
software

Tabel 3.11. Bit-bit pemilihan mode serial port


SMO
0
0
1
1

SM1
0
1
0
1

Mikrokontroler MCS51

Mode
0
1
2
3

Deskripsi
shift register
8-bit UART
9-bit UART
9-bit UART

Baud Rate
Fosc/12
variabel
Fosc/64 atau Fosc/32
variabel

28