|
Microcontroller Kits
Programmer and
Target 89s51
Simple
Mikrokontroller 89s51 Trainer
Standart
Mikrokontroller 89s51 Trainer
Super
Mikrokontroller Trainer 89s51
Dot matrix Trainer
ATMEGA8
All Kits
+
Programmer
via USB Port
|
|
1.3. Set Instruksi
Program pengendali mikrokontroler disusun dari kumpulan
instruksi, instruksi tersebut setara dengan kalimat perintah bahasa
manusia yang hanya terdiri atas predikat dan objek. Dengan demikian
tahap pertama pembuatan program pengendali mikrokontroler dimulai dengan
pengenalan dan pemahaman predikat (kata kerja) dan objek apa saja yang
dimiliki mikrokontroler.
Objek dalam pemrograman mikrokontroler adalah data
yang tersimpan di dalam memori, register dan input/output. Sedangkan
‘kata kerja’ yang dikenal pun secara umum dikelompokkan
menjadi perintah untuk perpindahan data, arithmetik, operasi logika,
pengaturan alur program dan beberapa hal khusus. Kombinasi dari ‘kata
kerja’ dan objek itulah yang membentuk perintah pengatur kerja
mikrokontroler.
Intruksi MOV A,$7F merupakan contoh sebuah intruksi dasar yang sangat
spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan
peng-copy-an data, merupakan predikat dalam kalimat perintah ini. Sedangkan
objeknya adalah data yang di-copy-kan, dalam hal ini adalah data yang
ada di dalam memori nomor $7F di-copy-kan ke Akumulator A.
Penyebutan data dalam MCS51
Data bisa berada diberbagai tempat yang berlainan, dengan demikian dikenal
beberapa cara untuk menyebut data (dalam bahasa Inggris sering disebut
sebagai ‘Addressing Mode’), antara lain sebagai berikut.
1. Penyebutan data konstan (immediate addressing mode): MOV A,#$20.
Data konstan merupakan data yang berada di dalam instruksi. Contoh instruksi
ini mempunyai makna data konstan $20 (sebagai data konstan ditandai
dengan ‘#’) di-copy-kan ke Akumulator A. Yang perlu benar-benar
diperhatikan dalam perintah ini adalah bilangan $20 merupakan bagian
dari instruksi.
2. Pnyebutan data secara langsung (direct addressing mode), cara ini
dipakai untuk menunjuk data yang berada di dalam memori dengan cara
menyebut nomor memori tempat data tersebut berada : MOV A,$30. Contoh
instruksi ini mempunyai makna data yang berada di dalam memori nomor
$30 di-copy-kan ke Akumulator. Sekilas intruksi ini sama dengan instruksi
data konstan di atas, perbedaannya instruksi di atas memakai tanda ‘#’
yang menandai $20 adalah data konstan, sedangkan dalam instruksi ini
karena tidak ada tanda ‘#’ maka $30 adalah nomor dari memori.
3. Penyebutan data secara tidak langsung (indirect addressing mode),
cara ini dipakai untuk menunjuk data yang berada di dalam memori, kalau
memori penyimpan data ini letaknya berubah-rubah sehingga nomor memori
tidak disebut secara langsung tapi di-‘titip’-kan ke register
lain : MOV A,@R0.
4. Dalam instruksi ini register serba guna R0 dipakai untuk mencatat
nomor memori, sehingga instruksi ini mempunyai makna memori yang nomornya
tercatat dalam R0 isinya di-copy-kan ke Akumulator A.
5. Tanda ‘@’ dipakai untuk menandai nomor memori disimpan
di dalam R0.
6. Bandingkan dengan instruksi penyebutan nomor memori secara langsung
di atas, dalam instruksi ini nomor memori terlebih dulu disimpan di
R0 dan R0 berperan menunjuk memori mana yang dipakai, sehingga kalau
nilai R0 berubah memori yang ditunjuk juga akan berubah pula.
7. Dalam instruksi ini register serba guna R0 berfungsi dengan register
penampung alamat (indirect address register), selain R0 register serba
guna R1 juga bisa dipakai sebagai register penampung alamat.
8. Penyebutan data dalam register (register addressing mode): MOV A,R5.
Instruksi ini mempunyai makna data dalam register serba guna R5 di-copy-kan
ke Akumulator A. Instruksi ini membuat register serba guna R0 sampai
R7 sebagai tempat penyimpan data yang sangat praktis yang kerjanya sangat
cepat.
9. Data yang dimaksud dalam bahasan di atas semuanya berada di dalam
memori data (termasuk register serba guna letaknya juga di dalam memori
data). Dalam penulisan program, sering-sering diperlukan tabel baku
yang disimpan bersama dengan program tersebut. Tabel semacam ini sesungguhnya
merupakan data yang berada di dalam memori program!
10. Untuk keperluan ini, MCS51 mempunyai cara penyebutan data dalam
memori program yang dilakukan secara indirect (code indirect addressing
mode) : MOVC A,@A+DPTR.
Perhatikan dalam instruksi ini MOV digantikan dengan MOVC, tambahan
huruf C tersebut dimaksud untuk membedakan bahwa instruksi ini dipakai
di memori program. (MOV tanpa huruf C artinya instruksi dipakai di memori
data).
Tanda ‘@’ dipakai untuk menandai A+DPTR dipakai untuk menyatakan
nomor memori yang isinya di-copy-kan ke Akumulator A, dalam hal ini
nilai yang tersimpan dalam DPTR (Data Pointer Register - 2 byte) ditambah
dengan nilai yang tersimpan dalam Akumulator A (1 byte) dipakai untuk
menunjuk nomor memori program.
Secara keseluruhan AT8951 mempunyai sebanyak 255 macam
instruksi, yang dibentuk dengan mengkombinasikan ‘kata kerja’
dan objek. “Kata kerja’ tersebut secara kelompok dibahas
sebagai berikut :
1.3.1 Instruksi copy data
Kode dasar untuk kelompok ini adalah MOV, singkatan dari MOVE yang artinya
memindahkan, meskipun demikian lebih tepat dikatakan perintah ini mempunyai
makna peng-copy-an data. Hal ini bisa dijelaskan berikut : setelah instruksi
MOV A,R7 dikerjakan, Akumulator A dan register serba guna R7 berisikan
data yang sama, yang asalnya tersimpan di dalam R7.
Perintah MOV dibedakan sesuai dengan jenis memori AT89Cx051. Perintah
ini pada memori data dituliskan menjadi MOV, misalkan :
MOV A,$20
MOV A,@R1
MOV A,P1
MOV P3,A
Untuk pemakaian pada memori program, perintah ini dituliskan
menjadi MOVC, hanya ada 2 jenis instruksi yang memakai MOVC, yakni:
MOVC A,@A+DPTR ; DPTR sebagai register indirect
MOVC A,@A+PC ; PC sebagai register indirect
Selain itu, masih dikenal pula perintah MOVX, yakni
perintah yang dipakai untuk memori data eksternal (X singkatakan dari
External). Perintah ini hanya dimiliki oleh anggota keluarga MCS51 yang
mempunyai memori data eksternal, misalnya AT89C51 dan lain sebagainya,
dan jelas tidak dikenal oleh kelompok AT89Cx051 yang tidam punya memori
data eksternal. Hanya ada 6 macam instruksi yang memakai MOVX, instruksi-instruksi
tersebut adalah:
MOVX A,@DPTR
MOVX A,@R0
MOVX A,@R1
MOVX @DPTR,A
MOVX @R0,A
MOVX @R1,A
Mnemonic
|
Operation
|
Addressing Mode |
Exect. |
Dir |
Ind |
Reg |
Imm |
Timer uS |
| Mov A,<src> |
A=<src> |
V |
V |
V |
V |
1 |
| Mov <dest>,A |
<dest>=A |
V |
V |
V |
V |
1 |
| Mov <dest>, <src> |
<dest>=<src> |
V |
V |
V |
V |
1 |
| Mov DPTR,#data16 |
DPTR=16 bit immediate const |
Accumulator Only |
1 |
| Push <src> |
Inc SP |
V |
V |
V |
|
1 |
| Pop <src> |
Dec SP |
Data Pointer Only |
2 |
| Xch A,<byte> |
Acc and <byte> exchange data |
Accumulator Only |
1 |
| Xchd A,@Ri |
Acc and @Ri exchange low nibbles |
V |
V |
V |
|
1 |
NEXT
|
|
PERCOBAAN 1
LED
PERCOBAAN 2
SAKLAR
PERCOBAAN 3
7 Segmen
PERCOBAAN 4
LCD Character
PERCOBAAN 5
ADC
PERCOBAAN 6
DAC
PERCOBAAN 7
Keypad
PERCOBAAN 8
Motor Stepper
PERCOBAAN 9
Timer Counter
PERCOBAAN 10
Komunikasi Serial
PERCOBAAN 11
Interupsi
PERCOBAAN 12
Keyboard PC
PERCOBAAN 13
Printer
Dot Matr.
PERCOBAAN 14
RTC12C887
PERCOBAAN 15
P W M
APLIKASI
|