Register Dalam Mikroprosesor MCS-51

Ada beberapa register diantaranya Working Registers, Stack Pointer, Program Counter dan beberapa Special Function Registers(SFRs). Register-register MCS-51 dapat dilihat pada gambar di bawah ini.

register8051

General-Purpose atau Working registers
Akumulator, B-register dan empat register bank dapat digunakan sebagai General-Purpose atau working register.

Akumulator
Serupa dengan mikroprosesor lain seperti 8085, MCS-51 memiliki akumulator 8-bit. Akumulator digunakan oleh semua perintah aritmatika dan logika. Akumulator memiliki fungsi yang sangat penting, mengingat bahwa salah satu operand tersimpan di dalamnya sebelum pengeksekusian suatu perintah, akumulator juga menyimpan hasil dari pengeksekusian instruksi tersebut. Akumulator 8051 juga merujuk sebagai register ‘A’. Akses ke akumulator lebih cepat jika dibandingkan dengan akses ke memori utama. Akumulator memiliki jalur langsung ke ALU dan dapat dengan segera menyimpan hasil operasi setengah jadi.

B-Register
B-Register adalah suatu register dengan lebar 8 bit. B-Register dapat digunakan sebagai General-purpose register ketika tidak sedang digunakan untuk operasi pengalian dan pembagian. Ketika mengalikan, register ini menggunakan operand 8-bit dan setelah pengeksekusian perintah pengalian B-register menyimpan hasil dengan byte yang lebih tinggi. Ketika membagi B-register menggunakan pembagi 8-bit dan setelah pengeksekusian perintah pembagian, sisanya tersimpan dalam B-register.

Register R0 sampai R7
Kedelapan register ini digunakan sebagai register landasan kasar. Ada empat  register bank, masing-masing memiliki register R0 sampai R7. Tiap-tiap register ini memiliki lebar 8-bit. Dalam satu saat hanya satu bank yang dapat dipilih oleh bit-bit pengaturan yang sesuai dalam Program Status Word (PSW).

Register-register bank ini berada di dalam RAM. Dengan demikian, pemilihan register bank yang efektif memungkinkan 32 register digunakan saat menulis program. Perintah tertentu dapat mengakses register-register RAM ini secara langsung. Power-up-reset menyebabkan bank 0 dipilih sebagai patokan. Jika seseorang menulis byte dalam R4, ini akan tersimpan dalam RAM di lokasi 04H. Jika dalam kasus lain, ketika programmer memilih bank 1 dan menulis byte dalam R4, byte tersebut akan disimpan dalam RAM di lokasi 0CH.

Keuntungan dari jenis akses ini bagi register-register General-Purpose (working register) adalah untuk mempermudah programmer dalam merujuk  nama-nama register  R0, R1, dst.

workingregister

4bankregister

Stack pointer dan Program counter

Stack pointer
Stack pointer dari 8051 memiliki lebar 8-bit. Stack pointer ditambahkan selama operasi PUSH atau CALL, dan dikurangi selama operasi POP atau RETURN. Stack pointer dapat dimulai dimana saja dalam lokasi RAM yang tersedia. Setelah operasi RESET, stack pointer diarahkan ke 07H sehingga stack tersebut akan dimulai pada 08H.

Program counter
Byte-byte instruksi opcode diambil dari memori program yang dialamatkan oleh program counter. Program counter 8051 memiliki lebar 16-bit, dan dapat menunjukkan byte kode 64K.

PC selalu merujuk pada perintah yang akan diambil dan secara otomastis ditambahkan setelah perintah pengambilan. PC dipengaruhi oleh perintah CALL dan JUMP. Harus dicatat bahwa hanya register PC yang tidak memiliki alamat (internal) RAM.

sp_pc

 

Special Function Registers (SRFs)
128 byte RAM tambahan berlokasi pada 80H sampai 0FFH yang disediakan untuk fungsi-fungsi khusus, maka dari itu register ini disebut Special Function Registers (SFR). SFR ini digunakan untuk mengendalikan atau menunjukkan status dari berbagai fungsi yang dijalankan oleh mikrokontroler 8051. Semua SFR dapat dialamatkan secara langsung dan dapat dibaca atau ditulis secara langsung pula.

Dapat dicatat bahwa ruang SFR hanya tersedia untuk fungsi-fungsi khusus dan tidak dapat digunakan untuk tujuan lain.  Beberapa SFR dapat dialamatkan secara bit dan memungkinkan bit-bit individual untuk diatur atau dihapus sesuai dengan perintah. Sebagai contoh, user dapat mengatur (atau menghapus) bit Port 1 P1.1 menggunakan perintah SETB P1.0 (atau CLR P1.0). Alamat dari bit P1.1 adalah 91H. Port 1 beralamat di 90H, dapat dialamatkan ke dalam byte juga.

Untuk mengubah semua 8bits dari Port 1 dalam sekali tekan, kita perlu menulis (atau memindahkan) satu byte ke alamat 90H. Bagaimana pun, ada beberapa SFR seperti timer mode control register (TMOD) yang hanya dapat diakses sebagai byte.

mcs51_sfr
Spesial Function Register (SFR)

Program status word
Program status word, atau PSW, adalah register 8-bit. Terdiri dari carry, auxiliary carry, overflow, dan parity flags. Ada beberapa bit seperti RS1 dan RS0 untuk pemilihan pengumpul register. PSW adalah register yang dapat dialamatkan ke dalam bit. Setiap bit-bit dari PSW disebut sebagai PSW.X. Dengan demikian, PSW.0 adalah bit yang kurang signifikan (Least Significant Bit, LSB), yang merupakan parity flag, dan bit yang paling signikan (Most Significant Bit, MSB) yaitu PSW.7 adalah carry flag-nya.

programstatusword

 

Carry Flag
Carry flag diatur ketika ada pemanggilan dari hasil bit ketujuh, berkaitan dengan operasi aritmatika dan logika tertentu. Sebagai contoh, tambahan 8-bit dari pengurangan mempengaruhi carry flag. Mari kita tambah kan dua angka 11000010B (0C2H) dan 10101010B (0AAH). Tambahannya adalah 01101100B (6CH) dengan pemanggilan dari bit ketujuh. Ini akan mengatur carry flag-nya.

tambah1

Dengan cara yang sama, perintah-perintah SETB C dan CLR C dapat juga mengubah bit carry.

Auxiliary carry flag
Auxiliary carry flag (AC) diatur apabila ada pemanggilan dari bit ketiga, selama operasi penambahan atau pengurangan dan jika tidak ada, maka dihapus. Ini bermanfaat dalam aritmatika BCD. Sebagai contoh penambahan angka 11001000B (C0H) dan 0000100B (08H) akan mengatur flag AC, karena ada pemanggilan dari bit ketiga.

tambah2

 

 

 

 

F0 (PSW.5)
F0 tersedia bagi pengguna sebagai General-Purpose flag. Flag ini dapat diatur/dihapus oleh perangkat lunak, atau statusnya dapat diawasi oleh perangkat lunak. Penggunanya dapat menentukan perannya.

Register memilih bank bits RS1 dan RS0 (PSW.4 dan PSW.3, secara beraturan) Berikut adalah bit-bit untuk memilih satu dari empat register bank. Masing-masing dari register bank ini terdiri dari register R0 melalui R7. Register bank dipilih seperti yang terlihat di bawah berikut.

Seperti yang sudah kita lihat sebelumnya, perlu dicatat bahwa disaat power-up-reset, bank 0 dipilih sebagai  register bank patokan dan kedua bit-bit RS1, RS0 dihapus. Tabel dibawah ini menunjukkan alamat range dari keempat pengumpul register beserta bit-bit RS1, RS0.

registerbankselelcted

 

Overflow flag (PSW.2)
Overflow flag (OV) diatur sebagai hasil dari operasi aritmatika (penambahan, pengurangan, pengalian dan pembagian), dengan mengetahui ada pemanggilan dari bit 6, tapi tidak lebih dari bit 7 atau pemanggilan bit 7 tapi tidak lebih dari bit 6; jika tidak ada maka ini kemudian dihapus. Dalam contoh diatas dengan penambahan dua angka 11000010B (0C2H) dan 10101010B (0AAH), penambahan ini menghasilkan pemanggilan bit ketujuh tapi tidak lebih dari bit 6. Maka dari itu, OV flag juga akan diatur sesuai dengan carry flag

Parity flag (PSW.0)
flag mengindikasikan angka-angka 1 dalam akumulator. Jika ada angka ganjil 1 dalam akumulator, maka paritas ganjil ini akan mengatur parity flag (P) ke 1. Untuk paritas genap, parity flag akan dihapus.

Data Pointer (DPTR)
DPTR adalah register 16-bit yang tediri dari dua bytes. Byte yang lebih tinggi disebut DPH, sedangkan byte yang lebih rendah disbut DPL. Data pointer digunakan untuk mencari alamat data dan kode off-chip dengan perintah MOVX dan MOVC, secara beraturan. Dengan pointer DPTR 16-bit, memori data off-chip maksimum sebesar 64K dan memori program off-chip maksimum sebesar 64K dapat dicari. Ini juga dapat digunakan sebagai register tujuan umum. Terdapat perintah “INC DPTR” untuk menambahkan konten DPTR 16-bit. Namun bagaimanapun, tidak ada perintah dalam 8051 untuk mengurangi DPTR. Juga dimungkinkan untuk me-load DPTR dengan data 16-bit yang telah disiapkan menggunakan perintah MOV.

Timer registers
Pasangan-pasangan register (TH0, TL0), (TH1, TL1), (TH2, TL2) membentuk register timer/counter 16-bit 0, 1, 2 secara beraturan. Ada perintah untuk yang tersedia untuk membaca dan menulis register ini secara byte. Timer/counter 2 hanya tersedia di 8052. Operasinya bisa saja penepatan atau penghitungan waktu. Lebih jauh lagi, ada berbagai mode bagaimana timer dapat dikonfigurasikan. Untuk tujuan ini tersedia pengendali timer (TCON) dan register timer mode (TMOD)
P0, P1, P2, P3 adalah SFRs berhubungan dengan keempat port I/O secara beraturan. Tiap-tiap dari port ini dapat dialamatkan secara bit maupun byte. Port I/O dibahas secara labih mendetail di pembahasan selanjutnya.

Control registers
TCON, TMOD, IE, IP, SCON, PCON memuat kendali dan status untuk interupsi, serial I/O dan timer/counters. Detail dari SFR ini dibahas pada artikel berikutnya.

Capture register
Pasangan register (RCAP2H-RCAP2L) adalah capture register untuk Timer 2. Ini hanya terdapat di 8052, untuk operasi Timer 2 capture mode. Dalam capture mode, transisi pada pin 8052 T2EX menyebabkan TH2 dan TL2 dikopi ke dalam RCAP2H dan RCAP2L. Timer 2 juga memiliki mode auto-reload 16-bit, dan RCAP2H dan RCAP2L menentukan nilai reload untuk mode ini.

Mungkin Anda juga menyukai