| Pelatihan
Mikrokontroller
89S51
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
|
|
( Click
here: for English version )
Simple Microcontroller Trainer
Rp. 220.000
Include Programer via USB New
( READY STOCK
)
Belajar pemrograman 8051 dan mengembangkan kode dengan cepat dan
mudah, dengan simple mikrokontroller traniner board. Simple mikrokontroller
8051 traniner board memanfaatkan sebuah AT89s51 ATMEL Microcontroler
dengan 4k In-System Flash Memory, yang mana dapat diprogram dan diprogram
ulang dengan mudah dengan menggunakan standard download ATMEL ISP
software.
Semua port I/O's telah tersedia dengan koneksi ke male headers, standard
plugs dapat digunakan. Program Run switch juga telah tersedia. Sebuah
reset pushbutton juga disiapkan untuk melakukan reset ke mikrokontroller.

Gambar 1. Simple Mikrokontroller Trainer Kit
Include:
a. Programmer ISP via USB port

Gambar 2. Programmer ISP via USB Port
b. Kabel USB, CD dan Kabel Power Supply

c. Copy Compiler ASM ke HEX atau C ke HEX
- MIDE51

Gambar 3. M-IDE Studio MCS-51 ( Editor, Compiler )
d. Copy Downloader Software - PROGISP Ver
1.68

Gambar 4. ATMEL Mikrokontroller ISP Software ( Downloader
)
Catatan: Catatan:
Pada setiap pembelian, power supply tidak disertakan. Catu daya yang
diperlukan sebesar 5 volt dc teregulasi
Fitur
• Includes AT89S51 dengan 4kb internal Flash Program Memory
• Crystal(12.MHz)
• Semua I/O pins terkoneksi ke header untuk mempermudah koneksi
eksternal.
• AT89S51 dapat diprogram secara on-board, dengan kabel pemrograman
disertakan
• Circuit Schematic disertakan
Setiap pembelian akan disertakan:
1. CD Copy Software Microcontroller ATMEL ISP ( Download Software )
dan MIDE-51 ( Editor, assembler, compiler dan debug dapat digunakan
untuk pemrograman C)
2. Petunjuk Penggunaan Trainer Kit
3. Kabel downloader/ programmer : 1 meter
4. Rangkaian skematik
5. Beberapa contoh percobaan sederhana
Fitur Printed Circuit Board (PCB)
• 100mm x 150mm
• PCB dari bahan Fiber
Untuk menggunakan trainer ini deperlukan:
Komputer dengan minimum CPU Pentium 64M RAM dengan
CDROM drive dan Parallel Port, berjalan dibawah Windows 98® atau
diatasnya.
M IDE-51® atau Editor / assembler / Compiler yang sama - Free Provided.
ATMEL ISP Software - Free Provided by ATMEL Corp.
Perlu 5v DC regulated power supply 500mA atau lebih besar dengan 2 pin
header female connector.
Cara Pembelian:
1. Langsung
Rumah: Jl. Ngagel Rejo Utara V/24, Surabaya
Kampus: Laboratorium Mikrokontroller, Jurusan Teknik Elektromedik
Politeknik Kesehatan Surabaya, Jl. Pucang Jajar Timur No.10, Surabaya.
Hubungi telp/ SMS:
Triwiyanto, Home/Flexi: 031-77406013, HP:081-55126883
2.Online ( Pembayaran via: ATM/ Internet/ M-Banking
)
 |
BCA Cabang Pucang Anom, Surabaya
No.Rekening:0640444517
A/N: Triwiyanto |
|
BNI Cabang Urip Sumoharjo, Surabaya
No.Rekening: 0049517502
A/N: Triwiyanto |
Setelah menyelesaikan proses pembayaran, jangan lupa
untuk melakukan konfirmasi pembayaran melalui SMS, Email, disertai alamat
pengiriman barang:
Email: [email protected]
Phone: Flexi: 031-7740601, HP: 081-55126883
Catatan (untuk pembelian online):
Tambahkan Rp. 50.000* untuk biaya pengiriman Luar P. Jawa
Tambahkan Rp. 40.000* untuk biaya pengiriman P. Jawa
*Pengiriman barang menggunakan Jasa TIKI, biaya jasa pengiriman tersebut
dapat berubah disesuaikan dengan KG barang + kemasan dan lokasi pemesan,
dengan waktu pengiriman paling lama 4 hari untuk Luar P.Jawa.
Dapatkan discount untuk pembelian
dengan jumlah 10 kit |
1.3.4 Instruksi Lompatan
Pada dasarnya program dijalankan intruksi demi instruksi,
artinya selesai menjalankan satu instruksi mikrokontroler langsung menjalankan
instruksi berikutnya, untuk keperluan ini mikrokontroler dilengkapi
dengan Program Counter yang mengatur pengambilan intruksi secara berurutan.
Meskipun demikian, program yang kerjanya hanya berurutan saja tidaklah
banyak artinya, untuk keperluan ini mikrokontroler dilengkapi dengan
instruksi-instruksi untuk mengatur alur program.
Secara umum kelompok instruksi yang dipakai untuk mengatur
alur program terdiri atas instruksi-instruksi JUMP (setara dengan statemen
GOTO dalam Pascal), instruksi-instruksi untuk membuat dan memakai sub-rutin/modul
(setara dengan PROCEDURE dalam Pascal), instruksi-instruksi JUMP bersyarat
(conditional Jump, setara dengan statemen IF .. THEN dalam Pascal).
Di samping itu ada pula instruksi PUSH dan POP yang bisa memengaruhi
alur program.
Karena Program Counter adalah satu-satunya register dalam mikrokontroler
yang mengatur alur program, maka kelompok instruksi pengatur program
yang dibicarakan di atas, semuanya merubah nilai Program Counter, sehingga
pada saat kelompok instruksi ini dijalankan, nilai Program Counter akan
tidak akan runtun dari nilai instruksi sebelumnya.
Selain karena instruksi-instruksi di atas, nilai Program Counter bisa
pula berubah karena pengaruh perangkat keras, yaitu saat mikrokontroler
di-reset atau menerima sinyal interupsi dari perangkat input/output.
Hal ini akan dibicarakan secara detail dibagian lagi.
Mikrokontroler menjalankan intruksi demi instruksi,
selesai menjalankan satu instruksi mikrokontroler langsung menjalankan
instruksi berikutnya, hal ini dilakukan dengan cara nilai Program Counter
bertambah sebanyak jumlah byte yang membentuk instruksi yang sedang
dijalankan, dengan demikian pada saat instruksi bersangkutan dijalankan
Program Counter selalu menyimpan nomor memori-program yang menyimpan
instruksi berikutnya.
Pada saat mikrokontroler menjalankan kelompok instruksi JUMP, nilai
Program Counter yang runtun sesuai dengan alur program diganti dengan
nomor memori-program baru yang dikehendaki programer.
Mikrokontroler MCS51 mempunyai 3 macam intruksi JUMP, yakni instruksi
LJMP (Long Jump), instruksi AJMP (Absolute Jump) dan instruksi SJMP
(Short Jump). Kerja dari ketiga instruksi ini persis sama, yakni memberi
nilai baru pada Program Counter, kecepatan melaksanakan ketiga instruksi
ini juga persis sama, yakni memerlukan waktu 2 periode instruksi (jika
MCS51 bekerja pada frekuensi 12 MHz, maka instruksi ini dijalankan dalam
waktu 2 mikro-detik), yang berbeda dalam jumlah byte pembentuk instruksinya,
instruksi LJMP dibentuk dengan 3 byte, sedangkan instuksi AJMP dan SJMP
cukup 2 byte.
Instruksi LJMP
Kode untuk instruksi LJMP adalah $02, nomor memori-program baru yang
dituju dinyatakan dengan bilangan biner 16 bit, dengan demikian instruksi
ini bisa menjangkau semua memori-program MCS51 yang jumlahnya 64 KiloByte.
Instruksi LJMP terdiri atas 3 byte, yang bisa dinyatakan dengan bentuk
umum 02 aa aa, aa yang pertama adalah nomor memori-program bit 8 sampai
dengan bit 15, sedangkan aa yang kedua adalah nomor memori-program bit
0 sampai dengan bit 7.
Pemakaian instruksi LJMP bisa dipelajari dari potongan program berikut
:
LJMP TugasBaru
…
ORG $2000
TugasBaru:
MOV A,P3.1
Dalam potongan program di atas, ORG adalah perintah
pada assembler agar berikutnya assembler bekerja pada memori-program
nomor yang disebut di belakang ORG (dalam hal ini minta assembler berikutnya
bekerja pada memori-program nomor $2000). TugasBaru disebut sebagai
LABEL, yakni sarana assembler untuk menandai/ menamai nomor memori-program.
Dengan demikian, dalam potongan program di atas, memori-program nomor
$2000 diberi nama TugasBaru, atau bisa juga dikatakan bahwa TugasBaru
bernilai $2000. (Catatan : LABEL ditulis minimal satu huruf lebih kiri
dari instruksi, artinya LABEL ditulis setelah menekan tombol Enter,
tapi instruksi ditulis setelah menekan tombol Enter, kemudian diikuti
dengan 1 tombol spasi atau tombol TAB).
Dengan demikian intruksi LJMP TugasBaru di atas, sama artinya dengan
LJMP $2000 yang oleh assembler akan diterjemahkan menjadi 02 20 00 (heksadesimal).
Instruksi AJMP
Nomor memori-program baru yang dituju dinyatakan dengan bilangan biner
11 bit, dengan demikian instruksi ini hanya bisa menjangkau satu daerah
memori-program MCS51 sejauh 2 KiloByte. Instruksi AJMP terdiri atas
2 byte, byte pertama merupakan kode untuk instruksi AJMP (00001b) yang
digabung dengan nomor memori-program bit nomor 8 sampai dengan bit nomor
10, byte kedua dipakai untuk menyatakan nomor memori-program bit nomor
0 sampai dengan bit nomor 7.
Berikut ini adalah potongan program untuk menjelaskan pemakaian instruksi
AJMP:
ORG $800
AJMP DaerahIni
AJMP DaerahLain
ORG $900
DaerahIni:
. . .
ORG $1000
DaerahLain:
. . .
Potongan program di atas dimulai di memori-program
nomor $800, dengan demikian instruksi AJMP DaerahIni bisa dipakai, karena
nomor-memori $800 (tempat instruksi AJMP DaerahIni) dan LABEL DaerahIni
yang terletak di dalam satu daerah memori-progam 2 KiloByte yang sama
dengan. (Dikatakan terletak di dalam satu daerah memori-program 2 KiloByte
yang sama, karena bit nomor 11 sampai dengan bit nomor 15 dari nomor
memorinya sama).
Tapi AJMP DaerahLain akan di-salah-kan oleh Assembler, karena DaerahLain
yang terletak di memori-program nomor $1000 terletak di daerah memori-program
2 KiloByte yang lain.
Karena instruksi AJMP hanya terdiri dari 2 byte, sedangkan instruksi
LJMP 3 byte, maka memakai instruksi AJMP lebih hemat memori-program
dibanding dengan LJMP. Hanya saja karena jangkauan instrusksi AJMP hanya
2 KiloByte, pemakaiannya harus hati-hati.
Memori-program IC mikrokontroler AT89C1051 dan AT89C2051 masing-masing
hanya 1 KiloByte dan 2 KiloByte, dengan demikian program untuk kedua
mikrokontroler di atas tidak perlu memakai instruksi LJMP, karena program
yang ditulis tidak mungkin menjangkau lebih dari 2 KiloByte memori-program.
Instruksi SJMP
Nomor memori-program dalam instruksi ini tidak dinyatakan dengan nomor
memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran
relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan.
Pergeseran relatip tersebut dinyatakan dengan 1 byte bilangan 2’s
complement, yang bisa dipakai untuk menyakatakan nilai antara -128
sampai dengan +127. Nilai minus dipakai untuk menyatakan bergeser ke
instruksi-instruksi sebelumnya, sedangkan nilai positip untuk menyatakan
bergeser ke instruksi-instruksi sesudahnya.
Meskipun jangkauan instruksi SJMP hanya -128 sampai +127, tapi
instruksi ini tidak dibatasi dengan pengertian daerah memori-program
2 KiloByte yang membatasi instruksi AJMP.
ORG $0F80
SJMP DaerahLain
. . .
ORG $1000
DaerahLain:
Dalam potongan program di atas, memori-program $0F80
tidak terletak dalam daerah memori-program 2 KiloByte yang sama dengan
$1000, tapi instruksi SJMP DaerahLain tetap bisa dipakai, asalkan jarak
antara instruksi itu dengan LABEL DaerahLain tidak lebih dari 127 byte.
Instruksi sub-rutin
Instruksi-instruksi untuk membuat dan memakai sub-rutin/modul program,
selain melibatkan Program Counter, melibatkan pula Stack yang diatur
oleh Register Stack Pointer.
Sub-rutin merupakan suatu potong program yang karena berbagai pertimbangan
dipisahkan dari program utama. Bagian-bagian di program utama akan ‘memanggil’
(CALL) sub-rutin, artinya mikrokontroler sementara meninggalkan alur
program utama untuk mengerjakan instruksi-instruksi dalam sub-rutin,
selesai mengerjakan sub-rutin mikrokontroler kembali ke alur program
utama.
Satu-satunya cara membentuk sub-rutin adalah memberi instruksi RET pada
akhir potongan program sub-rutin. Program sub-rutin di-’panggil’
dengan instruksi ACALL atau LCALL.
Agar nantinya mikrokontroler bisa meneruskan alur program utama, pada
saat menerima instruksi ACALL atau LCALL, sebelum mikrokontroler pergi
mengerjakan sub-rutin, nilai Program Counter saat itu disimpan dulu
ke dalam Stack (Stack adalah sebagian kecil dari memori-data yang dipakai
untuk menyimpan nilai Program Counter secara otomatis, kerja dari Stack
dikendalikan oleh Register Stack Poiner).
Selanjutnya mikrokontroler mengerjakan instruksi-instruksi di dalam
sub-rutin sampai menjumpai instruksi RET yang berfungsi sebagai penutup
dari sub-rutin. Saat menerima instruksi RET, nilai asal Program Counter
sebelum mengerjakan sub-rutin yang disimpan di dalam Stack, dikembalikan
ke Program Counter sehingga mikrokontroler bisa meneruskan pekerjaan
di alur program utama.
Instruksi ACALL dipakai untuk me-‘manggil’ program sub-rutin
dalam daerah memori-program 2 KiloByte yang sama, setara dengan instruksi
AJMP yang sudah dibahas di atas. Sedangkan instruksi LCALL setara dengan
instruksi LCALL, yang bisa menjangkau seluruh memori-program mikrokontroler
MCS51 sebanyak 64 KiloByte. (Tapi tidak ada instrusk SCALL yang setara
dengan instruksi SJMP).
Program untuk AT89C1051 dan AT89C2051 tidak perlu memakai instruksi
LCALL.
Instruksi RET dipakai untuk mengakhiri program sub-rutin, di samping
itu masih ada pula instruksi RETI, yakni instruksi yang dipakai untuk
mengakhiri Program Layanan Interupsi (Interrupt Service Routine), yaitu
semacam program sub-rutin yang dijalankan mikrokontroler pada saat mikrokontroler
menerima sinyal permintaan interupsi.
Catatan : Saat mikrokontroler menerima sinyal permintaaan interupsi,
mikrokontroler akan melakukan satu hal yang setara dengan intruksi LCALL
untuk menjalankan Program Layanan Interupsi dari sinyal interupsi bersangkutan.
Di samping itu, mikrokontroler juga me-‘mati’-kan sementara
mekanisme layanan interupsi, sehingga permintaan interupsi berikutnya
tidak dilayani. Saat menerima instruksi RETI, makanisme layanan interusi
kembali diaktipkan dan mikrokontroler melaksanakan hal yang setara dengan
instruksi RET.
Instruksi Lompatan Bersyarat
Instruksi Jump bersyarat merupakan instruksi inti bagi mikrokontroler,
tanpa kelompok instruksi ini program yang ditulis tidak banyak berarti.
Instruksi-instruksi ini selain melibatkan Program Counter, melibatkan
pula kondisi-kondisi tertentu yang biasanya dicatat dalam bit-bit tertentu
yang dihimpun dalam Register tertentu.
Khusus untuk keluarga mikrokontroler MCS51 yang mempunyai kemampuan
menangani operasi dalam level bit, instruksi jump bersyarat dalam MCS51
dikaitkan pula dengan kemampuan operasi bit MCS51.
Nomor memori-program baru yang harus dituju tidak dinyatakan dengan
nomor memori-program yang sesungguhnya, tapi dinyatakan dengan ‘pergeseran
relatip’ terhadap nilai Program Counter saat instruksi ini dilaksanakan.
Cara ini dipakai pula untuk instruksi SJMP.
Instruksi JZ / JNZ
Instruksi JZ (Jump if Zero) dan instruksi JNZ (Jump if not Zero) adalah
instruksi JUMP bersyarat yang memantau nilai Akumulator A.
MOV A,#0
JNZ BukanNol
JZ Nol
. . .
BukanNol:
. . .
Nol :
. . .
Dalam contoh program di atas, MOV A,#0 membuat A bernilai
nol, hal ini mengakibatkan instruksi JNZ BukanNol tidak akan pernah
dikerjakan (JNZ artinya Jump kalau nilai A<>0, syarat ini tidak
pernah dipenuhi karena saat instruksi ini dijalankan nilai A=0), sedangankan
instruksi JZ Nol selalu dikerjakan karena syaratnya selalu dipenuhi.
Instruksi JC / JNC
Instruksi JC (Jump on Carry) dan instruksi JNC (Jump on no Carry) adalah
instruksi jump bersyarat yang memantau nilai bit Carry di dalam Program
Status Word (PSW).
Bit Carry merupakan bit yang banyak sekali dipakai untuk keperluan operasi
bit, untuk menghemat pemakaian memori-program disediakan 2 instruksi
yang khusus untuk memeriksa keadaan bit Carry, yakni JC dan JNC. Karena
bit akan diperiksa sudah pasti, yakni bit Carry, maka instruksi ini
cukup dibentuk dengan 2 byte saja, dengan demikian bisa lebih menghemat
memori program.
JC Periksa
JB PSW.7,Periksa
Hasil kerja kedua instruksi di atas sama, yakni MCS51
akan JUMP ke Periksa jika ternyata bit Carry bernilai ‘1’
(ingat bit Carry sama dengan PSW bit 7). Meskipun sama tapi instruksi
JC Periksa lebih pendek dari instruksi JB PSW.7,Periksa, instruksi pertama
dibentuk dengan 2 byte dan instruksi yang kedua 3 byte.
Instruksi JBC sama dengan instruksi JB, hanya saja jika ternyata bit
yang diperiksa memang benar bernilai ‘1’, selain MCS51 akan
JUMP ke instruksi lain yang dikehendaki MCS51 akan me-nol-kan bit yang
baru saja diperiksa
Instruksi JB / JNB / JBC
Instruksi JB (Jump on Bit Set), instruksi JNB (Jump on not Bit Set)
dan instruksi JBC (Jump on Bit Set Then Clear Bit) merupakan instruksi
Jump bersyarat yang memantau nilai-nilai bit tertentu. Bit-bit tertentu
bisa merupakan bit-bit dalam register status maupun kaki input mikrokontroler
MCS51.
Pengujian Nilai Boolean dilakukan dengan instruksi JUMP bersyarat, ada
5 instruksi yang dipakai untuk keperluan ini, yakni instruksi JB (JUMP
if bit set), JNB (JUMP if bit Not Set), JC (JUMP if Carry Bit set),
JNC (JUMP if Carry Bit Not Set) dan JBC (JUMP if Bit Set and Clear Bit).
Dalam instruksi JB dan JNB, salah satu dari 256 bit yang ada akan diperiksa,
jika keadaannya (false atau true) memenuhi syarat, maka MCS51 akan menjalankan
instruksi yang tersimpan di memori-program yang dimaksud. Alamat memori-program
dinyatakan dengan bilangan relatip terhadap nilai Program Counter saat
itu, dan cukup dinyatakan dengan angka 1 byte. Dengan demikian instruksi
ini terdisi dari 3 byte, byte pertama adalah kode operasinya ($29 untuk
JB dan $30 untuk JNB), byte kedua untuk menyatakan nomor bit yang harus
diuji, dan byte ketiga adalah bilangan relatip untuk instruksi tujuan.
Contoh pemakaian instruksi JB dan JNB sebagai berikut :
JB P1.1,$
JNB P1.1,$
Instruksi-instruksi di atas memantau kedaan kaki IC
MCS51 Port 1 bit 1. Instruksi pertama memantau P1.1, jika P1.1 bernilai
‘1’ maka MCS51 akan mengulang instruksi ini, (tanda $ mempunyai
arti jika syarat terpenuhi kerjakan lagi instruksi bersangkutan). Instruksi
berikutnya melakukan hal sebaliknya, yakni selama P1.1 bernilai ‘0’
maka MCS51 akan tertahan pada instruksi ini.
Instruksi proses dan test
Instruksi-instruksi Jump bersyarat yang dibahas di atas, memantau kondisi
yang sudah terjadi yang dicatat MCS51. Ada dua instruksi yang melakukan
dulu suatu proses baru kemudian memantau hasil proses untuk menentukan
apakah harus Jump. Kedua instruksi yang dimaksud adalah instruksi DJNZ
dan instruksi CJNE.
Instruksi DJNZ
Instruksi DJNZ (Decrement and Jump if not Zero), merupakan instruksi
yang akan mengurangi 1 nilai register serbaguna (R0..R7) atau memori-data,
dan Jump jika ternyata setelah pengurangan 1 tersebut hasilnya tidak
nol.
Contoh berikut merupakan potongan program untuk membentuk waktu tunda
secara sederhana :
MOV R0,#$23
DJNZ R0,$
Instruksi MOV R0,#$23 memberi nilai $23 pada R0, selanjutnya
setiap kali instruksi DJNZ R0,$ dikerjakan, MCS51 akan mengurangi nilai
R0 dengan ‘1’, jika R0 belum menjadi nol maka MCS51 akan
mengulang instruksi tersebut (tanda $ dalam instruksi ini maksudnya
adalah kerjakan kembali instruksi ini). Selama mengerjakan 2 instruksi
di atas, semua pekerjaan lain akan tertunda, waktu tundanya ditentukan
oleh besarnya nilai yang diisikan ke R0.
Instruksi CJNE
Instruksi CJNE (Compare and Jump if Not Equal) membandingkan dua nilai
yang disebut dan MCS akan Jump kalau kedua nilai tersebut tidak sama!
MOV A,P1
CJNE A,#$0A,TidakSama
...
SJMP EXIT
;
TidakSama:
...
Instruksi MOV A,P1 membaca nilai input dari Port 1, instruksi CJNE A,#$0A,Tidaksama
memeriksa apakah nilai Port 1 yang sudah disimpan di A sama dengan $0A,
jika tidak maka Jump ke TidakSama
BACK
|