Microcontroller adalah pengontrol dalam ukuran micro, memiliki semua peralatan pokoknya sebagai sebuah komputer dalam satu chip. Peralatan tersebut diantaranya pemroses (prosessor, memori, input dan output). Kadangkala pada microcontroller ini beberapa chip digabungkan dalam satu papan rangkaian. Perangkat ini sangat ideal untuk mengerjakan sesuatu yang bersifat khusus, sehingga aplikasi yang diisikan ke dalam komputer ini adalah aplikasi yang bersifat
dedicated. Jika dilihat dari harga, microcontroller ini harga umumnya lebih murah dibandingkan dengan komputer lainnya, karena perangkatnya relatif sederhana. Contoh alat ini diantaranya adalah komputer yang digunakan pada mobil untuk mengatur kestabilan mesin, alat untuk pengatur lampu lalu lintas.
Pada Microcontroller AT89C51 termasuk dalam keluarga MCS-51TM dari intel. Sebuah microcontroller tidak dapat bekerja bila tidak diberi program kepadanya. Program tersebut memberitahu microcontroller apa yang harus dilakukan. Salah satu keunggulan dari AT89C51 adalah dapat diisi ulang dengan program lain sebanyak 1000 kali pengisian. Intruksi-intruksi perangkat lunak berbeda untu masing-masing jenis microcontroller. Intruksi-intruksi hanya dapat dipahami oleh jenis microcontroller yang bersangkutan. Intruksi-intruksi tersebut dikenal sebagai bahasa pemograman system microcontroller.Sebuah microcontroller tidak dapat memahimi intruksi-intruksi yang berlaku pada mircrocontroller lain. Sebagai contoh, microcontroller buatan intel dengan microcontroller buatan Motorola memiliki perangkat intruksi yang berbeda.
Bahasa Assembly
Bahasa Assembly adalah bahasa komputer yang kedudukannya di antara bahasa mesin dan bahasa level tinggi misalnya bahasa C atau Pascal. Bahasa C atau Pascal dikatakan sebagai bahasa level tinggi karena memakai kata-kata dan pernyataan yang mudah dimengerti manusia, meskipun masih jauh berbeda dengan bahasa manusia sesungguhnya. Bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh komputer. Sedangkan bahasa Assembly memakai kode Mnemonic untuk menggantikan kode biner, agar lebih mudah diingat sehingga lebih memudahkan penulisan program.
Program yang ditulis dengan bahasa Assembly terdiri dari label; kode mnemonic dan lain sebagainya, pada umumnya dinamakan sebagai program sumber (Source Code) yang belum bisa diterima oleh prosesor untuk dijalankan sebagai program, tapi harus diterjemahkan dulu menjadi bahasa mesin dalam bentuk kode biner. Program sumber dibuat dengan program editor biasa, misalnya Note Pad pada Windows atau SideKick pada DOS, selanjutnya program sumber diterjemahkan ke bahasa mesin dengan menggunakan program Assembler.
Konstruksi Program Assembly
Program sumber dalam bahasa Assembly menganut prinsip 1 baris untuk satuperintah, setiap baris perintah tersebut bisa terdiri atas beberapa bagian (field), yakni bagian Label, bagian mnemonic, bagian operand yang bisa lebih dari satu dan terakhir bagian komentar.
Untuk membedakan masing-masing bagian tersebut dibuat ketentuan sebagian berikut:
1. Masing-masing bagian dipisahkan dengan spasi atau TAB, khusus untuk operand yang lebih dari satu masing-masing operand dipisahkan dengan koma.
2. Bagian-bagian tersebut tidak harus semuanya ada dalam sebuah baris, jika ada satu bagian yang tidak ada maka spasi atau TAB sebagai pemisah bagian tetap harus ditulis.
3. Bagian Label ditulis mulai huruf pertama dari baris, jika baris bersangkutan tidak mengandung Label maka label tersebut digantikan dengan spasi atau TAB, yakni sebagai tanda pemisah antara bagian Label dan bagian mnemonic.
Label mewakili nomor memori-program dari instruksi pada baris bersangkutan, pada saat menulis instruksi JUMP, Label ini ditulis dalam bagian operand untuk menyatakan nomor memori-program yang dituju. Dengan demikian Label selalu mewakili nomor memori-program dan harus ditulis dibagian awal baris instruksi. Disamping Label dikenal pula Symbol, yakni satu nama untuk mewakili satu nilai tertentu dan nilai yang diwakili bisa apa saja tidak harus nomor memori-program. Cara penulisan Symbol sama dengan cara penulisan Label, harus dimulai di huruf pertama dari baris instruksi. Mnemonic (arttinya sesuatu yang memudahkan diingat) merupakan singkatan perintah, dikenal dua macam mnemonic, yakni manemonic yang dipakai sebagai instruksi mengendalikan prosesor, misalnya ADD, MOV, DJNZ dan lain sebagainya.
Ada pula mnemonic yang dipakai untuk mengatur kerja dari program Assembler misalnya ORG, EQU atau DB, mnemonis untuk mengatur kerja dari program Assembler ini dinamakan sebagai ‘Assembler Directive’. Operand adalah bagian yang letaknya di belakang bagian mnemonic, merupakan pelangkap bagi mnemonic. Kalau sebuah instrksi di-ibaratkan sebagai kalimat perintah, maka mnemonic merupakan subjek (kata kerja) dan operand merupakan objek (kata benda) dari kalimat perintah tersebut. Tergantung pada jenis instruksinya, operand bisa berupa berbagai macam hal. Pada instruksi JUMP operand berupa Label yang mewakili nomor memori-program yang dituju misalnya LJMP Start, pada instruksi untuk pemindahan/pengolahan data, operand bisa berupa Symbol yang mewakili data tersebut, misalnya ADD A,#Offset. Banyak instruksi yang operandnya adalah register dari prosesor, misalnya MOV A,R1. Bahkan ada pula instruksi yang tidak mempunyai operand, misalnya RET. Komentar merupakan bagian yang sekedar sebagai catatan, tidak berpengaruh pada prosesor juga tidak berpengaruh pada kerja program Assembler, tapi bagian ini sangat penting untuk keperluan dokumentasi.
Tipe-tipe instruksi
Instruksi pada mikrokontroler AT89S51 dapat dikelompokan menjadi 3, yaitu:
- Instruksi Transfer Data
Kelompok instruksi ini digunakan untuk memindahkan data antara:
1. Register ke register
2. Memori ke memori
3. Register ke memori
4. Antarmuka ke register
5. Antarmuka ke antarmuka
Contoh:
Mov A,R1 memindahkan isi register ke accumulator A
Jadi pengalamatan data atau pengambilan data dari suatu port hanya menggunakan instruksi mov.
- Instruksi Aritmatika
Instruksi Aritmatika meliputi penambahan (add), pengurangan (subb), perkalian (mul), dan pembagian (div)
1. ADD
Penambahan ini akan menjumlahkan suatu data dengan isi accumulator. Penambahan hanya melibatkan register accumulator
ADD : (A) (A) + data
2. INC
Proses increment merupakan proses penambahan satu pada isi suatu register atau memori.
INC A : (A) (A) + 1
Selain increment ada juga decrement (DEC) yang merupakan kebalikannya.
- Instruksi Percabangan
Instruksi ini akan melakukan percabangan ke suatu alamat. Instruksi ini terdiri atas dua bagian, yaitu percabangan dengan syarat dan percabangan tanpa syarat.
a.Percabangan dengan syarat
- CJNE
Instruksi CJNE (compare and jump if not equal) membandingkan dua nilai yang disebut dan MCS akan melompat ke memori program yang dituju kalau kedua nilai tersebut tidak sama.
- DJNZ
Instruksi DJNZ (decrement and jump if not zero) merupakan instruksi yang akan mengurangi 1 nilai register serba guna (R0 sampai R7)atau memori data dan akan melompat ke memori program yang dituju jika setelah pengurangan belum dihasilkan 0
- JB/ JNB/ JNC
Instruksi JB (jump on bit set), JNB (jump on bit nol set), JNC (jump on bit set then clear) merupakan instruksi bersyarat yang memerlukan kondisi tertentu.
b.Percabangan tanpa syarat
- SJMP
Instruksi ini akan menuju ke alamat kode yang telah dituju
- CALL
Instruksi ini akan memanggil subrutin pada alamat yang telah ditentukan atau yang sudah terwakili.
PENJELASAN FUNGSI PIN MIKROKONTROLER MCS-51
IC mikrokontroler dikemas (packaging) dalam bentuk yang berbeda. Namun pada dasarnya fungsi kaki yang ada pada IC memiliki persamaan. Gambar salah satu bentuk IC seri mikrokontroler MCS-51 dapat dilihat berikut.
Berikut adalah penjelasan fungsi tiap kaki yang biasa ada pada seri mikrokontroler MCS-51.
A. Port 0
Merupakan dual-purpose port (port yang memiliki dua kegunaan). Pada desain yang minimum (sederhana) digunakan sebagai port I/O (Input/Output). Pada desain lebih lanjut pada perancangan dengan memori eksternal digunakan sebagai data dan address yang di-multiplex. Port 0 terdapat pada pin 32-39.
B. Port 1
Merupakan port yang hanya berfungsi sebagai port I/O, kecuali pada IC 89S52 yang menggunakan P1.0 dan P1.1 sebagai input eksternal untuk timer ketiga (T3). Port 1 terdapat pada pin 1-8.
C. Port 2
Merupakan dual-purpose port. Pada desain minimum digunakan sebagai port I/O. Pada desain lebih lanjut digunakan sebagai high byte dari address. Port 2 terdapat pada pin 21-28.
D. Port 3
Merupakan dual-purpose port. Selain sebagai port I/O juga mempunyai fungsi khusus yang ditunjukkan pada tabel berikut.
PIN ( FUNGSI KHUSUS )
P3.0 RXD ( serial input port )
P3.1 TXD ( serial output port )
P3.2 _INT0 ( external interrupt 0 )
P3.3 _INT1 ( external interrupt 1 )
P3.4 T0 ( timer 0 external input )
P3.5 T1 ( timer 1 external input )
P3.6 _WR ( external data memory write strobe )
P3.7 _RD ( external data memory read strobe )
E. PSEN (Program Store Enable)
PSEN adalah kontrol sinyal yang mengijinkan untuk mengakses program (code) memori eksternal. Pin ini dihubungkan ke pin OE (Output Enable) dari EPROM. Sinyal PSEN akan 0 pada tahap fetch (penjemputan) instruksi. PSEN akan selalu bernilai 0 pada pembacaan program memori internal. PSEN terdapat pada pin 29.
F. ALE (Address Latch Enable)
ALE digunakan untuk men-demultiplex address dan data bus. Ketika menggunakan program memori eksternal port 0 akan berfungsi sebagai address dan data bus. Pada setengah paruh pertama memory cycle ALE akan bernilai 1 sehingga mengijinkan penulisan alamat pada register eksternal dan pada setengah paruh berikutnya akan bernilai satu sehingga port 0 dapat digunakan sebagai data bus. ALE terdapat pada pin 30.
G. EA (External Access)
Jika EA diberi masukan 1 maka mikrokontroler menjalankan program memori internal saja. Jika EA diberi masukan 0 (ground) maka mikrokontroler hanya akan menjalankan program memori eksternal (PSEN akan bernilai 0). EA terdapat pada pin 31.
H. RST (Reset)
RST pada pin 9 merupakan pin reset. Jika pada pin ini diberi masukan 1 selama minimal 2 machine cycle maka system akan di-reset dan register-register internal akan berisi nilai default tertentu dan program kembali mengeksekusi dari alamat paling awal.
I. On-Chip Oscillator
Mikrokontroler MCS-51 telah memiliki on-chip oscillator yang dapat bekerja jika di-drive menggunakan kristal. Tambahan kapasitor diperlukan untuk menstabilkan sistem. Nilai kristal yang biasa digunakan pada 89S51/89S52 adalah sekitar 12 MHz, dan maksimum sampai 24 MHz. On-chip oscillator tidak hanya dapat di-drive dengan menggunakan kristal, tapi juga dapat digunakan TTL oscillator.
J. Koneksi Power
Mikrokontroler biasanya beroperasi pada tegangan 3.3 volt atau 5 volt (tergantung serinya). Pin Vcc terdapat pada pin 40 sedangkan Vss (ground) terdapat pada pin 20.
Contoh Perhitungan delay dibawah ini:
LOOP1:
MOV R0,#20
LOOP2:
MOV R1,#255
LOOP3:
MOV R2,#255
DJNZ R2,LOOP3
DJNZ R1,LOOP2
DJNZ R0,LOOP1
RET
END
Berdasarkan instruksi yang dipakai dapat diketahui nilai dari MOV R0,#20 adalah sebesar 20, MOV R1,#255 bernilai 255 dan MOV R2,#255 sebesar 255. Maka dapat diberikan perhitungan :
DJNZ R2,$ 2 ( 255 x 255 x 20 ) = 1300500 x 2
DJNZ R1,DELAY 2 2 ( 255 x 20 ) = 5100 x ( 2+1)
DJNZ R0,DELAY 1 2 ( 20 x ( 2+1 ) = 20 x 3
RET
END
Penjabaran ( 2+1 ) baik pada DJNZ R1 dan DJNZ R0 diperoleh dari penambahan cycle yang dipunyai oleh DJNZ dengan cycle yang dimiliki oleh instruksi MOV baik pada R1 maupun R0.
Hasil dari perhitungan yang dilakukan adalah :
( 256 x 255 x 4 ) = 261120 x 2 = 2601000
( 255 x 20 ) = 5100 x ( 3) = 15300
( 20 x 3 ) = 360
Hasil yang telah diperoleh ditambah kemudian dikalikan oleh 1 mikro second, sehingga :
2601000 + 15300 + 360 = 2616660 x 10-6 = 2.61666 s
Maka DELAY yang digunakan adalah selama 2.61666 s.
3 komentar:
contoh dari perintah bisa langsung dengan contoh program + penjelasannya.... trimakasih
contoh dasar perintah dari MSC-51 ialah diaplikasikan pada seven segment:
ORG 00H
MULAI:
MOV P0,#0C0H
ACALL DELAY
SJMP MULAI
7
DELAY:
MOV R0,#2H
DELAY1:
MOV R1,#OFFH
DELAY2:
MOV R2,#0
DJNZ R2,$
DJNZ R1,DELAY2
DJNZ R0,DELAY1
RET
END
kemudian jalankan program ALDS cari list program yang baru saja anda simpan,kemudian compile listing program tersebut dengan cara: Assembly-Primary File (memilih target yang akan disassembly)-Asembly.Kemudian download format HEX nya ke target chip AT89C51 dengan menggunakan DT-HIQ programmer
koreksi kembali jika jawaban kurang tepat
mas,knapa di dalam KOntroller gk ada pakai ".Model Smal" Dan ".Code".....???
Posting Komentar