Mikrokontroller 8051 mempunyai RAM (Random Access Memory) sebesar 128 byte yang bernilai dari 00H sampai 7FH, 128 byte ini di bagi dalam 3 kelompok yaitu:
- Dari 00 – 1F = 32 byte ini digunakan untuk Bank Register dan stack
- Kemudian 16 byte dari 20-2F bisa dialamatkan perbit (bit addressable), dapat ditulis dan membaca memory
- Dan 80 byte-nya lagi dari 30H-7H digunakan untuk tulis dan baca memory, biasanya disebut (scratch pad).
Dibawah ini gambar dan pemetaan memory mikrokontroller 8051:
![]() |
Memory 8051 |
- Dari 00H-07H ini adalah Bank 0
- Dari 08H-0FH ini adalah Bank 1
- Dari 10H-17H ini adalah Bank 2
- Dan terakhir dari 18H-1FH ini adalah bank 3
dari 4 masing-masing bagian bank register ini mempunyai 8 register yaitu R0-R7, dimana R0 berada dilokasi 00h pada Ram, R1 di 01h, R2 di 02h dan seterusnya sampai akhir dari bank 0 yaitu R7 di 07h. begitu juga dengan bank 1, R0 di 08h sampai R7 di 0Fh, begitu seterusnya hingga bank 3 seperti dibawah ini
![]() |
PSW Keseluruhan |
Keterangan:
Bit
|
Symbol
|
Fungsi
|
PSW.0
|
P
|
Parity
Flag. 1 / 0 diset oleh hardware setiap siklus instruksi untuk menunjukkan ganjil / genap
satu paritas bit dalam akumulator
|
PSW.1
|
-
|
Flag
didefinisikan oleh pengguna
|
PSW.2
|
OV
|
Overflow
flag
|
PSW.3
|
RS0
|
Bank
register memilih dan mengontrol bit RS0.
0 / 1 diset oleh perangkat lunak (software) untuk menentukan berkerja di bank register
(lihat table pemilih bank register)
|
PSW.4
|
RS1
|
Bank
register pemilih dan mengontrol bit RS1.
0 / 1 diset oleh perangkat lunak untuk menentukan berkerja di bank register (lihat table pamilih bank register) |
PSW.5
|
F0
|
Flag
0 (digunakan untuk tujuan umum)
|
PSW.6
|
AC
|
Auxilliary
Carry flag. (untuk operasi BCD.)
|
PSW.7
|
C
|
Carry
Flag
|
Kita dapat menganti bank register tersebut dengan menggunakan register PSW (Program Status Word), PSW.4 adalah bit ke 4 atau (RS1) dari Register PSW, dan PSW.3 adalah bit ke 3 atau (RS0) dari Register PSW coba perhatikan table 1.a dibawah.
1.
org 0h
2.
init_PSW3: ;deklarasi PSW Bank register 3
3.
setb psw.4 ;set bit psw 4 => RS1 on
4.
setb psw.3 ;set bit psw 3 => RS0 on
5.
mov R1,#59 ;59 di masukkan di R1 pada Bank register 3
6.
mov R3,#22 ;22 di masukkan di R3 pada Bank register 3
7.
mov A,R3 ;tampung nilai R3=22 di akumulator
8.
add A,R1 ; A+R1 => 22+59
9.
clr A ; bersihkan akumulator
10. sjmp init_PSW3 ; mengulang.
11. End
Pada baris 3 dan 4
psw diset yang berarti kita menggunkan bank 3 dan mengunakan R1 dan R3 pada
Bank register 3. Lalu bagaimana
dengan C ? seperti dibawah ini:
Lihat pada
baris 9 dimana fungsi init_bank3() diberi sintak “__using 3” dan didalam fungsi
ini R1 dan R3 digunakan pada bank 3 tentunya.
Mohon kritiknya.
semoga bermanfaat :)
thanks
thanks
No comments:
Post a Comment
Please Comment