BELAJAR SENDIRI MIKROKONTROLER LENGKAP (Volume 2)
Pada pembahasan yang dulu yaitu pada BELAJAR SENDIRI MIKROKONTROLER LENGKAP (Volume 1), banyak membahasa tentang perkenalan dasar-dasar mikrokontroler, berikut ini merupakan kelanjutannya, Selamat Belajar
.
6. Organisasi Memori. Pada keluarga MCS-51 ini pengalamatan memori dibedakan atas dua yaitu untuk program memori dan untuk data
memori. Pemisahan antara program memori
dan data memori merupakan ciri khas MCS-51.
Masing-masing program memori dan data memori dapat mengalamati sampai 64
Kilobyte , dengan masing-masing byte lebar datanya 8 bit.
a. Program
memori. Program memori hanya dapat dibaca, tidak dapat ditulis. Di sini tersimpan program yang
akan dijalankan oleh MCS-51 dan data- data konstanta. Sinyal pembacaan eprom eksternal adalah dari pin - PSEN. Pada MCS-51 ada dua tipe
organisasi memori dari program memori, yaitu :
1) Pengaksesan
program memori sebagian berasal dari internal eprom yang menempati alamat terendah
dan alamat berikutnya dari eprom eksternal. Sebagai contoh untuk
MCS-51 dengan model eprom internal seperti 8051, 8051AH,
8751, alamat 4 Kbyte program
memori terendah adalah ROM internal dan alamat berikutnya adalah pada eprom
eksternal.
2) Pengaksesan
program memori yang semuanya dari eksternal eprom.
Secara diagram blok digambarkan sebagai
berikut :
Gambar 3.3 Organisasi Program Memori
b. Pemetaan Program Memori. Pemetaan program memori ditunjukkan
sebagai berikut :
1) Alamat 0000H merupakan awal program.
Setelah reset, CPU akan
loncat pada alamat ini dan mengerjakan
instruksi di dalamnya.
2) Pada fungsi khusus alamat
3H dan seterusnya dengan interval 8 byte dipakai sebagai alamat dari vektor interupsi.
Bila interupsi tidak dipakai, maka alamat
tersebut dapat dipakai untuk program biasa.
c. Data
memori. Data memori menempati alamat yang terpisah dari program
memori. Data memori merupakan tempat penyimpanan data variabel, operasi stack dan sebagainya. Data memori dapat dibaca dan ditulis. Sinyal pembacaan
untuk eksternal ram berasal dari
pin-RD dan untuk penulisan
berasal dari pin-WR. Peta data
memori digambarkan sebagai berikut :
Gambar 3.4 Organisasi data memori
Alamat 00H-FFH (untuk
8051) merupakan alamat dari internal ram
yang dapat dialamati dalam dua mode. Pada alamat 00H - 7FH dapat dialamati dalam mode direct maupun indirect
addressing. Alamat 80H - FFH hanya
dapat dialamati dalam mode direct addressing.
Di luar alamat tersebut merupakan alamat eksternal ram.
32 byte terendah data memori terbagi atas 4 buah bank yang masing-masing
terdiri atas 8 buah register. Kombinasi dari bank ini ditentukan oleh register PSW (pembahasan mengenai ini
bisa dilihat pada bab berikutnya). Register-
register tersebut adalah R0 sampai R7
yang menempati alamat 00H - 1FH.
Di atasnya merupakan segmen bit addresable
yang besarnya 16 byte, menempati alamat
20H sampai 2FH. Alamat berikutnya yaitu mulai 30H sampai 7FH dapat dibagai
sebagai data ram.
Setelah kondisi reset,
kondisi baku register SP (stack pointer)
akan menuju alamat 07H dan
begitu program dijalankan isi register SP akan ditambah
1 (menunjuk ke alamat 08h). Dan ini merupakan register bank 1 register R0. Bila memakai lebih dari satu bank register
maka SP harus diinisialisasi ke lokasi yang lain.
BAB REGISTER MIKROKONTROLER MCS-51
7. Umum. 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
|
FFh
|
||||||||
F0h
|
B
|
F7h
|
|||||||
E8h
|
EFh
|
||||||||
E0h
|
ACC
|
E7h
|
|||||||
D8h
|
DFh
|
||||||||
D0h
|
PSW
|
D7H
|
|||||||
C8h
|
(T2CON)
|
(RCAP2L)
|
(RCAP2H)
|
(TL2)
|
(TH2)
|
CFh
|
|||
C0h
|
C7h
|
||||||||
B8h
|
IE
|
BFh
|
|||||||
B0h
|
P3
|
B7h
|
|||||||
A8h
|
IP
|
AFh
|
|||||||
A0h
|
P2
|
A7h
|
|||||||
98h
|
SCON
|
SBUF
|
9Fh
|
||||||
90h
|
P1
|
97h
|
|||||||
88h
|
TCON
|
TMOD
|
TL0
|
TL1
|
TH0
|
TH1
|
8Fh
|
||
80h
|
P0
|
SP
|
DPL
|
DPH
|
IP
|
87h
|
Gambar 4.1 Peta memori Special Function Registers
8. Deskripsi Fungsi Register. Masing-masing register tersebut dapat dideskripsikan sebagai berikut :
a. Register ACC (accumulator). Register ini
memiliki alamat 0E0h, dapat dialamati
per bit (bit adressable). Pada penulisan program assembly, register ini biasa ditulis dengan kode A.
b. Register B. Register ini memiliki alamat 0F0h, dapat dialamati per bit (bit adressable). 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.
c. Register PSW (Program Status Register). Register
ini memiliki alamat 0D0h, dapat dialamati per bit (bit adressable). 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
|
AC
|
F0
|
RS1
|
RS0
|
OV
|
-
|
P
|
(MSB)
|
(LSB)
|
Tabel 4.1 Fungsi bit pada register PSW
Simbol
|
Posisi
|
Nama dan Arti
|
CY
|
PSW.7
|
carry flag
|
AC
|
PSW.6
|
auxiliary carry flag, untuk operasi menggunakan bilangan BCD (binary coded decimal)
|
F0
|
PSW.5
|
Flag 0, bisa digunakan untuk keperluan pemakai
|
RS1
|
PSW.4
|
Bit 1 pemilih bank register *)
|
RS0
|
PSW.3
|
Bit 0 pemilih bank register
*)
|
OV
|
PSW.2
|
Overflow flag
|
-
|
PSW.1
|
flag yang dapat didefinisikan oleh pemakai
|
P
|
PSW.0
|
Parity flag yang di-set atau di-clear oleh hardware setiap siklus instruksi untuk memberikan kode parity
terhadap isi register Accumulator
|
*) RS1 dan RS0 menentukan
pemilihan register bank sebagai berikut :
Tabel 4.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
|
d. 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.
e. 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.
f. 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.
g. 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.
h. 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.
i. 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 pada saat transisi tegangan logika pada pin T2EX, maka isi register TH2 dan TL2 akan
dipindahkan ke register capture ini.
j. Register PCON (Power control). Register ini memiliki alamat
087h, dengan bit-bit
kontrol sebagai berikut :
SMOD
|
-
|
-
|
-
|
GF1
|
GF2
|
PD
|
IDL
|
(MSB)
|
(LSB)
|
Tabel 4.3 Fungsi bit kontrol pada register PCON
Simbol
|
Posisi
|
Nama dan Arti
|
SMOD
|
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 penggu-naan umum)
|
GF2
|
PCON.2
|
General purpose flag 2 (flag untuk penggu-naan umum)
|
PD
|
PCON.1
|
Mengaktifkan Power Down Mode untuk
80C51BH
|
IDL
|
PCON.0
|
Mengaktifkan Idle Mode untuk
80C51BH
|
Keterangan
:
1) penjelasan selengkapnya tentang baud rate, serial port
dan mode kerjanya dapat dilihat
pada pembahasan mengenai serial port.
2) GF1 dan GF2 dapat dipergunakan pemrogram untuk mendefinisikan
sendiri bit flag yang diinginkan.
3) Power down adalah
salah satu fasilitas untuk mematikan operasi mikrokontroler tanpa menghilangkan isi data pada RAM, yang hanya
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.
4) 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.
k. 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
|
-
|
ET2
|
ES
|
ET1
|
EX1
|
ET0
|
EX0
|
(MSB)
|
(LSB)
|
Fungsi dari bit-bit kontrol ini dapat dilihat
pada tabel 4.4 :
Tabel 4.4. Fungsi bit kontrol pada register IE
Simbol
|
Posisi
|
Nama dan Arti
|
EA
|
IE.7
|
Enable Interrupt
EA = 0 sistem interrupt tidak bekerja
EA =1 mengijinkan pengaktifan tiap
sumber interrupt
|
ET2
|
IE.5
|
Dicadangkan untuk penggunaan di masa depan
|
ES
|
IE.4
|
Enable Serial Port interrupt
|
ET1
|
IE.3
|
Enable Timer 1 interrupt
|
EX1
|
IE.2
|
Enable external pin 1 interrupt
|
ET0
|
IE.1
|
Enable timer 0 interrupt
|
EX0
|
IE.0
|
Enable external pin 0 interrupt
|
l. 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 :
-
|
-
|
PT2
|
PS
|
PT1
|
PX1
|
PT0
|
PX0
|
(MSB)
|
(LSB)
|
Fungsi dari bit-bit kontrol ini dapat dilihat pada tabel 4.5:
Tabel 4.5. Fungsi bit kontrol pada register IP
Simbol
|
Posisi
|
Nama dan Arti
|
PT2
|
IP.5
|
Dicadangkan untuk penggunaan di masa depan
|
PS
|
IP.4
|
Prioritas Tertinggi Pada Serial Port interrupt
|
PT1
|
IP.3
|
Prioritas Tertinggi Pada Timer 1 interrupt
|
PX1
|
IP.2
|
Prioritas Tertinggi Pada external pin 1 interrupt
|
PT0
|
IP.1
|
Prioritas Tertinggi Pada timer 0 interrupt
|
PX0
|
IP.0
|
Prioritas Tertinggi Pada external pin
0 interrupt
|
m. 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
|
TR1
|
TF0
|
TR0
|
IE1
|
IT1
|
IE0
|
IT0
|
(MSB)
|
(LSB)
|
Fungsi dari bit-bit register ini
dapat dilihat pada tabel 4.6 :
Tabel 4.6. Fungsi bit-bit pada register TCON
Simbol
|
Posisi
|
Nama dan Arti
|
TF1
|
TCON.7
|
Timer 1 overflow flag. Bit ini di-set oleh hardware
pada saat terjadi overflow di timer/counter 1. Bit tersebut akan otomatis di-clear oleh hardware pada saat mikrokontroler
mengeksekusi program pelayanan interrupt Timer
1.
|
TR1
|
TCON.6
|
Timer 1 run control bit, untuk membuat ON/OFF Timer/counter
1
|
TF0
|
TCON.5
|
Timer 0 overflow flag. Bit ini di-set oleh hardware
pada saat terjadi overflow di timer/counter 0. Bit tersebut akan otomatis di-clear oleh hardware pada saat mikrokontroler mengeksekusi program pelayanan interrupt Timer 0.
|
TR0
|
TCON.4
|
Timer 0 run control bit, untuk membuat ON/OFF Timer/counter
0
|
IE1
|
TCON.3
|
Interrupt Edge 1 =1 menunjukkan adanya sinyal interrupt
pada pin external interrupt 1
|
IT1
|
TCON.2
|
Type interrupt 1
IT1 = 1 : falling edge triggered
interrupt
IT1 = 0 : low level triggered
interrupt
|
IE0
|
TCON.1
|
Interrupt Edge 0 =1 menunjukkan adanya sinyal interrupt pada pin eksternal interrupt 0
|
IT0
|
TCON.0
|
Type interrupt 0
IT0 = 1 : falling edge triggered
interrupt
IT0 = 0 : low level triggered
interrupt
|
n. Register TMOD (Timer/Counter Mode). Register yang memiliki address 089h
berfungsi untuk mengontrol mode Timer
1 dan Timer 0. Bit-bit register
ini adalah :
GATE
|
C/-T
|
M1
|
M0
|
GATE
|
C/-T
|
M1
|
M0
|
||
(MSB)
|
(LSB)
|
||||||||
T i m e r 1
|
T i m e r 0
|
||||||||
Fungsi dari
bit-bit register ini dapat dilihat pada
tabel 4.7 :
Tabel 4.7. Fungsi bit-bit pada register TMOD
Bit
|
Fungsi
|
GATE
|
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
|
C/-T
|
counter/timer mode
|
M1
|
selector mode
|
M0
|
selector mode
|
Tabel 4.8. Mode operasi timer/counter
M1
|
M0
|
Mode Operasi
|
0
|
0
|
13-bit timer (kompatible dengan MCS-48)
|
0
|
1
|
16 - bit timer/counter
|
1
|
0
|
8 - bit auto-reload timer/counter
|
1
|
1
|
(Timer 0) : TL0 berfungsi
sebagai 8 - bit timer/counter yang
dikontrol oleh control bit Timer 0 yang standard, sedangkan TH0
adalah 8-bit timer yang dikontrol
oleh control bit Timer 1. Pada mode ini Timer/counter
1 berhenti beroperasi
|
o. 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
|
EXF2
|
RCLK
|
TCLK
|
EXEN2
|
TR2
|
C/-T2
|
CP/-RL2
|
(MSB)
|
(LSB)
|
Tabel 4.9 Bit-bit kontrol Timer/Counter 2
Simbol
|
Posisi
|
Nama dan Arti
|
TF2
|
T2CON.7
|
Timer 2 overflow flag. Bit ini di-set oleh hardware pada saat terjadi overflow di timer/counter 1. Bit tersebut akan otomatis di-clear oleh
hardware pada saat mikrokontroler mengeksekusi program pelayanan interrupt Timer 2.
|
EXF2
|
T2CON.6
|
Timer 1 run control bit, untuk membuat ON/OFF Timer/counter
1
|
RCLK
|
T2CON.5
|
Timer 0 overflow flag. Bit ini di-set oleh hardware pada saat terjadi overflow di timer/counter 0. Bit tersebut akan otomatis di-clear oleh hardware pada saat mikrokontroler mengeksekusi program pelayanan
interrupt Timer 0.
|
TCLK
|
T2CON.4
|
Timer 0 run control bit, untuk membuat ON/OFF Timer/counter
0
|
EXEN2
|
T2CON.3
|
timer 2 external enable flag
= 1 : mengijinkan capture atau auto reload saat terjadi transisi
negatif pada pin T2EX, jika timer 2 tidak sedang digunakan untuk memberikan clock pada serial port.
= 0 : mengabaikan perubahan level tegangan pada PIN T2EX
|
TR2
|
T2CON.2
|
TR2 = 1 : start timer 2
TR2 = 0 : stop timer 2
|
C/-T2
|
T2CON.1
|
Memilih mode timer/counter 2
|
CP/-RL2
|
T2CON.0
|
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
|
p. Register SCON (Serial Port Control). Register
ini memiliki address 098h berfungsi untuk mengontrol fungsi Serial Port. Bit-bit
register ini adalah :
SM0
|
SM1
|
SM2
|
REN
|
TB8
|
RB8
|
TI
|
RI
|
(MSB)
|
(LSB)
|
Tabel 4.10 Bit-bit kontrol Serial Port
Simbol
|
Posisi
|
Nama dan Arti
|
SM0
|
SCON.7
|
Bit Pemilih mode Serial Port
|
SM1
|
Scon.6
|
Bit Pemilih mode Serial Port
|
SM2
|
Scon.5
|
Mengijinkan komunikasi multiprosesor pada mode 2 dan 3. Penjelasan
selengkapnya lihat bab mengenai serial port
|
REN
|
Scon.4
|
Reception Enable : menghidup/matikan penerimaan data serial
|
TB8
|
Scon.3
|
bit ke-9 yang akan dikirimkan (mode 2 dan 3)
|
RB8
|
Scon.2
|
bit ke-9 yang diterima (untuk mode 2 dan 3) sedangkan pada mode 1 bit ini
adalah stop bit jika SM2=0
|
TI
|
Scon.1
|
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
|
RI
|
Scon.0
|
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 4.11 Bit-bit pemilihan mode
serial port
SM0
|
SM1
|
Mode
|
Deskripsi
|
Baud Rate
|
0
|
0
|
0
|
shift register
|
Fosc/12
|
0
|
1
|
1
|
8-bit UART
|
variabel
|
1
|
0
|
2
|
9-bit UART
|
Fosc/64 atau Fosc/32
|
1
|
1
|
3
|
9-bit UART
|
variabel
|
BERSAMBUNG ...
Tunggu Tulisan Selanjutnya
Akan lebih bagus lagi jika ada skema kaki2 yg di magsud
ReplyDelete