Bahasa Assembly
menggantikan kode-kode biner dari bahasa mesin dengan mnemonic yang
mudah diingat sehingga dapat memudahkan dalam penulisan program.
Program bahasa assembly
adalah sebuah program yang terdiri atas label-label, mnemonic dan
lain sebagainya. Bahasa assembly sering juga disebut kode sumber atau
source code,
program ini tidak dapat dijalankan oleh prosessor tetapi harus
diterjemahkan terlebih dahulu kedalam program bahasa mesin.
Program bahasa mesin adalah sebuah program yang mengandung kode-kode
biner yang merupakan intruksi yang bisa dipahami oleh prosesor.
Program bahasa mesin sering disebut sebagai kode objek, yang dapat
dijalankan atau dikerjakan oleh prosesor.
Program sumber assembly
merupakan program yang ditulis oleh pembuat program berupa kumpulan
baris-baris perintah. Program ini ditulis menggunakan perangkat lunak
teks editor seperti Notepad pada Windows atau Editor DOS. Baris-baris
program yang mengandung intruksi mesin atau pengarah assembler harus
mengikuti aturan program assembler ASM51. Masing-masing baris atas
beberapa bagian atau field
yang dipisahkan dengan spasi atau tabulasi.
Bentuk program sumber assembly dapat dilihat pada gambar 2.6, yang
terdiri dari bagian label, bagian mnemonic, bagian operand, dan
terakhir bagian komentar.
Label, Sebuah
label mewakili suatu alamat dari intruksi yang bersangkutan. Label
ini digunakan sebagai operand pada intruksi pencabangan sepert JUMP.
Dengan demikian label selalu mewakili nomor memori program dan harus
ditulis dibagian awal baris intruksi.
Untuk membuat sebuah label, ada beberapa persyaratan yang harus
dipenuhi, dimana persyaratan ini adalah, sebagai berikut :
- Harus diawali dengan huruf
- Tidak diperbolehkan adanya label yang sama dalam satu program assembly
- Maksimal 16 karakter
- Dan tidak diperbolehkan adanya karakter spasi dalam label
Label juga dikenal sebagai symbol,
yaitu satu nilai tertentu diwakili oleh satu nama, dan nilai tersebut
bisa berupa apa saja tidak harus sebuah nomor memori program. Cara
penulisan simbol dan label adalah sama, harus diawali dengan sebuah
huruf dari baris intruksi.
Mnemonic, atau
bisa juga disebut kode operasi (Opcode)
adalah kode-kode yang akan dikerjakan oleh program assembler yang ada
pada komputer ataupun mikrokontroler. Kode operasi yang dikerjakan
oleh mikrokontroler merupakan perintah atau intruksi, seperti ADD,
MOV, DJNZ dan lain-lain. Sedangkan mnemonic yang digunakan untuk
mengatur kerja dari program assembler, seperti ORG, EQU, DB, kode
operasi yang dikerjakan oleh program assembler yang ada pada komputer
ini dinamakan sebagai Assembler
Directive.
Operand,
ditulis setelah bagian mnemonic yang merupakan pelengkap dari
mnemonic. Operand bisa berupa alamat atau data yang digunakan
intruksi yang berkaitan. Tergantung pada jenis intruksinya, operand
bisa juga berupa label yang mewakili alamat suatu data atau bisa
berupa simbol yang mewakili suatu data konstanta. Jumlah operand yang
dibutuhkan oleh sebuah mnemonic tidak selalu sama, sebuah mnemonic
dapat memiliki tiga, dua, satu atau bahkan tidak memiliki operand
seperti RET.
Komentar, bagian
yang tidak mutlak ada dalam sebuah program melainkan seringkali
dibutuhkan untuk menjelaskan proses-proses kerja ataupun
catatan-catatan tertentu pada bagian-bagian program. Penggunaan
komentar biasanya diawali dengan tanda “ ; “ (titik koma). Sebuah
komentar tidak hanya digunakan untuk menjelaskan satu baris perintah
saja, namun dapat juga digunakan untuk menjelaskan kinerja dari
beberapa baris perintah atau memberikan catatan-catatan tertentu.
Setelah program sumber ditulis menggunakan editor teks tersebut,
kemudian program sumber ini diterjemahkan ke bahasa mesin dengan
menggunakan program Assembler.
Program Assembler merupakan perangkat lunak yang
dibutuhkan untuk melakukan proses assembly
yang mengubah program sumber assembly
menjadi program objek dan assembly listing.
Program Objek adalah hasil utama dari sebuah
proses assembly
berupa kode-kode mesin yang hanya dikenal oleh mikroprosesor. Program
ini merupakan objek yang harus diisikan ke memori dari sistem
mikrokontroler setelah proses assembly dilakukan. Pengisian program
objek pada mikrokontroler biasanya ke dalam UV PEROM (Ultraviolet
Erasable Programmable Read Only Memory),
sedangkan untuk mikrokontroler buatan Atmel, program objek ini
diisikan ke dalam Flash PEROM yang terdapat di dalam chip AT89C51
atau jenis AT89C2051 lainnya.
Assembly Listing
merupakan hasil dari proses assembly dalam rupa campuran dari program
objek, program sumber assembly
dan alamat memori program. Assembly
Listing tersimpan dalam file dengan
ektensi LST, yang berguna sebagai sarana untuk menelusuri program
yang ditulis.
Dalam mikroprosesor memiliki perbedaan, yang harus
diperhatikan adalah setiap prosesor mempunyai kontruksi dan
intruksi-intruksi untuk mengendalikan masing-masing prosesor yang
berbeda, dengan demikian bahasa Assembly
untuk masing-masing prosesor juga berbeda, hanya pola dasar cara
penulisan program assembly
saja yang sama.
Bentuk proses Assembly
dapat dilihat pada gambar 2.7 dibawah ini.
![]() |
Gambar 2.7
Bentuk Kerja Proses Assembly
|
Dalam pembuatan program
pada mikrokontroler, terdapat beberapa jenis mode pengalamatan yang
perlu diketahui, mode pengalamatan tersebut antara lain sebagai
berikut :
- Pengalamatan Tak Langsung (Indirect Addressing).
Penyebutan mode secara tidak langsung ini digunakan untuk menunjuk
data yang berada di dalam memori, kalau memori penyimpan data ini
letaknya berubah-ubah sehingga nomor memori tidak disebut secara
langsung tapi di-titip-kan ke register lain. Pengalamatan
tidak langsung ditandai dengan tanda @ (at).
Contoh.
MOV A,@R0
…………………………
Register serba guna R0 dipakai untuk mencatat
nomor memori, sehingga intruksi ini mempunyai makna memori yang
nomornya tercatat dalam R0 isinya di-copy-kan
ke Akumulator A.
- Pengalamatan Langsung (Direct Addressing).
Penyebutan mode secara langsung ini digunakan untuk menunjuk data
yang berada di dalam memori dengan cara menyebut nomor memori tempat
data tersebut berada.
Contoh.
MOV A,$30
………………………………..
Data yang berada di dalam memori nomor $30
di-copy-kan
ke Akumulator.
- Pengalamatan Segera (Immediate Addressing).
Pengalamatan segera ini menyangkut operasi-operasi dengan suatu nilai
konstanta (yang sudah tetap), perintah ini ditandai dengan tanda #.
Contoh.
MOV A,#34H
………………………………….
Data konstan 34H di-copy-kan ke Akumulator A , atau dengan
kata lain isi A dengan 34 hexa.
- Pengalamatan Bit.
Pengalamatan bit pada sebuah operasi digunakan untuk mengalamati
suatu alamat secara bit.
Contoh.
SETB P1.2
CLR P1.2
………………………………….
Pada intruksi ini memberikan logika ‘1’ pada port 1.2, dan pada
intruksi kedua memberikan logika ‘0’ pada port 1.2.
- Pengalamatan Kode.
Pengalamatan Kode merupakan pengalamatan ketika operand merupakan
alamat dari intruksi jump dan call (ACALL, JMP, LJMP,
dan LCAAL). Biasanya operand tersebut akan menunjuk ke suatu alamat
yang telah diberi label sebelumnya .
Contoh.
Acall Delay
…………………………..
Delay :
Mov B,#0FFH
Loop A:
Djnz B,Loop A
Ret
Perintah Acall Delay mempunyai operand yang menunjuk ke label
Delay sehingga pada saat perintah ini dijalankan, program akan
melompat ke lokasi memori yang diberi label delay.
Memori adalah bagian
terpenting bagi mikrokontroler, memori terbagi 2 bagian yaitu :
- Memori program, memori ini digunakan untuk menyimpan program begitu direset mikrokontroler akan langsung bekerja dengan program yang ada didalamnya. Program akan selalu ada dan tersimpan meskipun tanpa power supply ataupun kehilangan catu daya. Memori program biasa disebut dengan ROM (Read Only Memory).
- Memori data, memori ini digunakan untuk menyimpan data pada saat program bekerja. Program akan selalu ada dan tersimpan jika power supply atau catu daya terhubung. Memori data biasa disebut dengan RAM (Random Access Memory).
Memori pada intinya berfungsi untuk menyimpan
suatu informasi. Memori penting bagi 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 lebih banyak. Mikrokontroler AT89C51 mempunyai struktur memori
yang terdiri atas :
- RAM Internal, memori sebesar 128 byte yang biasanya digunakan untuk menyimpan variabel atau data yang bersifat sementara.
- Special Function Register (Register Fungsi Khusus), memori yang berisi register-register yang mempunyai fungsi-fungsi khusus yang disediakan oleh mikrokontroler tersebut, seperti timer, serial, dan lain-lain.
- Flash PEROM, memori yang digunakan untuk menyimpan intruksi-intruksi MCS51.
- Mikrokontroler AT89C51 mempunyai struktur memori yang terpisah antara RAM internal dan Flash PEROM-nya. Seperti yang tampak pada gambar 2.4.
Memori data nomor 00h sampai 7Fh bisa dipakai sebagai memori
penyimpanan data biasa, dibagi menjadi tiga bagian yaitu :
- Memori nomor 00h samapi 18h selain sebagai memori data biasa, bisa juga dipakai sebagai register serba guna (General Purpose Register).
- Memori nomor 20h sampai 2Fh selain sebagai memori data biasa, bisa dipakai untuk menyimpan informasi dalam level bit.
- Memori nomor 30h sampai 7Fh (sebanyak 80 byte) merupakan data memori biasa, bisa dipakai untuk menyimpan data maupun dipakai sebagai tumpukan.
![]() |
Gambar 2.5
Organisasi Memori Mikrokontroler
|
Clock adalah sinyal yang diperlukan untuk
menjalankan mikrokontroler, sinyal clock dibangkitkan dengan
rangkaian osilator. Semua mikrokontroler MCS51
memiliki osilator on-chip, yang dapat digunakan sebagai sumber detak
(clock) ke CPU. Untuk menggunakannya, hubungkan sebuah resonator
kristal atau keramik di antara kaki-kaki XTAL1 dan XTAL2 pada
mikrokontroler dan hubungkan kapasitor ke ground, perhatikan gambar
2.3.
![]() |
Gambar 2.3
Hubungan Ke Kristal Pada Pin XTAL1(18) Dan XTAL2(19) |
XTAL yang digunakan pada mikrokontroler AT89C51 ada dua macam yaitu
XTAL dengan frekuensi maksimum :
- 12 MHz, untuk MCS51 dengan kode 12.
- 24 MHz, untuk MCS51 dengan kode 24.
IC
mikrokontroler AT89C51 mempunyai kesamaan
dengan IC 8051 buatan intel. Jumlah pin yang terdapat AT89C51 adalah
sebanyak 40-pin dan dikemas dalam bentuk yang berbeda, namun pada
dasarnya fungsi kaki yang ada pada IC tersebut memiliki persamaan.
![]() |
Gambar 2.1
Susunan Kaki AT89C51
|

Gambar 2.2
Kontruksi Dalam Chip
Susunan kaki dan kontruksi didalam chip ini sama persis dengan
mikrokontroler tipe lainnya seperti AT89C1051, AT89C2051,dan
AT89C4051, hanya saja ada perbedaan pada kapsitas Flash PEROM-nya.
Tabel dibawah ini menjelaskan susunan kaki AT89C51 dan fungsinya.
Tabel 2.1.
Deskripsi Pin
AT89C51
PIN
|
PORT
|
KETERANGAN
|
1...
8
|
P1.0 ... P1.7
|
Port 1
berfungsi sebagai I/O biasa.
Port ini mempunyai internal pull
up dan berfungsi sebagai input dengan memberikan logika 1.
|
9
|
RST
|
Pin yang berfungsi untuk mereset
Mikrokontroler AT89C51 ke keadaan awal.
|
10
|
P3.0
(RXD)
|
Sebagai
penerima data seri (Port Serial
input), dapat juga sebagai jalur
input/output.
|
11
|
P3.1
(TXD)
|
Sebagai
pengirim data seri (Port Serial
output), dapat juga sebagai jalur
input/output.
|
12
|
P3.2
(INT0)
|
Digunakan
sebagai sarana pembangkit interupsi 0 (Port
External Interrupt 0), dan dapat
digunakan sebagai sarana jalur input/output.
|
13
|
P3.3
(INT1)
|
Digunakan sebagai sarana
pembangkit interupsi 1 (Port External
Interrupt 1), dan dapat digunakan
sebagai sarana jalur input/output.
|
14
|
P3.4
(T0)
|
Digunakan sebagai sarana
pembangkit timer 0 eksternal (Port
External Timer 0 input), dapat juga
digunakan sebagai sarana jalur input/output.
|
15
|
P3.5
(T1)
|
Digunakan
sebagai sarana pembangkit timer 1 eksternal (Port
External Timer 1 input), dapat juga
digunakan sebagai sarana jalur input/output.
|
16
|
P3.6
(WR)
|
Digunakan sebagai jalur
input/output, selain itu port ini memiliki alternatif fungsi
yaitu sebagai sinyal kendali tulis, saat prosesor akan menulis
data ke memori I/O luar (External
Data Memory Write Strobe).
|
17
|
P3.7
(RD)
|
Digunakan sebagai jalur
input/output, selain itu port ini memiliki alternatif fungsi
yaitu sebagai sinyal kendali baca, saat prosesor akan membaca data
dari memori I/O luar (External Data
Memory Read Strobe).
|
18 dan 19
|
XTAL 1
XTAL 2
|
Input/Output Oscilator,
digunakan untuk menjalankan CPU. Umumnya
menggunakan kristal 12 MHz.
|
20
|
GND
|
Ground, masukan catu daya 0 volt
DC
|
21 ... 28
|
P2.0 ... P2.7
|
Port 2
berfungsi sebagai I/O biasa.
Port ini mempunyai internal pull
up dan berfungsi sebagai input dengan memberikan logika 1.
|
29
|
PSEN
|
Program Store Enable,
Pin ini berfungsi pada saat mengeksekusi program yang terletak
pada memori eksternal.
|
30
|
ALE
|
Pin
ini dapat berfungsi sebagai Address
Latch Enable (ALE) yang me-latch low
byte address pada saat mengakses memori eksternal.
ALE hanya akan aktif pada saat
mengakses memori eksternal.
|
31
|
EA
|
Pada
kondisi low,
pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan
menjalankan program yang ada pada memori eksternal setelah sistem
di-reset.
Jika berkondisi high, pin ini akan
berfungsi untuk menjalankan program yang ada pada memori internal.
|
32 ... 39
|
P0.7 ... P0.0
|
Port 0
berfungsi sebagai I/O biasa.
Port ini mempunyai internal pull
up dan berfungsi sebagai input dengan memberikan logika 1.
|
Mikrokontroler yaitu sebuah komponen elektronika
yang merupakan salah satu keluarga MCS-51, yang dibuat
dengan teknologi memori yang cocok dengan standar industri MCS -51.
Instruksi set pemrograman yang dipergunakan untuk memprogram IC
kontroler ini sama dengan dipergunakan untuk memprogram MCS-51.
Seperti umumnya komputer, mikrokontroler adalah alat yang mengerjakan
instruksi-instruksi yang diberikan kepadanya. Artinya, bagian
terpenting dan utama dari sistem komputerisasi adalah program itu
sendiri yang dibuat oleh programmer.
Program ini menginstruksikan komputer untuk melakukan koneksi yang
panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih
kompleks yang diinginkan oleh programmer.
Mikrokontroler AT89C51
bekerja sesuai dengan program yang diisikan kedalam memorinya seperti
layaknya sebuah komputer yang sangat sederhana. Aplikasi
yang digunakan dalam mikrokontroler hanya satu program saja yang bisa
disimpan, tidak seperti sistem komputer yang mampu menangani beberapa
macam aplikasi. Program mikrokontroler dapat diisikan secara
berulang-ulang dan dihapus. Bahasa program yang digunakan pada
mikrokontroler yaitu mnemonics sebagai bentuk bahasa assembly
sehingga dapat mempermudah pengguna berkomunikasi dengan suatu
aplikasi atau sistem.
Mikrokontroler MCS-51 Atmel dibagi dua jenis,
yaitu mikrokontroler yang memiliki 40 kaki setara dengan 8051, dan
mikrokontroler yang memiliki 20 kaki adalah MCS-51 yang
disederhanakan, penyederhanaan dilakukan dengan cara mengurangi jalur
input/output paralel. Penyederhanaan ini dimaksudkan untuk membentuk
mikrokontroler yang bentuk fisiknya sekecil mungkin tetapi memiliki
kemampuan yang sama.
Terbentuknya Mikrokontroler MCS51 diawali oleh
Intel Coorporation yang
mengenalkan IC Mikrokontroler tipe 8051 pada tahun 1980-an, dengan
bentuk yang sederhana dan harganya murah sehingga banyak digemari.
Dengan keadaan seperti ini banyak pabrik IC besar yang ikut
memproduksinya dengan tidak mengurangi keunggulan IC tersebut
melainkan menambah kemampuan pada mikrokontroler buatannya meskipun
semuanya masih dibuat berdasarkan tipe 8051. Sampai sekarang
mikrokontroler turunan tipe 8051 dibuat lebih dari 100 macam,
sehingga terbentuklah sebuah keluarga besar mikrokontroler dan biasa
disebut sebagai MCS51.
Salah satu pabrik yang ikut serta memproduksi IC
adalah atmel merupakan pabrik IC yang sangat menguasai teknologi
pembuatan Flash PEROM. Usaha atmel ternyata membuat terobosan baru
bagi keluarga MCS51, dengan adanya Flash PEROM yang bentuknya
sederhana dan harganya murah. Sehinga banyak orang untuk membuat alat
yang menggunakan mikrokontroler.
Atmel memproduksi tiga buah mikrokontroler mini
yaitu AT89C1051 dengan kapasitas Flash PEROM 1 Kilo Byte, AT89C2051
dengan kapasitas Flash PEROM 2 Kilo Byte, dan AT89C4051 dengan
kapasitas 4 Kilo Byte. Ketiga mikrokontroler ini secara umum disebut
dengan AT89Cx051.









