Saturday, November 5, 2011

RAM 8051

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:
  1. Dari 00 – 1F = 32 byte ini digunakan untuk Bank Register dan stack
  2. Kemudian 16 byte dari 20-2F bisa dialamatkan perbit (bit addressable), dapat ditulis dan membaca memory
  3. 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
Kita akan membahas tentang Register Bank yang ber awal dari 00H-1FH, 32 byte Bank Register ini terbagi menjadi 4 bagian lagi yaitu:
  1. Dari 00H-07H ini adalah Bank 0
  2. Dari 08H-0FH ini adalah Bank 1
  3. Dari 10H-17H ini adalah Bank 2
  4. 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.

Table 1.a : Pemilih Bank Register
Jadi secara default bank register yang digunakan adalah bank 0. Jika menggunakan pemrogramman bahasa asembli dan C kita bisa menganti bank register berkerja pada bank yang kita inginkan contoh jika menggunakan Bank register 3 sebagai berikut.

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

No comments:

Post a Comment

Please Comment