Mikrokontroller
adalah yang seluruh atau sebagian besar elemnya dikemas dalam satu keping IC (integrated circuits) sehingga sering
disebut mikrokomputer cip tunggal. Lebih lanjut, mikrokontroller merupakan
sistem komputer yang mempunyai satu atau beberapa tugas yang sangat spesifik,
berbeda dengan personal Computer (PC)
yang memiliki beragam fungsi. Jadi, hanya dengan sebuah keping IC saja dapat
dibuat sebuah sistem komputer untuk mengendalikan suatu peralatan elektronika
aplikatif.
Mikrokontroller
dapat diumpamakan sebagai bentuk minuman dari sebuah mikrokomputer. Ada
perangkat keras dan lunaknya, juga ada memorinya, CPU, dan lain sebagainya yang
terpadu dalam satu cip IC.
Mikrokonntroller
AT89S52 adalah sebuah mikrokontroller buatan ATMEL yang masih masuk keluarga
mikrokontroller MCS-51 yaitu merupakan versi yang dilengkapi dengan ROM
tersendiri (internal). Mikrokontroller
AT89S52 adalah mikrokontroller dengan konsumsi daya yang rendah dengan performa
yang tinggi (low power-high performance),
CMOS 8-bit dengan 8K bytes dari ISP (In
Serial Programming) Flash memory. IC mikrokontroller ini sesuai dengan
standart MCS-51. Baik dari instruksi maupun pin-pinnya dapat diaplikasikan
sebagai Embedded Controller.
Fitur yang disediakan oleh mikrokontroller AT89S52 ini
adalah :
1.
Kompatibel
dengan produk MCS-51
2.
8K
byte in Serial Programmable Flash Memory
Dapat
dilakukan pemograman 1000 tulis dan hapus
3.
Range
catu daya 4,0 V s/d 5,5 V
4.
Operasi
Statis : 0 Hz s/d 33 MHz
5.
Tiga
tingkat program memory lock
6.
256
x 8 bit RAM internal
7.
32
programmable jalur I/O
8.
Dua
16 bit Timer/Counter
9.
Enam
Sumber Interupsi
10. Full duplex Serial Channel
11. Low power idle dan mode power down
12. Watch dog timer
13. Dual data pointer
14. Power off flag
15. Waktu pemograman cepat (fast programming time)
16. Fleksibel ISP programming
2.1.1. Pena-Pena Mikrokontroller
·
Pin 1 sampai 8 (Port 1.0 s/d Port 1.7)
Ini adalah port 1 yang merupakan saluran/bus
I/O 8 bit dua arah. Dengan internal pull-up yang dapat digunakan untuk berbagai
keperluan. Pada port ini juga digunakan sebagai saluran alamat pada saat
pemrograman dan verifikasi.
·
Pin 9
Merupakan masukan reset (aktif
tinggi), pulsa transisi dari rendah ke tinggi akan me-reset mikrokontroller ini
·
Pin 10 sampai 17 (Port 3.0 s/d Port 3.7)
Ini adalah port 3 merupakan
saluran/bus I/O 8 bit dua arah dengan internal pull-ups yang memiliki fungsi
pengganti. Bila fungsi pengganti tidak dipakai, maka ini dapat digunakan
sebagai port paralel 8 bit serbaguna. Selain itu sebagian dari port 3 dapat
berfungsi sebagai sinyal. 8 kontrol pada saat proses pemrograman dan
verifikasi.
Bit Fungsi Alternatif :
P3.0 sebagai RXD alamat B0H; Untuk
menerima data port serial
P3.1 sebagai TXD alamat B1H; Untuk
mengirim data port serial
P3.2 sebagai INT0 alamat B2H;
Interupsi eksternal 0
P3.3 sebagai INT1 alamat B3H;
Interupsi eksternal 1
P3.4 sebagai T0 alamat B4H; Input Eksternal waktu/pencacah 0
P3.5 sebagai T1 alamat B5H; Input
Eksternal waktu/pencacah 1
P3.6 sebagai WR alamat B6H; Jalur
menulis memori data eksternal
P3.7 sebagai RD alamat B7H; Jalur
membaca memori data eksternal
·
Pin 18 dan 19
Ini merupakan masukan ke penguat
osilator berpenguat tinggi. Pada mikrokontroller ini memiliki seluruh rangkaian
osilator yang diperlukan pada serpih yang sama (on chip) kecuali rangkaian
kristal yang mengendalikan frekuensi osilator. Karenanya 18 dan 19 sangat
diperlukan untuk hubungan dengan kristal. Selain itu XTAL 1 dapat juga sebagai
input untuk inverting oscilator amplifier dan input ke rangkaian internal clock
sedangkan XTAL 2 merupakan output dari inverting.
·
Pin 20
Merupakan ground sumber tegangan
yang diberi simbol GND.
·
Pin 21 sampai 28 (Port 2.0 s/d Port 2.7)
Ini adalah port 2 yang merupakan
saluran/bus I/O 8 bit dua arah dengan internal pull-ups. Saat pengambilan data
memori eksternal yang menggunakan alamat 16 bit (MOVX @ DPTR), port 2 berfungsi
sebagai saluran/bus alamat tinggi (A8 - A15). Sedangkan pada saat mengakses ke
data. 9 memori eksternal yang menggunakan alamat 8 bit (MOVX @ R1), port 2
mengeluarkan isi dari P2 pada Special Function Register.
·
Pin 29
Program Store Enable (PSEN)
merupakan sinyal pengontrol untuk mengakses program memori eksternal masuk ke
dalam bus selama proses pemberian/pengambilan instruksi (fetching).
·
Pin 30
Address Latch Enable (ALE)/PROG
merupakan penahan alamat memori eksternal (pada port 1) selama mengakses ke
memori eksternal. Pena ini juga sebagai pulsa/sinyal input pemrograman (PROG)
selama proses pemrograman.
·
Pin 31
External Access Enable (EA)
merupakan sinyal kontrol untuk pembacaan memori program. Apabila di set rendah
(L) maka mikrokontroller akan melaksanakan seluruh instruksi dari memori
program eksternal sedangkan apabila diset tinggi (H)
Maka mikrokontroller akan
melaksanakan instruksi dari memori program internal ketika isi program. 11
counter kurang dari 4096. Ini juga berfungsi sebagai tegangan pemrograman (VPP
= +12) selama proses pemrograman.
·
Pin 32 sampai 39 (Port 0.0 s/d Port 0.7)
Ini adalah port 0 yang merupakan
saluran/bus I/0 8 bit open colector, dapat juga digunakan sebagai multipleks
bus alamat rendah dan bus data selama adanya akses ke memori program eksternal.
Pada saat proses pemrograman dan verifikasi port 0 digunakan sebagai
saluran/bus data. External pull-ups diperlukan selama proses verifikasi.
·
Pin 40
Merupakan positif sumber tegangan
yang diberi simbol Vcc.
2.1.2. Arsitektur Mikrokontroller
AT89S52
Gambar
2.1 Arsitektur Mikrokontroller AT89S52
Mikrokontroller
AT89S52 dibangun berdasarkan arsitektur seperti pada gambar 2.3, seluruh bagian
yang digunakan pada gambar terrsebut saling berhubungan melalui internal
bus-8bit menelusuri seluruh bagian keping. Bus tersebut kemudian dihubungkan
melalui port input/output yang apabila memori atau ekspansi diperlukam. Setiap
blok memiliki hubungan yang erat dengan blok lainnya yang bekerja secara
sinkron sesuai dengan akses pemograman.
Dan fungsi dari tiap-tiap blok antara lain :
A. ALU (Aritmatic
Logic Unit)
Suatu unit yang
melaksanakan proses aritmatik dan logika seperti pemjumlahan, pembagian,
rotasi, clear, dan komplement operasi pencabangan
B. Accumulator
Register
Accumulator (ACC) banyak digunakan dalam berbagai instruksi. ACC bersama dengan
register B dalam proses perkalian dan pembagian. ACC akan menyimpan hasil
perkalian 8 bit terbawah (low byte) dan hasil bagi. Selain itu register ACC
juga merupakan general purpose register selebar 8 bit yang dapat digunakan
untuk aplikasi user.
C. Register B
Register B
digunakan bersama dengan Accumulator dalam proses perkalian dan pembagian.
Register B akan menyimpan hasil perkalian 8 bit teratas (high byte) dan sisa
pembagian. Selain itu register B juga merupakan general purpose register
selebar 8 bit yang dapat digunakan untuk aplikasi user.
D. Stack Pointer
Stack Pointer
(SP) merupakan register 8 bit yang berisi lokasi dimana data alamat stack
teratas disimpan. Instruksi PUSH, LCALL, proses interrupt, dan sejenisnya akan
menambah nilai pada SP. Sedangkan instruksi POP, RET, RETI, dan sejenisnya akan
mengurangi nilai pada SP.
E. Data Pointer
Data Pointer
(DPTR) merupakan register 16 bit yang terdiri dari 8 bit Data Pointer High
(DPH) dan 8 bit Data Pointer Low (DPL). DPTR umumnya digunakan untuk mengakses
alamat pada memori eksternal.
F. Port Registers
Port register
merupakan register yang mewakili alamat port. Register input/output ini
meliputi Port 0 (P0), Port 1 (P1), Port 2 (P2), dan Port 3 (P3).
G. Timer Registers
Timer Register
merupakan register yang digunakan untuk mengatur operasi timer. Register ini
meliputi Timer 1 High Byte (TH1), Timer 0 High Byte (TH0), Timer 1 Low Byte
(TL1), Timer 0 Low Byte (TL0), Timer Mode (TMOD), dan Timer Control (TCON).
H. Serial Port Registers
Serial Port
register merupakan register yang digunakan dalam proses komunikasi serial.
Register ini meliputi Serial Data Buffer (SBUFF) dan Serial Port Control
(SCON).
I. Interrupt Registers
Interrupt
register merupakan register yang digunakan untuk mengatur proses interrupt.
Register ini meliputi Interrupt Enable (IE) dan Interrupt Priority (IP).
J. RAM (Random
Acces Memory)
Merupakan
memori yang dapat dibaca dan ditulis. Data dalam RAM akan terhapus (Volatile)
bila catu daya dihilangkan. Karena sifat yang seperti ini, maka program mikrokontroller
tidak disimpan dalam RAM. RAM pada IC ini memiliki kapasitas sebesar 128 byte x
8 bit.
2.1.3. Struktur Pengoperasian Port
A. Port
Input/Output
Mikrokpntroller ini memiliki 32
jalur port yang dibagi menjadi 4 buah port 8 bit. Masing-masing port ini
bersifat bidirectional sehingga dapat
digunakan sebagai input atau output port. Pada blok diagram AT89S52 dapat
dilihat latch tiap bit pada ke empat port : 0, 1, 2, dan 3 yang masing-masing
jalur port terdiri dari latch, output driver dan output buffer. Port0 dan 2
dapat digunakan sebagai saluran data dan alamat sekaligus dimultipleks.
Untuk mengakses memori
eksternal, port0 akan mengelurkan alamat bahwa mwmori eksternal yang
dimultipleks dengan data yang dapat dibaca dan ditulis. Sedangkan port2 mengeluarkan
bagian atas memori eksternal sehingga total alamat seluruhnya menjadi 16bit.
Khusus untuk port 3 mempunyai
fungsi yang lain diluar sebagai port. Fungsi ini akan berbeda untuk tiap-tiap
kaki dengan urutan sebagai berikut :
a. port3.0 : port input serial,
RXD
b. port3.1 : port output
serial, TXD
c. port3.2 : input interupsi
eksternal, INT 0
d. port3.3 : input interupsi
internal, INT 1
e. port3.4 : input eksternal
untuk timer/counter 0,T0
f. port3.5 : input eksternal
untuk timer/counter 1,T1
g. port3.6 : sinyal tulis
memori eksternal, WR
h. port3.7 : sinyal baca memori eksternal, RD
Latch yang digunakan dapat dipresentasikan dengan flip-flop D. Data dari
bus internal di Latch saat CRU memberi sinyal tulis ke Latch dan output Latch
diberikan ke bus internal sebagai respon dari sinyal pin oleh CPU. Beberapa
instruksi yang berfungsi membaca port mengaktifkan sinyal baca Latch dan yang
lain mengaktifkansinyal baca pin. Port1, 2 dan 3 mempunyai pull-up internal,
sedangkan port0 dengan output open drain.
Masing-masing jalur I/O dapat digunakan sebagai input dan output. Bila
digunakan sebagai input, port latch 1. Ontuk port1, 2 dan 3, pin-pin akan di
pull-up internal dan bisa juga di pull-up rendah degan sumber eksternal.
Port0 tidak mempunyai pull-up internal, pull-up fet hanya akan digunakan
saat akses eksternal memori. Jika isi latch diatur pada keadaan 1, maka port
ini akan berfungsi sebagai impedansi tinggi dan jika sebagai output akan
bersifat o[en drain. Demikian halnya dengan port2 yang digunakan untuk
multipliks data dan alamat 16 bit sebesar 16 Kbyte mempunyai konfigurasi yang
sama dengan yang dimiliki port0.
Sedangkan pada port3 yang biasa dimanfaatkan untuk kaki kontrol mempunyai
pengaturan fungsi output saja. Pada rangkaian ini jg dilengkapi dengan
rangkaian pull-up internal. Penggunaan port3 dapat dialamati langdung sebagai
kontrol pada suatu tugas yang dilakukan oleh fungsi yang dimiliki port ini.
B. Timer/counter
Pada dasarnya timer dan counter merupakan sistem yang sama-sama menambahkan
diri hingga overflow. Timer dapat digunakan untuk menghitung suatu periode
waktu antara kejadian, sebagai jarak waktu antara kejadian, dan menghasilkan
baud rate untuk komunikasi serial. Counter dapat digunakan untuk menghitung
jumlah munculnya suatu kejadian.
Misalkan terdapat sebuah ban berjalan yang memasukkan sejumla permen ke
dalam masing-masing kantung plastik. Jika diinginkan sebuah kantung diisi
dengan permen sebanyak 100 buah, maka sistem tersebut dapat menggunakan counter
untuk menghitung banyaknya permen.
Jika diinginkan sebuah kantung diisi dengan permen selama dua detik tanpa
mempedulikan jumlah permen yang diisikan ke dalam kantung, maka sistem tersebut
dapat menggunakan timer untuk menghitung waktu pengisian kantung. Register yang digunakan untuk mengatur timer/counter terdapat pada
Timer Mode (TMOD) dan Timer Control (TCON).
Gambar... ...
Alokasi Bit TMOD
Tabel.... .... Timer TMOD
Berikut ini
adalah penjelasan masing-masing bit TCON yang berkaitan dengan timer/counter:
- TF1
diberi nilai ‘1’
secara hardware saat nilai Timer/Counter 1 (TH1 dan TLI) mengalami overflow.
TF1 akan diberi nilai ‘0’ secara hardware saat mikrokontroler melompat ke
Interrupt Service Routine.
- TR1
harus diberi
nilai ‘1’ oleh program untuk menjalankan Timer 1.
- TF0
diberi nilai
‘1’ secara hardware saat nilai Timer/Counter 0 (TH0 dan TL0) mengalami
overflow. TF0 akan diberi nilai ‘0’ secara hardware saat mikrokontroler
melompat ke Interrupt Service Routine.
- TR0
harus diberi nilai ‘1’ oleh program untuk menjalankan Timer 0.
Timer/Counter
memiliki 4 mode operasi, antara lain :
1. MODE 0.
Mode 0 adalah
timer/counter 13 bit. Mode ini disediakan terutama untuk menjaga kompatibilitas
dengan prosesor 8048. Pada mode 0, register TLx (TL0 atau TL1) hanya digunakan
5 bit terendah saja sedangkan register THx (TH0 atau TH1) tetap selebar 8 bit. TLx
akan bertambah hingga bernilai 1Fh. Saat ada perubahan nilai TLx dari 1Fh ke
00h, THx akan bertambah 1. Nilai maksimal THx dan TLx adalah FF1Fh (THx = FFh
dan TLx = 1Fh). Overflow akan terjadi jika ada perubahan dari FF1Fh ke 0000h.
Nilai THx dan TLx dapat diubah oleh user setiap saat dalam program.
Gambar...
2. MODE 1
Mode 1 pada
dasarnya serupa dengan mode 0. Namun pada mode 1 semua bit TLx digunakan,
sehingga mode 1 merupakan timer/counter 16 bit. TLx akan bertambah hingga
bernilai FFh. Saat ada perubahan nilai TLx dari FFh ke 00h, THx akan bertambah
1. Nilai maksimal THx dan TLx adalah FFFFh (THx = FFh dan TLx = FFh). Overflow
akan terjadi jika ada perubahan dari FFFFh ke 0000h. Nilai THx dan TLx dapat
diubah oleh user setiap saat dalam program.
Gambar...
3. MODE 2
Mode 2 adalah
timer/counter 8 bit dengan fasilitas auto reload. TLx bertindak sebagai
timer/counter 8 bit. Sedangkan THx berisi suatu nilai tertentu. Auto reload adalah
fasilitas dimana nilai TLx setelah overflow tidak kembali ke 00h namun nilai
TLx akan diambil dari nilai THx.
Misalkan THx
berisi 47h dan TLx berisi FFh. Jika ada overflow pada TLx, nilai TLx akan
berubah dari FFh ke 47h, sesuai dengan nilai THx. Proses tersebut dikerjakan
secara otomatis secara hardware sehingga user tidak perlu memeriksa apakah
nilai TLx sudah overflow dan tidak perlu mengisi ulang dengan nilai yang baru.
Mode 2 ini juga digunakan untuk menghasilkan baud rate.
Gambar...
4. MODE 3
Pada mode 3,
Timer/Counter 0 akan menjadi dua timer/counter 8 bit, sedangkan Timer/Counter 1
akan berhenti. TL0 akan menjadi timer/counter 8 bit yang dikendalikan oleh bit
kontrol Timer/Counter 0 (meliputi GATE, C/T , TR0, INT0, dan
TF0). TH0 akan menjadi timer 8 bit (bukan counter) yang dikendalikan oleh bit
kontrol Timer/Counter 1 (meliputi TR1 dan TF1). Jadi TR1 mengendalikan TH0 dan
Timer/Counter 1 secara bersamaan.
Gambar...
Timer/Counter
1 masih dapat dioperasikan dalam mode selain mode 3. Umumnya Timer/counter 1
dioperasikan dalam mode 2 dan berfungsi sebagai penghasil baud rate. Jika user
ingin menghentikan Timer/Counter 1 tanpa menghentikan TH0, user dapat
memindahkan Timer/Counter 1 ke dalam mode 3. Proses inisialisasi adalah proses
menentukan nilai semua register yang berkaitan dengan Timer/Counter yang akan
digunakan agar Timer/Counter dapat berfungsi sebagaimana yang dikehendaki.
Register yang
harus diatur terlebih dahulu meliputi :
1. TMOD dan
TCON
Langkah pertama
adalah menentukan mode yang akan digunakan (mode 0, 1, 2, atau 3) fungsi yang
dipilih (sebagai timer atau counter), dan jenis kontrol (external control
melalui pin INTx atau internal control melalui TRx). Pengaturan TCON dilakukan
untuk menjalankan timer. Misalnya Timer/Counter 0 digunakan sebagai timer dalam
mode 2 dengan external control dan Timer/Counter 1 digunakan sebagai counter
dalam mode 1 dengan internal control, maka instruksinya adalah sebagai berikut
:
MOV TMOD, #01011010b
atau
MOV TMOD, #5Ah
Sedangkan untuk
menjalankan kedua timer, instruksinya adalah sebagai beikut :
MOV TCON, #01010000b
atau
MOV TCON, #50h
atau
SETB TR0
SETB TR1
2. THx
dan/atau TLx
Jika
diperlukan, inisialisasi atau perubahan terhadap nilai THx dan/ atau TLx dapat dilakukan
dengan cara mengisikan nilai tertentu kedalam register tersebut. Misalnya
register Timer/Counter 0 diisi dengan nilai 814Ah dan register Timer/Counter 1
diisi dengan nilai 0CF32h, maka instruksinya adalah sebagai berikut :
MOV TH0, #81h
MOV TL0, #4Ah
MOV TH1, #0CFh
MOV TL1, #32h
3. IE dan/atau
IP
Jika
Timer/Counter yang diprogram akan digunakan sebagai sumber interrupt, maka IE
dan/atau IP juga harus diatur. Misalnya kedua Timer/Counter digunakan sebagai
sumber interrupt dengan prioritas Timer/Counter 1, maka instruksinya adalah
sebagai berikut:
MOV IP, #00001000b
MOV IE, #10002020b
atau
MOV IP, #08h
MOV IE, #8Ah
atau
SETB PT1
SETB ET1
SETB ET0
SETB EA
Pembacaan
nilai Timer/Counter dapat dilakukan dengan dua cara, pembacaan register
Timer/Counter (THx dan/atau TLx) secara langsung dan mendeteksi overflow. Cara
ini dilakukan dengan membaca register THx dan/atau TLx secara langsung. Jika
Timer/Counter dioperasikan dalam mode 2 atau mode 3, cara ini cukup mudah
karena register yang dibaca hanya TLx dan/atau THx yang masing-masing selebar 8
bit. Karena register MCS-51 secara umum juga selebar 8 bit, maka proses
pembacaan satu nilai dapat dilakukan dalam satu instruksi. Masalah mulai muncul
jika Timer/Counter dioperasikan dalam mode 0 atau mode 1.
Dalam kedua
mode tersebut THx dan TLx bersama-samamembentuk satu nilai selebar 13 bit atau
16 bit dan keduanya tidak dapat dibaca sekaligus. Jika TLx dibaca pada saat TLx
bernilai 255 atau FFh lalu THx yang dibaca pada instruksi selanjutnya bernilai
8, maka user akan mendapat nilai THx dan TLx sebesar 08FFh. Padahal yang
terjadi sesungguhnya adalah pada pembacaan pertama (pembacaan TLx), nilai THx
dan TLx adalah 07FFh dan pada pembacaan kedua (pembacaan THx), nilai THx dan
TLx adalah 0800h (jika diasumsikan jarak antara kedua instruksi adalah machine cycle dan Timer/Counter difungsikan
sebagai timer).
Pada kasus yang
sama, jika dilakukan pembacaan terhadap THx terlebih dahulu sebelum pembacaan
TLx, maka user akan mendapat nilai akhir 0700h (sebelum TLx overflow, THx
bernilai 07h dan setelah TLx overflow, TLx bernilai 00h).
Hal ini dapat
diatasi dengan cara melakukan pembacaan THx sebanyak dua kali, yaitu sebelum
dan sesudah pembacaan TLx. Dengan cara ini user dapat mengetahui apakah pembacaan
register THx dan TLx dilakukan pada saat TLx overflow atau tidak. Jika
pembacaan pertama THx bernilai 07h, pembacaan TLx bernilai 00h, dan pembacaan
kedua THx bernilai 08h, maka user akan mengetahui bahwa kondisi yang dibaca
adalah pada saat THx dan TLx bernilai 07FFh, 0800h, dan 0801h (jika diasumsikan
jarak antara instruksi pembacaan adalah 1 machine cycle dan Timer/Counter
difungsikan sebagai timer)
Cara yang
lebih sering digunakan adalah dengan mendeteksi overflow. Cara ini digunakan
jika user tidak perlu mengetahui nilai sebenarnya dari THx dan TLx namun lebih
membutuhkan saat terjadinya overflow. Adanya overflow ditandai oleh nilai ‘1’
pada TFx (TCON.7 dan/atau TCON.5).
Cara ini
digunakan jika user ingin menggunakan timer sebagai sebuah delay yang berdurasi
tetap. Misalnya delay yang dibutuhkan adalah 0,05 detik atau 50 milidetik dan
diasumsikan 1 machine cycle membutuhkan waktu 1 mikrodetik (dengan menggunakan
frekuensi kristal 12 MHz). Hal ini berarti timer harus bertambah dari 0 hingga
50000 untuk satu durasi delay. Karena overflow tidak terjadi pada nilai 50000
melainkan pada saat nilai THx dan TLx kembali ke 0000h atau 65536 machine cycle
dari nilai 0000h sebelumnya (dalam mode 1,16 bit), maka nilai awal THx dan TLx
yang harus dimasukkan adalah 65536 - 50000 - 15536 atau 3CB0h.
Timer/Counter
yang dioperasikan sebagai timer dapat digunakan untuk menghitung waktu dari
sebuah kejadian. Nilai timer bertambah tiap machine cycle (12 pulsa clock)
sehingga kecepatan bertambahnya adalah 1/12 dari frekuensi osilator. Untuk
mengukur durasi sebuah kejadian, user hanya pcrlu mengaktifkan timer pada saat
kejadian tersebut dimulai. Jika kejadian tersebut berakhir, user dapat
menghentikan timer. Dengan cara ini user mendapatkan sebuah nilai timer yang
dapat digunakan sebagai dasar untuk menghitung lama waktu yang sesungguhnya.
Timer/Counter
yang dioperasikan sebagai counter dapat digunakan untuk menghitung jumlah
kejadian yang muncul. Karena counter membutuhkan transisi dari ‘1’ ke ‘0’
sebagai trigger, maka counter membutuhkan waktu 2 machine cycle (24 pulsa
clock) sebelum nilainya bertambah. Jadi counter mampu membaca trigger dengan
frekuensi 1/24 dari frekuensi osilator.
Counter
sebenarnya dapat diaplikasikan dengan menggunakan general purpose I/O seperti
port 1, namun program harus terus-menerus memeriksa kondisi port 1. Jika
kondisi port 1 tidak diperiksa terus-menerus, pasti ada kejadian yang terlewat.
Dengan
menggunakan Timer/Counter sebagai counter, maka MCS51 akan selalu menghitung munculnya kejadian yang ditandai dengan adanya trigger.
User hanya perlu memeriksa nilai counter pada saat yang ditentukan.
2.1.4 Organisasi
Memori
Memori pada intinya berfungsi untuk ‘mengingat’ atau menyimpan suatu
informasi. Memori penting bagi sistem MCS-51 karena semua program dan data
tersimpan dalam memori. Makin besar kapasitas memori yang dimiliki, sistem
dapat mengakomodasi program yang lebih kompleks dan data yang lebih banyak.
Pada dasarnya, dalam dunia mikrokontroler ada dua tipe memori. Kedua memori
tersebut adalah data memory dan program memory. Pembagian dua memori ini
bertujuan agar proses kerja mikrokontroler bekerja lebih cepat.
1. Data Memory
Data Memory
seperti namanya, berfungsi untuk menyimpan data. Berdasarkan lokasinya, data
memory dibagi menjadi dua, yaitu internal data memory yang terdapat dalam IC
MCS-51 dan external data memory yang berada diluar IC MCS-51. Kapasitas internal
data memory yang dimiliki MCS-51 sebesar 128 bytes ditambah dengan SFR (Special
Function Register) sehingga jumlahnya mencapai 256 bytes.
Pembagian ruang
internal data memory
Konfigurasi internal
dan external data memory
2. Program Memory
Program Memory berfungsi untuk
menyimpan kode program user yang akan dijalankan. User dapat menggunakan
internal program memory yang tertanam dalam IC MCS-51 dan external program
memory. Internal Program Memory selain berisi instruksi user, juga memiliki
beberapa alamat khusus yang ditujukan untuk reset address (alamat yang dituju
saat pertama kali mikrokontroler bekerja) dan interrupt vector address.
Alamat
Reset dan Interrup Vector Address
External Program Memory berupa IC
RAM atau ROM dapat ditambahkan dan digunakan untuk menyimpan variabel yang ditentukan
oleh user. Penambahan ini dapat dilakukan hingga kapasitas total external
program memory mencapai 64 KB
Konfigurai
internal dan external program memory
Untuk internal data memory meliputi
:
- Register Banks
- Bit-addressable RAM
- General Purpose RAM (Stratch Pad
Area)
- Special Function Registers (SFR)
Organisasi
Internal Data Memory
- General
Purpose RAM
General Purpose RAM atau sering
disebut juga sebagai Stratch Pad Area adalah ruang data memory yang bebas
digunakan user sebagai tempat penyimpanan variabel atau sebagai alamat
inisialisasi Stack Pointer. General Purpose RAM hanya dapat diakses per byte.
- Bit-addressable RAM
Bit-addressable RAM memiliki fungsi
yang sama dengan General Purpose RAM. User juga dapat menggunakan ruang ini
untuk menyimpan variabel atau alamat inisialisasi Stack Pointer. Berbeda dengan
General Purpose RAM, Bit-addressable RAM tidak hanya dapat diakses per byte
namun juga dapat diakses per bit.
- Register Banks
Internal data memory memuat 4
register banks, yaitu: Register Bank 0, Register Bank 1, Register Bank 2,
Register Bank 3. Register Banks ini digunakan sebagai alamat untuk menampung
delapan register selebar 1 byte yang diberi nama R0, R1, dan seterusnya hingga
R7. Secara default, kedelapan register ini akan menempati Register Bank 0.
- Special Function Registers
SFR merupakan sejumlah register
khusus yang mencakup alamat port, Accumulator, register B, timer, dan sejumlah
register kontrol. Beberapa dari SFR juga dapat diakses per bit
(bit-addressable).
Pembagian
Register Banks
Peta
SFR
Alokasi Bit
PSW
Program
Status Word
A. Program Status Word
Program Status Word (PSW) selebar 1
byte mencakup status bit dengan konfigurasi dari Most Significant Bit (MSB)
hingga Least Significant Bit (LSB)
·
CY
Carry Flag
bernilai ‘1’ jika sebuah penjumlahan menghasilkan nilai lebih dari 255 atau
FFh. Carry flag juga akan bernilai ‘1’ jika sebuah pengurangan menghasilkan
nilai kurang dari 0. Selain itu, carry flag juga dapat diakses oleh user secara
langsung.
·
AC
Auxiliary carry flag bernilai ‘1’
jika penjumlahan Binary Coded Decimal (BCD) menghasilkan nilai lebih dari 9.
·
F0
Flag 0
merupakan general purpose flag yang dapat digunakan untuk aplikasi user.
·
RS1 dan RS0
Register
bank select digunakan untuk menemukan register bank yang aktif untuk R0 hingga
R7.
Pemilihan Register Bank
·
OV
Overflow flag bernilai ‘1’ jika ada
penambahan atau pengurangan signed number yang menghasilkan nilai lebih dari
+127 atau kurang dari -128. Jika proses penambahan atau pengurangan tidak menggunakan
signed number, maka perubahan OV dapat diabaikan.
·
P
Parity Flag digunakan untuk
menggenapi jumlah bit yang bernilai ‘1’ pada accumulator. Parity flag bernilai
‘1’ jika jumlah bit yang bernilai 1 pada accumulator berjumlah ganjil dan
bernilai ‘0’ jika jumlah bit yang bernilai 1 pada accumulator berjumlah genap.
B. Accumulator
Register Accumulator (ACC) banyak
digunakan dalam berbagai instruksi. ACC bersama dengan register B dalam proses
perkalian dan pembagian. ACC akan menyimpan hasil perkalian 8 bit terbawah (low
byte) dan hasil bagi. Selain itu register ACC juga merupakan general purpose
register selebar 8 bit yang dapat digunakan untuk aplikasi user.
C. Register B
Register B digunakan bersama dengan
Accumulator dalam proses perkalian dan pembagian. Register B akan menyimpan
hasil perkalian 8 bit teratas (high byte) dan sisa pembagian. Selain itu
register B juga merupakan general purpose register selebar 8 bit yang dapat digunakan
untuk aplikasi user.
D. Stack Pointer
Stack Pointer (SP) merupakan
register 8 bit yang berisi lokasi dimana data alamat stack teratas disimpan.
Instruksi PUSH, LCALL, proses interrupt, dan sejenisnya akan menambah nilai
pada SP. Sedangkan instruksi POP, RET, RETI, dan sejenisnya akan mengurangi
nilai pada SP.
E. Data Pointer
Data Pointer (DPTR) merupakan
register 16 bit yang terdiri dari 8 bit Data Pointer High (DPH) dan 8 bit Data
Pointer Low (DPL). DPTR umumnya digunakan untuk mengakses alamat pada memori
eksternal.
F. Port Registers
Port register merupakan register
yang mewakili alamat port. Register input/output ini meliputi Port 0 (P0), Port
1 (P1), Port 2 (P2), dan Port 3 (P3).
G. Timer Registers
Timer Register merupakan register
yang digunakan untuk mengatur operasi timer. Register ini meliputi Timer 1 High
Byte (TH1), Timer 0 High Byte (TH0), Timer 1 Low Byte (TL1), Timer 0 Low Byte
(TL0), Timer Mode (TMOD), dan Timer Control (TCON).
H. Serial Port Registers
Serial Port register merupakan
register yang digunakan dalam proses komunikasi serial. Register ini meliputi
Serial Data Buffer (SBUFF) dan Serial Port Control (SCON).
I. Interrupt Registers
Interrupt register merupakan
register yang digunakan untuk mengatur proses interrupt. Register ini meliputi
Interrupt Enable (IE) dan Interrupt Priority (IP).
J. Power Control Register
Alokasi Bit PCON
Power Control Register
·
SMOD
SMOD bernilai ‘1’ untuk
melipatgandakan baud rate saat serial port dijalankan dalam mode 1,2, atau 3.
·
GF1 dan GF0
General Purpose Flag yang dapat
digunakan untuk aplikasi user.
·
PD
Power Down bernilai ‘1’ untuk
mengaktifkan mode power down. Satusatunya cara untuk keluar dari mode ini
adalah dengan melakukan reset pada sistem.
·
IDL
Idle Mode bernilai ‘1’ untuk
mengaktifkan mode idle. Cara untuk keluar dari mode ini adalah dengan melakukan
reset pada sistem.
Beberapa
varian MCS-51 dilengkapi dengan kemampuan untuk dihubungkan dengan external
memory. Untuk mengakses external memory, MCS-51 menyediakan tiga pin yaitu
Write (WR), Read (RD), dan Program Store Enable ( PSEN ).
Sedangkan address bus dan data bus dihubungkan melalui port 0 dan port 2. Pin
Address Latch Enable (ALE) dihubungkan dengan IC latch (74HC373, 74HC573, atau
IC sejenis). Port 2 berfungsi sebagai high byte address bus. Port 0 berfungsi
ganda sebagai data bus dan low byte address bus. Hal ini dimungkinkan karena port
0 menggunakan teknik multiplex sehingga dapat menghemat jumlah pin yang
digunakan.
Tanpa
multiplex, jumlah pin yang digunakan untuk 16 bit address dan 8 bit data adalah
24 jalur. Dengan multiplex, jumlah pin yang dibutuhkan hanya 16 jalur, 8 bit
address dan 8 bit address/data.
Penggunaan
Port pada Teknik Multiplex
Pada teknik
multiplex, port 0 akan berfungsi sebagai address bus pada paruh pertama memory
cycle atau siklus memori. Nilai address pada port 0 akan ditahan oleh IC latch.
Pada paruh kedua memory cycle, port 0 akan berfungsi sebagai data bus.
Koneksi
MCS-51 dengan External Data Memory
Pin yang
digunakan untuk mengakses external data memory adalah pin WR dihubungkan
dengan pin pada external memory yang berfungsi sebagai write enable (W ).
Pin RD dihubungkan dengan pin pada external memory yang berfungsi
sebagai output enable (OE ).
Koneksi
dengan Program Memory
Pin yang digunakan untuk mengakses external program memory adalah pin PSEN . Pin PSEN dihubungkan
dengan pin pada external memory yang berfungsi sebagai output enable.
Address decoding bertujuan untuk membagi dan menentukan alamat dari
external memory/peripheral. Hal ini dilakukan agar external address dapat
digunakan secara efisien. Tanpa address decoding, penambahan sebuah memori
dengan kapasitas berapapun akan menempati keseluruhan 64 KB external address.
Dengan address decoding, external address 64 KB dapat dibagi menjadi beberapa
ruang dengan kapasitas tertentu untuk meminimalkan ruang alamat yang tidak
digunakan.
Jika external address dibagi menjadi 8, maka akan terbentuk 8 ruang
yang masing-masing berkapasitas 8 KB menempati alamat 0000h-1FFFh, 2000h-3FFFh, dan seterusnya. Jika external
address dibagi menjadi 16, maka akan terbentuk 16 ruang yang masing-masing
berkapasitas 4 KB dan menempati alamat 0000h-0FFFh, 1000h-1FFFh, dan
seterusnya. Semakin banyak pembagian ruang, maka penggunaan external address
akan semakin efisien.
Address decoding dilakukan dengan bantuan IC dekoder untuk memilih
external memory/peripheral. Output dari IC dekoder dihubungkan dengan pin pada
external memory/peripheral yang berfungsi sebagai chip select (CS ).
Dengan adanya jalur enable terpisah antara program memory ( PSEN ) dan data memory (WR dan RD) maka MCS-51 mendukung penggunaan 64 KB external program memory dan
64 KB external data memory.
Pengertian
dari ‘data memory dan program memory yang saling overlapping’ adalah adanya
ruang memori yang pada suatu saat diakses sebagai data memory dan pada saat
lain sebagai program memory. Misalkan ada serangkaian instruksi yang akan
dimasukkan ke external memory, maka instruksi tersebut akan dituliskan dahulu
sebagai data dengan menggunakan pin WR. Setelah tersimpan, maka dapat
dibaca sebagai program memory menggunakan pin PSEN .
Address Decoding 8 KB
Hal ini
dapat dilakukan dengan menghubungkan RD dan PSEN melalui sebuah
gerbang logika sebelum dihubungkan ke OE . Penambahan gerbang logika ini
bertujuan agar pin OE menjadi aktif jika memori diakses dengan RD maupun
PSEN . Gerbang logika yang umum digunakan adalah gerbang AND.
Rangkaian Overlapping
2.1.5 Sistem Interupsi
Interrupt
bila diterjemahkan secara harfiah berarti menyela. Pada prakteknya interrupt
pada mikrokontroler memang akan menyela program yang sedang diproses. Interrupt
ini berguna jika terdapat suatu rutin yang dijalankan hanya pada waktu tertentu
yang bersifat asinkron terhadap program utama. Program utama tidak pernah
mengetahui kapan rutin interrupt akan dijalankan. Proses interrupt dapat
dianalogikan sebagai seorang atasan memanggil pegawainya yang sedang bekerja.
Seorang pegawai tidak tahu kapan atasan akan memanggilnya. Namun jika dia
dipanggil pegawai tersebut harus menghentikan pekerjaannya untuk sementara
waktu dan memenuhi perintah atasannya. Setelah pegawai tersebut menyelesaikan
perintah atasannya, dia dapat kembali ke pekerjaannya
MCS-51 mengenal lima sumber
interrupt, yaitu :
- External
Interrupt 0
-
Timer/Counter 0
- External
Interrupt 1
-
Timer/Counter 1
- Serial
Port
User dapat mengaktifkan interrupt melalui
SFR Interrupt Enable (IE)
Berikut ini adalah penjelasan
masing-masing bit IP :
- PS
bernilai ‘1’ untuk memberi
prioritas tinggi pada interrupt dari komunikasi serial.
- PT1
bernilai ‘1’ untuk memberi
prioritas tinggi pada interrupt dari Timer/Counter 1.
- PX1
bernilai ‘1’ untuk memberi
prioritas tinggi pada interrupt dari External Interrupt 1.
- PT0
bernilai
‘1’ untuk memberi prioritas tinggi pada interrupt dari Timer/Counter 0.
- PX0
bernilai ‘1’ untuk memberi
prioritas tinggi pada interrupt dari External Interrupt 0.
Dengan
adanya SFR ini, maka interrupt memiliki dua tingkat prioritas, yaitu prioritas
tinggi (high priority) dan prioritas rendah (low priority). Secara default
semua interrupt akan menempati prioritas rendah. Namun interrupt dapat diberi
prioritas tinggi dengan cara memberi nilai ‘1’ pada bit yang bersangkutan pada
SFR IP.
Dalam hal Interrupt Priority
berlaku ketentuan sebagai berikut:
1. Jika
interrupt masuk bersamaan dan keduanya memiliki prioritas yang sama, maka
interrupt yang lebih dahulu diproses sesuai urutan polling.
2. Jika
interrupt masuk bersamaan dan salah satu memiliki prioritas tinggi, maka
interrupt yang memiliki prioritas tinggi akan dilayani terlebih dahulu.
3. Jika
interrupt masuk tidak bersamaan dan keduanya memiliki prioritas yang sama, maka
interrupt akan dilayani satu per satu sesuai urutan masuknya.
4. Jika
interrupt dengan prioritas tinggi masuk terlebih dahulu, maka interrupt
tersebut akan dilayani. Interrupt lain, apapun prioritasnya, harus menunggu
selesainya Interrupt dengan prioritas tinggi tersebut.
5. Jika
interrupt dengan prioritas rendah masuk terlebih dahulu, maka interrupt
tersebut akan dilayani. Jika ada interrupt dengan prioritas tinggi masuk, maka
interrupt dengan prioritas rendah akan ‘ditinggal’ dan interrupt dengan
prioritas tinggi akan diselesaikan terlebih dahulu sebelum kembali ke interrupt
dengan prioritas rendah.
Apabila
terjadi interrupt, maka akan terdapat interrupt/overflow flag yang bernilai
‘1’. Nilai ini merupakan tanda bagi user dan CPU tentang adanya interrupt.
Interrupt flag terdapat pada SFR Timer Control (TCON) dan Serial Port Control
(SCON).
Berikut ini
adalah penjelasan masing-masing bit TCON yang berkaitan dengan interrupt:
- TF1
diberi nilai ‘1’ secara hardware
saat nilai Timer/Counter 1 (TH1 dan TL1) mengalami overflow. TF1 akan diberi
nilai ‘0’ secara hardware saat mikrokontroler melompat ke Interrupt Service
Routine.
- TF0
diberi nilai ‘1’ secara hardware
saat nilai Timer/Counter 0 (TH0 dan TL0) mengalami overflow. TF0 akan diberi
nilai ‘0’ secara hardware saat mikrokontroler melompat ke Interrupt Service Routine.
- IE1
diberi nilai ‘1’ secara hardware
saat terdapat External Interrupt 1. IE1 akan diberi nilai ‘0’ secara hardware
saat interrupt diproses.
- IT1
bernilai ‘1’ untuk menentukan
falling edge sebagai trigger atau
pemicu pada External Interrupt 1. IT1
bernilai ‘0’ untuk menentukan low level sebagai trigger atau pemicu pada
External Interrupt 1.
- IE0
diberi nilai ‘1’ secara hardware
saat terdapat External Interrupt 0. IE0 akan diberi nilai ‘0’ secara hardware
saat interrupt diproses.
- IT0
bernilai ‘1’ untuk menentukan
falling edge sebagai trigger atau
pemicu pada External Interrupt 0.
IT0 bernilai ‘0’ untuk menentukan low level sebagai trigger atau pemicu pada
External Interrupt 0.
Berikut ini adalah penjelasan
masing-masing bit SCON yang berkaitan dengan interrupt:
- T1
bernilai
‘1’ jika terdapat pengiriman secara serial. T1 harus diberi nilai ‘0’ oleh
program user untuk membersihkan interrupt.
- R1
bernilai
‘1’ jika terdapat penerimaan secara serial. R1 harus diberi nilai ‘0’ oleh program
user untuk membersihkan interrupt.
Dalam
mempelajari interrupt terdapat istilah Interrupt Vector Address dan Interrupt
Service Routine. Interrupt Vector Address adalah alamat yang akan dituju oleh
MCS-51 jika terjadi interrupt.
Interrupt Service
Routine adalah rutin yang akan dijalankan pada saat terjadi interrupt. Jika
rutin yang akan dijalankan sangat singkat, rutin tersebut dapat ditempatkan
pada alamat yang sama dengan Interrupt Vector Address. Namun penempatan
Interrupt Service Routine pada Interrupt Vector Address tidak disarankan karena
dapat ‘menerjang’ Interrupt Vector Address milik interrupt lain terutama jika
rutin yang diproses cukup panjang. Langkah lebih aman adalah dengan cara
memindah Interrupt Service Routine pada alamat lain dan memberikan instruksi
untuk lompatan ke alamat tersebut tepat pada Interrupt Vector Address yang
bersangkutan.
Intruksi
untuk keluar dari sebuah Interrupt Service Routine hanya dapat diberikan dengan
instruksi RETI (Return From Interrupt). Hal ini disebabkan adanya Interrupt
Control System pada mikrokontroler. Interrupt Control System memiliki semacam
Internal Interrupt Flag yang digunakan oleh CPU sebagai tanda apakah sebuah
rutin interrupt masih diproses atau sudah selesai. Internal Interrupt Flag ini
hanya dapat dibersihkan secara software dengan instruksi RETI dan bukan RET.
Jika
terjadi interrupt, maka interrupt flag akan bernilai ‘1’ pada bit yang
menunjukkan sumber interrupt. Jika CPU menemukan adanya interrupt pada saat
sampling, proses selanjutnya adalah sebagai berikut :
1. CPU akan
menjalankan instruksi LCALL yang akan menyimpan Program Counter (PC) ke stack
dengan urutan 8 bit terendah terlebih dahulu.
2.
Interrupt dengan prioritas sama atau lebih rendah akan dihalangi.
3. Jika
sumber interrupt berasal dari Timer/Counter atau External Interrupt, interrupt
flag yang bersangkutan akan dibersihkan.
4. PC akan diisi dengan alamat Interrupt Vector
Address (IVA) dari interrupt yang bersangkutan.
5. Interrupt Service Routine (ISR) akan diproses.
6. Setelah
ISR selesai diproses dan diakhiri dengan RETI, alamat PC akan diambil dari
stack untuk melanjutkan proses program utama
Instruksi LCALL tersebut
dikeluarkan secara hardware dan bukan dari program user. Instruksi ini hanya
akan dihalangi oleh tiga hal, yaitu :
a. CPU
sedang memproses interrupt lain yang prioritasnya sama atau lebih tinggi.
Interrupt tidak akan dapat menginterupsi interrupt lain dengan prioritas sama
atau lebih tinggi.
b. Cycle
saat itu bukan cycle terakhir dari eksekusi instruksi yang sedang diproses.
Semua instruksi yang sedang diproses akan diselesaikan sebelum melompat ke IVA.
c. Instruksi yang sedang diproses adalah RETI
atau mengakses register IE atau IP. Setelah menjalankan instruksi RETI atau
mengakses register IE atau IP, CPU akan menjalankan minimal satu instruksi
lagi.
Dalam
menggunakan interrupt, user sering melakukan beberapa kesalahan yang akan
mengakibatkan kekacauan program. Beberapa hal yang harus diperhatikan antara
lain:
- Pengamanan Nilai Register
Munculnya sebuah interrupt tidak
dapat diprediksi sehingga register dapat berubah kapan saja dan menjadi apa
saja. Misalkan user memiliki register bernilai 4h dan proses selanjutnya adalah
menambahkannya dengan 6h sehinggga didapat hasil Ah. Jika terjadi interrupt sebelum
proses penambahan terjadi dan register tersebut berubah menjadi 8h, maka hasil
yang didapat akan menjadi Eh. Pengamanan nilai register dapat dilakukan dengan
menggunakan instruksi PUSH. Register yang sering diamankan (karena sering
digunakan) antara lain : PSW, ACC, B, R0-R7, dan DPTR.
- Pengembalian Register
Register yang di-PUSH pertama harus
di-POP terakhir. Register yang di-PUSH terakhir harus di-POP pertama. Jika hal
ini dilanggar, maka nilai yang dikembalikan bukan nilai semula melainkan nilai milik
register lain.
- Penggunaan RETI
Penggunaan RET memang akan
mengembalikan alamat semula. Namun CPU akan tetap berpikir bahwa CPU masih
menjalankan sebuah interrupt dan belum menyelesaikannya. Interrupt harus
diakhiri dengan RETI.
External
Interrupt bersumber dari luar 1C MCS-51. MCS-51 menyediakan dua External
Interrupt yang menggunakan pin INT0 (P3.2) dan INT1 (P3.3).
Adanya trigger pada pin INT0 akan mengakibatkan IE0 bernilai ‘1’.
Sedangkan adanya trigger pada pin INT1 akan mengakibatkan IE1 bernilai
‘1’. Trigger atau pemicu interrupt ini ada dua tipe, yaitu falling edge trigger
dan low level trigger.
Pada
falling edge trigger, interrupt akan dianggap valid jika pin yang bersangkutan
bernilai high selama minimal 1 machine cycle dan bernilai low selama minimal 1
machine cycle berikutnya. Interrupt flag akan dibersihkan secara hardware saat
CPU melompat ke vector address. Pada low level trigger, external interrupt
harus bernilai low hingga interrupt flag bernilai ‘1’. Kemudian external
interrupt harus dikembalikan ke nilai high sebelum CPU menganggapnya sebagai
sebuah interrupt lagi.
CPU akan
melakukan sampling terhadap kondisi interrupt flag pada S5P2 pada tiap machine
cycle. Namun nilai ini baru akan di-polling pada cycle selanjutnya. Jika
interrupt tersebut valid maka instruksi yang diproses selanjutnya adalah LCALL
ke vector address. Instruksi LCALL membutuhkan waktu 2 machine cycle, sehingga
proses sejak adanya interrupt hingga instruksi pertama pada service routine
membutuhkan waktu minimal 3 machine cycle.
2.1.6 Perangkat Instruksi
Ada beberapa instruksi yang dikenal oleh mikrokontroler
AT89C51 yaitu:
·
Instruksi aritmetika
·
Intruksi logika dan manipulasi bit
·
Instruksi transfer data
·
Instruksi percabangan
Instruksi-instruksi
tersebut dijelaskan berikut ini.
1.
Instruksi Aritmetika
Intruksi aritmetika mencakup penambahan (ADD),
pengurangan (SUBB), perkalian (MUL), dan pembagian (DIV).
a. Penambahan
(ADD)
Instruksi ini menjumlahkan suatu data dengan isi akumulator
dan hasilnya disimpan dalam akumulator.
Operasi ADD : A←A+data
b. Pengurangan
(SUBB)
Instruksi ini mengurangkan isi akumulator dengan isi carry
flag dan isi data.
Operasi SUBB : A←A-C-data
c. Perkalian
(MUL)
Instruksi ini mengalikan isi akumulator dengan isi register
B.
Operasi MUL : AB←A*B
d. Pembagian
(DIV)
Instruksi ini akan membagi isi register akumulator dengan isi
register B. Operasi DIV :
AB←A/B
e. Penambahan
satu (INC)
Proses ini menambahkan satu pada isi suatu register atau
memori.
Operasi INC A : AB←A+B
f. Pengurangan
Satu (DEC)
Proses ini kebalikan dari proses pengurangan satu.
2.
Instruksi Logika Dengan Manipulasi Bit
Instruksi logika dan manipulasi bit terdiri dari :
a.
Logika AND (ANL)
Instruksi ini melakukan proses logika AND antara suatu
register dengan register, register dengan data, carry flag dengan suatu
alamat, dan lain- lain.
#1
|
#2
|
HASIL
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
Table…. Operasi AND
Sebagai
contoh, misalnya akumulator berisi 1011 1011B dan register R0 berisi 0100 1100B
dengan instruksi ANL A, R0 menyebabkan isi akumulator menjadi sebagai berikut :
A : 1011 1011
B : 0100 1100
0000
1000 → akumulator akan berisi 0000 1000B atau 08H
Format instruksi AND :
ANL A, @Rr
ANL A, #data
ANL alamat data, A
ANL alamat, #data
b.
Logika OR (ORL)
Instruksi
ini melakukan logika OR antara suatu register dengan register, register dengan
data, carry flag dengan isi suatu alamat bit.
#1
|
#2
|
HASIL
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
Table … Operasi OR
Format
instruksi OR :
ORL
A, @Rr
ORL
A, #data
ORL
alamat data, A
ORL
A, alamat data
c.
Logika
NOT (CPL)
Instruksi ini melakukan proses
logika NOT pada suatu reegister, carry
flag, atau isi suatu alamat bit.
#1
|
HASIL
|
0
|
1
|
1
|
0
|
Tabel … Operasi NOT
Format
instruksi NOT:
CPL A
CPL
alamat bit
d.
Logika EXOR (XRL)
Instruksi
ini melakukan proses logika exlusive-OR antara register dengan register,
register dengan data, dan lain-lain.
#1
|
#2
|
HASIL
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
0
|
Table … Operasi EXOR
e.
Manipulasi Pengesetan (CLR)
Instruksi ini menyebabkan suatu bit menjadi reset atau nol
Format instruksi CLR :
CLR
A
CLR
alamat bit
f.
Manipulasi Bit Pengesetan (SETB)
Instruksi ini akan mengeset bit yang dimaksud (atau 1)
Format instruksi SETB :
SETB
C
SETB
bit
g.
Manipulasi Bit Pengisian (MOV)
Instruksi ini akan mengisi suatu data dalam bentuk byte.
Format instruksi MOV :
MOV
@Rr, A
MOV
A, @Rr
MOV
@Rr, #data
MOV
@Rr, alamat data
MOV
A, alamat data
h.
Manipulasi Lompat
Program counter akan meloncat ke alamat yang dikehendaki.
Format instruksinya :
JC
alamat kode
JNC
alamat kode
3.
Instruksi Transfer Data
Kelompok
instruksi ini digunakan untuk memindahkan data antara :
a.
register-register
b.
memori-memori
c.
register-memori
d.
antarmuka-register
e.
antarmuka-memori
Contoh
:
MOV
A, R0 : Pindahkan isi register R0 ke akumulator.
MOV
A, @R0 : Pindahkan isi memori yang alamatnya ditunjukkan oleh register R0 ke
akumulator.
MOV
A, P3 : Pindahkan isi port 3 ke akumulator.
4.
Instruksi Percabangan
Instruksi
percabangan ini dibagi dua yaitu percabangan dengan syarat dan percabangan
tanpa syarat.
Percabangan
dengan syarat terdiri atas :
a.
CJNE
Instruksi
ini akan membandingkan isi register atau isi memori dengan suatu data. Bila
hasil perbandingan itu sama, instruksi selanjutnya yang akan dituju. Bila tidak
sama, instruksi yang ditunjuk oleh label yang akan dilaksanakan.
Format
instruksi CJNE :
CJNE A, @Rr
b.
DJNZ
Instruksi
ini akan mengurangi isi register atau memori dengan satu. Bila sudah 0,
instruksi selanjutnya akan dilaksanakan dan bila belum 0 instruksi dilanjutkan
ke label.
Format
instruksi DJNZ :
DJNZ
Rr, alamat kode
DJNZ
alamat data, alamat kode
c.
JBC
Instruksi
ini akan menguji suatu alamat bit. Apabila alamat bit berisi 1 (set) bit
tersebut akan di clear dan selanjutnya program menuju tabel. Bila alamat
bit berisi 0, instruksi selanjutnya yang akan dieksekusi.
Format
instruksi JBC :
JBC
alamat bit, alamat kode
Percabangan
tanpa syarat meliputi :
d.
Long Jump (LJMP)
Format
instruksi Long Jump :
LJMP alamat kode
e.
Short Jump (SJMP)
Format
instruksi Short Jump :
SJMP alamat kode
2.1.7 Reset
Proses
Reset merupakan proses untuk mengembalikan sistem ke kondisi semula. Reset
tidak mempengaruhi internal program memory. Reset terjadi jika pin RST bernilai
high selama minimal 2 machine cycle lalu kembali bernilai low. Power-on reset
merupakan proses reset yang berlangsung secara otomatis pada saat sistem pertama
kali diberi daya. Proses ini mempengaruhi semua register dan internal data
memory.
Dengan
asumsi bahwa frekuensi kristal yang digunakan adalah sebesar 12 MHz, maka pin
RST harus bernilai high selama 2 mikrodetik.
Dengan
rumus : Vcap = VCC x (1 – e-ͭ/τ)
Didapat
persamaan : VRST = VCC x e-ͭ/τ
Dimana : VRST = 0,7 VCC
τ = RC
t = 2µs
maka
didapat nilai RC = 5,61 µs. Meskipun nilai ini secara teori mencukupi, namun
pada kenyataannya, nilai RC yang umum dipakai adalah 82 ms. Jika nilai C
ditentukan dengan mengambil nilai C yang umum yaitu 10 µF, maka akan didapat
nilai sebesar 8K2 Ohm. Mengapa perbedaan nilai RC antara teori dan kenyataan
berbeda sangat jauh ? Hal ini disebabkan oleh beberapa hal, antara lain :
- Waktu
steady state catu daya
Catu daya membutuhkan waktu
beberapa milidetik untuk mencapai tegangan 5 volt. Hal ini juga akan
mempengaruhi pengisian tegangan pada kapasitor rangkaian reset.
- Oscillator membutuhkan waktu
untuk mulai bekerja.
Oscillator membutuhkan beberapa milidetik
untuk mulai bekerja. Jika oscillator belum bekerja pada saat siklus rangkaian
reset selesai, maka mikrokontroler tidak akan mendapatkan reset. Jika
diinginkan, pin RST juga dapat diberi rangkaian manual reset. Pemberian
rangkaian ini membuat sistem dapat di-reset oleh user setiap saat dengan
menekan tombol reset
Penambahan
resistor 100 ohm bertujuan untuk membatasi arus dari VCC yang masuk ke pin RST
pada saat tombol reset ditekan. Sedangkan penambahan dioda bertujuan untuk
mempercepat proses pembuangan arus pada saat terjadi reset tidak sempurna.
Ilustrasi
pada gambar 38 menunjukkan terjadinya beberapa macam reset yang dapat terjadi
pada rangkaian tanpa dioda. Reset tidak sempurna dapat dianggap oleh MCS-51
sebagai reset yang valid. Namun karena prosesnya berlangsung terlalu cepat
(kurang dari 2 machine cycle), maka proses reset yang terjadi tidak sempuna dan
dapat mengakibatkan mikrokontroler bekerja tidak sempurna. Dengan adanya dioda
yang memiliki resistensi kecil, maka pada saat tegangan kapasitor menurun, arus
dapat terbuang dengan cepat. Hal ini akan memberi cukup waktu untuk melakukan
reset yang sempurna.
Untuk
aplikasi dimana konsumsi daya harus dibatasi, MCS-51 menyediakan dua mode untuk
menghemat daya. Kedua mode tersebut adalah idle mode dan power mode. Rangkaian
internal pada MCS-51 untuk keduanya terdapat pada gambar
1. IDLE MODE
Pada
gambar dapat dilihat bahwa adanya nilai
‘0’ pada bit IDL (dengan memberikan nilai ‘1’ pada bit IDL dalam PCON
untuk mengaktifkan idle mode), hanya akan menghentikan pulsa clock pada CPU.
Akibatnya proses kerja CPU akan terhenti. Pada mode ini berlaku kondisi :
- Sinyal
clock hanya akan dihubungkan ke fungsi interrupt, timer,
dan serial
port. Hubungan dengan fungsi lain akan diputus.
- Data pada
register akan disimpan
- Semua
port akan mempertahankan nilai terakhir
- ALE dan
PSEN bernilai high
Cara untuk
keluar dari mode ini adalah dengan adanya interrupt atau reset. Adanya
interrupt akan memberi nilai ‘0’ pada bit IDL dalam PCON sehingga idle mode
akan dimatikan. Setelah adanya RETI diakhir interrupt service routine, program
akan menuju ke baris instruksi setelah instruksi yang mengaktifkkan idle mode.
Adanya reset akan mengembalikan register PCON ke nilai default dimana bit IDL
bernilai ‘0’ sehingga idle mode tidak aktif
2. POWER DOWN MODE
Pada gambar 39 dapat dilihat bahwa
adanya nilai ‘0’ pada bit PD (dengan memberikan nilai ‘1’ pada bit PD
dalam PCON untuk mengaktifkan power down). Akibatnya proses kerja CPU dan
interrupt
akan terhenti. Pada mode ini
berlaku kondisi :
- Semua aktivitas (on-chip
oscillator dan fungsi IC) akan dihentikan
- Data pada internal memory
(termasuk SFR) akan disimpan
- Semua port akan mempertahankan
nilai terakhir
- ALE dan PSEN berlogika low
Satu-satunya cara untuk keluar dari
mode ini adalah dengan melakukan reset. Adanya reset akan mengembalikan
register PCON ke nilai default dimana bit PD bernilai ‘0’ sehingga power down
tidak aktif. Reset tidak akan mempengaruhi data dalam internal memory (kecuali
SFR).
2.1.8
Metoda Pengalamatan
Addressing
adalah proses mengakses sebuah lokasi memori, baik untuk pembacaan ataupun
penulisan. Cara untuk mengakses lokasi memori dapat digolongkan ke dalam
beberapa kelompok, antara lain : direct, indirect, dan immediate.
1. Register
Addressing
Register Addressing adalah proses
mengakses memori dengan label antara R0 hingga R7
Contoh :
MOV A, R1
Jika register bank yang digunakan
adalah register bank 0, maka nilai pada alamat 01h (R1) akan diisikan ke
Accumulator.
2. Direct Addressing
Sesuai dengan namanya, Direct
Addressing adalah mengakses sebuah lokasi memori secara langsung dengan
menggunakan alamatnya.
Contoh :
MOV A, 47h
Isi dari alamat 47h akan langsung
dipindah ke Accumulator.
3. Indirect Addressing
Indirect Addressing adalah proses
mengakses alamat secara tak langsung.
Contoh: MOV
A, @R0
Misalkan R0 berisi 35h dan alamat
35h berisi 60h. Pada saat instruksi tersebut diproses. CPU akan memeriksa isi
R0. Karena R0 berisi 35h, maka CPU akan mengambil isi dari alamat 35h tersebut
kemudian diisikan ke Accumulator. Diakhir proses Accumulator akan menyimpan
nilai 60h.
4. Immediate Addressing
Immediate Addressing adalah proses
mengisi suatu alamat memori dengan suatu nilai tertentu.
Contoh :
MOV A, #30h
Nilai 30h akan langsung diisikan ke
dalam Accumulator.
5. Relative Addressing
Relative Addressing digunakan pada
instruksi untuk melompat ke alamat tertentu. Pada Relative Addressing. sebuah
Relative Address atau Offset selebar 8 bit akan dijumlahkan dengan Program
Counter sehingga menjadi alamat yang dituju. Karena Relative Address hanya
selebar 8 bit, maka Relative-Addressing hanya dapat dipakai untuk melompat
dalam jangkauan 128 byte ke belakang hingga 127 byte ke depan (-l28 s/d+ 127).
Contoh : SJMP SINI
Misalkan alamat instruksi tersebut
berada pada 1100h dan 1101h sedangkan alamat label SINI adalah 1120h. Setelah
instruksi tersebut diproses, PC meniadi bernilai 1102h. Berarti Relative
Address-nya bernilai Fh (1102h + 000Fh = 1120h). Jika alamat label SINI 10F2h,
maka Relative Address-nya bernilai -16 atau F0h. Dalam perhitungannya F0h akan
diubah dalam 16 bit hingga menjadi FFF0h (1102h + FFF0h = 10F2h). Relative
Addressing lebih fleksibel dipakai karena tidak terpengaruh oleh lokasi memori,
namun jangkauannya terbatas.
6. Absolute Addressing
Absolute Addressing adalah melompat
atau memanggil alamat yang dituju dengan menyatakan lokasi alamatnya secara
langsung (tidak menggunakan offset). Absolute Addresing hanya digunakan dalam
AJMP dan ACALL. Kapasitas internal program memory sebesar 64 KB dibagi menjadi
32 pages dengan kapasitas masing-masing page sebesar 2 KB (0000h - 07FFh, 0800h
- 0FFFh, dst.). Alamat yang dituju langsung dinyatakan dalam 16 bit dimana 5bit
teratas menunjukkan 2 KB page dan 11 bit terbawah menunjukkan alamat dalam 2 KB
page tersebut. Saat Absolute Addressing digunakan, bagian yang berubah hanyalah
11 bit terbawah, sedangkan 5 bit teratas tetap.
Contoh :
AJMP SINI
Misalkan alamat instruksi tersebut
berada pada 1810h (0001100000010000b) dan 1811h (0001100000010001b) sedangkan
alamat label SINI adalah 1F1Fh (0001111100011111b). Semua alamat memiliki 5 bit
teratas yang sama (00011) sedangkan l1 bit sisanya bernilai sesuai alamat yang
dituju, yaitu 11100011111. Jangkauan Absolute Addressing lebih jauh dari pada
Relative Addressing, namun jangkauannya hanya dalam 2 KB page yang sama. Oleh
karena itu Absolute Addressing tidak dapat digunakan untuk melompat dari alamat
07F0h (0000011111110000b) ke alamat 0810h (0000100000010000b) meskipun jarak
keduanya hanya sebesar 20h.
7. Long Addressing
Long Addressing adalah melompat
atau memanggil alamat yang dituju dengan menyatakan lokasi alamatnya secara
langsung (tidak menggunakan offset). Long Addressing hanya digunakan dalam LJMP
dan LCALL. Alamat yang dituju dinyatakan dalam 16 bit yang dapat dipakai
semuanya sehingga dapat melompat sejauh mungkin dalam jangkauan 64 KB.
Contoh : LJMP SINI
Jangkauan Long Addressing paling
jauh daripada Relative atau Absolute Addressing, namun instruksi Long
Addressing memiliki lebar 3 byte sedangkan Relative dan Absolute Addressing
masing-masing hanya selebar 2 byte.Untuk program-program yang memiliki ruang program
memori terbatas, akan lebih baik jika Long Addressing hanya digunakan untuk
melompat ke lokasi yang berada di luar jangkauan Relative dan Absolute
Addressing.
8. Indexed Addressing
Indexed Addressing adalah proses
mengakses suatu alamat dengan menggunakan indeks dan register basis (berupa
DPTR atau PC). Instruksi yang menggunakan Indexed Addressing adalah : MOVC A,
@A+<register basis> dan JMP @A+DPTR.
Contoh :
MOVC A, @A+DPTR
Misalkan DPTR berniat 1000h,
Accumulator bemilai 2h, dan alamat 1002h menyimpan nilai FFh. Saat instruksi
tersebut diproses, CPU akan mengambil data pada alamat 1002h (1000h + 2h) dan mengisikannya
ke Accumulator. Diakhir proses, Accumulator akan menyimpan nilai FFh. Indexed
Addressing ini umumnya digunakan untuk mengakses lookup table. Dengan
menetapkan nilai register basis terlebih dahulu, user hanya perlu mengubah
nilai Accumulator untuk mendapatkan nilai dalam tabel.
2.2 Sensor Ultrasonik PING))) USSIR
Sensor
jarak ultrasonik PING))) adalah sensor 40 khz produksi parallax Inc. yang banyak digunakan untuk aplikasi atau kontes
robot cerdas. Kelebihan sensor ini adalah hanya membutuhkan
1 sinyal ( SIG ) selain jalur 5 v dan ground. Perhatikan gambar dibawah ini :
Gambar
2.1 Sensor jarak ultrasonik ping
Gambar
2.2 Instalasi Sensor Ping
Sensor ultrasonik PING))) mempunyai 3 pin kepala (header) untuk jalur power suplay (5
), groound, signal (I/O bi-directional). Pin
tersebut identik denganpin motor servo.
Spesifikasi sensor ini
:
a.
Tegangan
catu daya sebesar 5
b.
Kisaran pengukuran 3cm - 3m.
c.
Arus
catu sebesar 30 mA – 35 mA
d.
Delay before next measurement 200uS.
e.
Burst indicator LED menampilkan
aktifitas sensor.
f.
Pulsa
gema (echo pulse) adalah pulsa TTL
positif, 115 µS – 18,5 mS
g.
Frekuensi
letupan (burst frequensi) sebesar 40
KHz untuk 200 µS
Gambar
2.3 Diagram Waktu Sensor Ping
Sensor
Ping mendeteksi jarak obyek dengan cara memancarkan gelombang ultrasonik (40 kHz) selama tBURST (200
μs) kemudian mendeteksi pantulannya. Sensor
Ping memancarkan gelombang ultrasonik sesuai dengan kontrol dari mikrokontroler pengendali (pulsa trigger
dengan tOUT min. 2 μs). Gelombang ultrasonik
ini melalui udara dengan kecepatan 344 meter per detik, mengenai obyek dan memantul kembali ke sensor.
Ping
mengeluarkan pulsa output high pada pin SIG setelah memancarkan gelombang ultrasonik
dan setelah gelombang pantulan terdeteksi
Ping akan membuat output low pada pin SIG. Lebar pulsa High (tIN) akan sesuai dengan lama waktu tempuh
gelombang ultrasonik untuk 2x jarak ukur dengan obyek.
Maka jarak yang diukur adalah [(tIN s x 344 m/s) ÷ 2] meter.
Gambar
2.4 Jarak Ukur Sensor Ping
2.3.
Sensor Warna TCS230
Fitur
·
Power: (2.7V to 5.5V)
·
Interface:Digital TTL
·
High-Resolution Conversion of Light Intensity to Frequency
·
Programmable Color and Full-Scale Output Frequency
·
Power Down Feature
·
Communicates Directly to Microcontroller
·
Size: 28.4x28.4mm
TCS230
Warna daughterboard Sensor adalah detektor warna lengkap, termasuk sebuah chip
TCS230 Taos sensor RGB, LED putih, lensa kolimator, dan standoffs untuk
mengatur jarak penginderaan optimal. Ini plugs langsung ke Motherboard
Stamp 2PE-BASIC atau Backpack Propeller dan juga akan antarmuka untuk setiap
modul BASIC Stamp lainnya atau papan Propeller menggunakan opsional DB-Expander SIP Converter . Para TCS230-DB
dapat mendeteksi dan mengukur berbagai hampir tak terbatas warna
terlihat. Aplikasi termasuk tes membaca strip, menyortir menurut warna,
penginderaan cahaya lingkungan dan kalibrasi, dan pencocokan warna, untuk nama
hanya beberapa.
Para
TCS230 memiliki berbagai photodetectors, masing-masing dengan baik filter
merah, hijau, atau biru, atau tidak ada filter (jelas). Filter setiap
warna didistribusikan secara merata di seluruh array untuk menghilangkan bias
lokasi antara warna. Internal untuk perangkat ini sebuah osilator yang
menghasilkan keluaran gelombang persegi yang frekuensi sebanding dengan
intensitas warna yang dipilih. Baca dokumentasi di bawah ini dan memeriksa Demo
Pencocokan Warna untuk informasi lebih rinci.
Telah dilakukan penelitian
karakterisasi sistem sensor warna TCS230. Pada penelitian ini bertujuan untuk
mengetahui karakteristik frekuensi keluaran sensor warna TCS 230 serta nilai
RGB suatu jenis warna. Sensor warna TCS230 mengkonversikan besaran fisis yang
berupa cahaya (warna) menjadi sinyal listrik yang berupa frekuensi gelombang.
Prinsip kerja pada penelitian ini
adalah kertas melewati sensor TCS 230, dari tampilan akan terlihat besarnya
data RGB serta besarnya frekuensi keluaran masing-masing warna. Dari data yang
didapat besarnya frekuensi referensi untuk filter merah, filter biru dan filter
hijau adalah 80,94 Hz, 91,73 Hz dan 98,28 Hz.
Frekuensi referensi tersebut
digunakan untuk mencari nilai RGB suatu warna dari frekuensi keluaran sensor.
Hasil dari penelitian, seperti pada frekuensi keluaran warna ungu untuk filter
merah, hijau dan biru berturut-turut adalah 18.94 KHz , 6.15 KHz dan 21.52 KHz
maka nilai RGB yang dihasilkan adalah R = 234, G= 67 dan B=219
2.6.
Sistem Pengirim dan Penerima SMS
2.6.1 Sms (short message service)
Sms merupakan salah satu layanan pesan teks yang di
kembangkan dan distandarisasi oleh suatu badan yang bernama ETSI (European
Telecomunication Standards Institute) sebagai bagian dari pengembangan GSM
Phase 2, fitur SMS ini memungkinkan perangkat Stasiun Seluler Digital (Digital
Celluller Terminal, seperti ponsel) untuk dapat mengirim dan menerima pesan -
pesan teks dengan panjang sampai dengan 160 karakter melalui jaringan GSM .
(ETSI, 1996).
Sms dapat dikirimkan ke perangkat Stasiun Seluler
Digital lainnya hanya dalam beberapa detik selama berada pada jangkauan
pelayanan GSM. Lebih dari sekedar pengiriman pesan biasa, layanan SMS
memberikan garansi SMS akan sampai pada tujuan meskipun perangkaft yang di tuju
sedang tidak aktif yang dapat disebabkan karena sedang dalam kondisi masih atau
berada di luar jangkauan layanan GSM.
Jaringan SMS akan menyiimpan sementarapesan yang
belum terkirim, dan akan segera mengirimkan ke perangkat yang dituju setelah
adanya tanda kehadiran dari perangkat di jaringan tersebut.
Dengan fakta bahwa layanan SMS (melalui jaringan
GSM) mendukung jangkauan/jelajah nasional dan internasional dengan waktu
keterlambatan yang sangat kecil, memungkinkan layanan SMS cocok untuk
dikembangkan sebagai aplikasi - aplikasi seperti : pager, email, dan notifikasi
voice mailm serta layanan pesan banyak pemakai (multiple users).
2.6.2 GSM
Global System for Mobile Communication disingkat GSM
adalah sebuah teknologi komunikasi selular yang bersifat digital. Teknologi GSM
banyak diterapkan pada komunikasi bergerak, khusunyatelepon genggam. Teknologi ini
memanfaatkan gelombangmikro dan pengiriman sinyal yang dibagi berdasarkan
waktu, sehingga sinyal informasi yang dikirim akan sampai pada tujuan. GSM
dijadikan standar global untuk komunikasi selular sekaligus sebagai teknologi
selular yang paling banyak digunakan orang di seluruh dunia.
Mengetahui bagaimana proses pengiriman sms
berlangsung, kita perlu lebih dulu mengetahui arsitektur jaringan yang dipakai.
Di Indonesia ada 2 macam teknologi jaringan seluler yang cukup populer, yaitu
GSM dan CDMA. Teknologi jaringan ini selalu mengalami perkembangan dan tentunya
menawarkan berbagai kelebihan, diantaranya teknologi WCDMA, UMTS (3G) , CDMA
2000 dan yang menyediakan segala jenis kelebihan layanan dari sebelumnya. Namun
topik pokok pembahasan artikel kita kali ini akan lebih fokus pada arsitektur
jaringan GSMnya, atau teknologi 2G.
Gbr. 2.11 Arsitektur Jaringan GSM
2.6.3 Komponen
Umum transmisi GSM
Dalam jaringan GSM umumnya ada beberapa perangkat
pokok vital yang harus ada, diantaranya BTS, BSC, MSC/VLR, HLR dan SMSC.
Berikut ini penjelasan masing-masing perangkat.
·
Base Transceiver Station (BTS)
BTS berfungsi
sebagai perangkat transceiver untuk melakukan komunikasi dengan semua
handset/Mobile Station (MS) yang aktif dan berada dalam area cakupannya (cell).
BTS melaksanakan proses modulasi/demodulasi sinyal, equalisasi sinyal dan
pengkodean error (error coding). Beberapa BTS dapat terhubung dengan sebuah BSC
(Base Station Controller), sementara itu radius cakupan dari suatu cell
berkisar antara antara 10 sampai 200 m untuk cell terkecil hingga beberapa
kilometer untuk cell terbesar. Sebuah BTS biasanya dapat melayani 20-4-
komunikasi panggilan secara bersamaan,
·
Base Station Controller (BSC)
BSC menyediakan
fungsi pengaturan pada beberapa BTS yang dikendalikannya. Diantaranya fungsi
handover, konfigurasi cell site, pengaturan sumber daya radio, serta tuning
power dan frekuensi pada suatu BTS. BSc merupakan simpul (konsentrator) untuk
menghubungkan dengan core network. Dalam jaringan GSM umumnya sebuah BSc dapat mengatur
70 buah BTS.
·
Mobile Switching Center (MSC) dan Visitor Location Register
(VLR)
MSC berfungsi
melakukan fungsi switching dan bertanggung jawab untuk melakukan pengaturan
panggilan, call setup, release, dan routing. MSC juga melakukan fungsi billing
(terhubung ke billing system) dan sebagai gateway ke jaringan lain. VLR berisi
informasi user yang bersifat dinamis yang sedang “attach” berada pada jaringan
mobile, termasuk letak geografis. Biasanya VLR terintegrasi dengan MSC.
Dari MSC sebuah
jaringan berkomunikasi dengan jaringan luar, misalnya : jaringan telepon
rumah/Public Switched Telephone Network (PSTN), jaringan data Integrated
Services Digital Network (ISDN), Circuit Switched Public Data Network (CSPDN)
dan Packet Switched Public Data Network (PSPDN).
·
Home Location Register (HLR)
HLR adalah
perangkat yang berisi data detail untuk tiap subscriber. Sebuah HLR umumnya
mampu berisi ribuan sampai jutaan data pelanggan. Informasi yang ada HLR antara
lain Mobile Station ISDN Number (MSISDN), International Mobile Subscriber
Identify (IMSI), profile service subscriber, dll. Untuk komunikasi dengan
elemen jaringan lain, HLR menggunak prokotol MAP (Mobile Aplication Part)
·
Short Message Service Center (SMSC)
SMSC mempunyai
peran penting dalam arsitektur sms. SMSC berfungsi menyampaikan pesan sms antar
Mobile Station (MS)/HP, dan juga melakukan fungsi store-and-forwading sms jikka
nomor penerima sedang tidak dapat menerima pesan. Didalam jaringannya sebuah
operator dapat mempunyai lebih dari satu perangkat SMSC, sesuai besar trafik
sms jaringan tersebut. SMSC dapat berkomunikasi dengan elemen lain seperti MSC,
dan HLR dengan menggunakan protokol MAP. Seiring berkembangnya layanan, SMSC
juga dapat berkomunikasi dengan server aplikasi menggunakan sebuah protocol
yang cukup populer yaitu, Short Message Peer to Peer Protocol (SMPP).
Comments
Post a Comment