2.6.2. Perangkat Lunak Mikrokontroler AT89C52
[10,11]
Bahasa pemrograman yang digunakan untuk memprogram
IC Mikrokontroler AT89C52 adalah dengan menggunakan bahasa Assembly yang
biasanya disimpan dengan menggunakan ekstensi .ASM. Bahasa Assembly adalah
bahasa komputer yang kedudukannya di antara bahasa mesin (kumpulan kode biner
yang merupakan instruksi yang dapat dimengerti dan dijalankan oleh komputer
atau mikrokontroler) dan bahasa level tinggi (bahasa komputer yang memakai
kata-kata dan pernyataan yang mudah dimengerti oleh manusia), misalnya bahasa C
dan Pascal.
Mikrokontroler AT89C52 mempunyai beberapa instruksi, di
antaranya adalah :
a. Instruksi aritmatika
Instruksi aritmatika/ADD dapat dilaksanakan dengan 4
cara, yaitu :
-
ADD A,7FH pengalamatan langsung
-
ADD A@RO pengalamatan tak langsung
-
ADD A,R7 pengalamatan register
-
ADD A,#35H pengalamatan immediate
Untuk aritmatika BCD (Binary Coded Decimal), ADD
dan ADDC harus diikuti dengan operasi DA A (Decimal Adjust) untuk meyakinkan
hasil dari BCD, dimana DA A akan merubah nomor binary menjadi BCD.
b. Instruksi logika
Instruksi logika pada mikrokontroler AT89C52 memberikan
operasi boolean (AND, OR, EX-OR, dan NOT) dalam byte data. Semua instruksi
logika menggunakan akumulator pada pengoperasian pertama dalam sebuah siklus
mesin. Operasi logika dapat ditampilkan dalam sebuah byte ruang memori internal
data tanpda meninggalkan akumulator.
c. Instruksi perputaran
Instruksi perputaran (RL A dan RR A)
menggeser akumulator satu bit ke arah kiri atau kanan. Untuk pergeseran ke
kiri, MSB berputar ke arah LSB, untuk pergeseran ke kanan LSB berutar ke arah
posisi MSB. Variasi RL A dan RR A adalah pergeseran 9-bit yang menggunkan
akumulator dan membawa pengikut ke dalam PSW. Instruksi SWAP A mengubah posisi
tinggi ke posisi rendah dengan menggunakan akumulator.
d. Instruksi data transfer internal RAM
Instruksi ini memindahkan data dengan ruang memori
internal yang akan dilaksanakan pada satu atau dua siklus mesin. Format
instruksi ini adalah : MOV <tujuan> <sumber>
Menyediakan data untuk dipindahkan antar 2 internal RAM
atau lokasi SFR dengan keluaran melalui akumulator. Bagian atas 128 byte data
memori RAM hanya dapat diakses dengan pengalamatan langsung dan SFR hanya dapat
dikases dengan pengalamatan langsung.
e. Instruksi variabel boolean
Mikrokontroler AT89C52 memiliki sebuah prosesor boolean
yang lengkap (bit-tunggal). RAM internal mengandung 128 bit yang dapat
dialamati dan ruang SFR dapat mendukung hingga 128 bit yang dapat dialamati
lainnya. Semua jalur port juga merupakan bit yang dapat dialamati dan
masing-masing dapat diperlakukan sebagai port bit tunggal yang terpisah.
Instruksi-instruksi yang mengakses bit-bit ini tidak hanya di percabangan
bersyarat saja, namun lengkap meliputi instruksi-intruksi pemindahan data
(mov), set, clear, komplemen, OR, dan AND.
f. Instruksi
lompatan bersyarat
Instruksi pengetesan bit akan dilewati jika alamat bit
set (JC,JB,JBC) atau jika alamat bit tidak diset (JNC dan JNB). Semua bit PSW
adalah pengalamatan langsung, jadi parity bit atau flag yang digunakan secara
umum dapat juga digunakan sebagai bit instruksi set.
g. Instruksi
lompatan
Dalam
melakukan pembuatan program pada mikrokontroler AT89C52, ada beberapa jenis
pengalamatan yang biasa digunakan, yaitu:
1. Mode Pengalamatan Langsung (Direct Addressing
Mode)
Mode pengalamatan ini digunakan untuk
menunjuk data yang berada di suatu lokasi memori dengan cara menyebut lokasi
(alamat) memori tempat data tersebut berada, misalnya: MOV A, 50H. Instruksi
ini menyatakan bahwa data yang berada pada alamat 50H disalin ke akumulator A.
2. Mode Pengalamatan Segera (Immediate Addressing
Mode)
Mode pengalamatan segera digunakan
untuk pemindahan data konstan atau menggunakan konstanta, yaitu data yang
menyatu dengan instruksi. Contoh dari instruksi ini adalah MOV A, #40H.
Instruksi ini mempunyai arti bahwa data sebesar 40H disalin ke akumulator A.
3. Mode Pengalamatan Tidak Langsung (Indirect
Addressing Mode)
Mode pengalamatan ini digunakan untuk
mengakses data yang berada didalam memori namun lokasi memori tersebut tidak
disebut secara langsung tetapi disimpan dulu ke register lain, contohnya: MOV
A, @R0. Instruksi ini menyatakan bahwa data yang tersimpan pada memori yang
alamat lokasinya tersimpan pada R0 disalin ke Akumulator A.
4. Mode Pengalamatan Register (Register Addresing
Mode)
Mode pengalamatan ini digunakan untuk
mengakses data dari register sebagai tempat penyimpanan data yang praktis dan
kerjanya sangat cepat, misalnya MOV A,
R0. instruksi ini mempunyai arti bahwa data dalam register serba guna R0
disalin ke Akumulator A.
5. Mode Pengalamatan Kode Tidak Langsung (Code
Indirect Addressing Mode)
Mode
pengalamatan ini digunakan untuk penyebutan data dalam memori program yang dilakukan secara tidak langsung,
misalnya instruksi MOVC A,
@A+DPTR. Instruksi ini mempunyai arti bahwa data yang berada pada lokasi memori program yang
beralamat di DPTR (Data Pointer Register-2
Byte) ditambah dengan nilai yang tersimpan dalam Akumulator A (1 byte).