Anda di halaman 1dari 27

MODUL

ROBOTIK
DisusunOleh:
SUYATNOBUDIHARJO

Modul1

HardwaredanPerakitanRobot

TujuanPembelajaran:
MenjadifamiliardenganhardwareRobot
Mekanik:
Motor
Roda
SistemGear
Elektronik:
Sensor
PowerSupply

KabelSerial

Deskripsi:
SebuahRobotdapatdibangunbaiksecarautuhmaupunsebagianyangmenyerupai
makhluksepertimanusiaataubinatang,baikdaribentukmaupunperilakuataucara
berjalan / bergerak. Berbeda dengan makhluk, baru dikatakan manusia jika
mempunyaisebagianbesarorgantubuh,namunrobotdapathanyaberupalengan
sehingga disebut Robot Lengan. Semakin lengkapsebuah Robot,makasemakin
banyak komponen yang diperlukan sehingga diperlukan untuk menginventarisasi
kebutuhan untuk membangun sebuah Robot. Dalam hal ini, tentu berbeda
kebutuhan untuk membangun sebuah robot yang satu dengan yang lainnya.
SehinggaperlumengenalkomponenutamasebuahRobotyangdibagidalamdua
kelompok yaitu komponen Mekanik dan komponen Elektronik. Keduanya dapat
digabungkan menjadi sebuah istilah Mekatronik. Komponen Mekanik diperlukan
sebuahRobotuntukberperilakuyaitubergerakatauberjalan,menggerakkanlengan,
sedangkankomponenelektronikadiperlukansebuahRobotuntukberpikir(Logika)
dalam hal ini sebagai otaknya Robot atau CPUnya Robot dapat menggunakan
Mikroprocessor atau Mikrokontroler seperti keluarga ATMEL AT89Sxx , AT89Cxx
atau keluarga PIC16Fxx yang masingmasing mempunyai kelebihan dan

kekurangan,meresponrangsanganataumembangkitkansinyal(PowerSupply)atau
mengirimmenerimasinyal(TxRxSensor),komponenuntukdriverMotorsebagai
tenaga penggerak Lengan / Kaki. Motor yang dapat digunakan untuk tenaga
penggerakRobotantaralain: MotorDC,MotorDCdenganGear,MotorStepper,
Motor Stepper dengan Gear. Motor merupakan komponen yang berotasi dan
membangkitkangerakan.Motordirancanguntukmengkonversienergilistrikmwnjadi
energimekanikuntukmembentukbeberapapekerjaanfisik.
MotorSteppermerupakanperangkatelektromekanikyangmengkonversidayalistrik
kw dalam torque dengan posisi untuk kontrol. Putaran motor stepper dilakukan
sesuai namanya, dalam satu putaran atau revolution dilakukan dalam beberapa
step.SebagaicontohUntukmotor1.8derajatmempunyai200step/putaran,motor
7.5derajatmemerlukan48step/putaran.
MotorDC
Motor DC mempunyai karakteristik yang berbeda dengan motor stepper, dimana
putaranyangdihasilkanolehmotorDCdapatbeberapakaliputarandengancatuan
powerDC,biasanya10s/d24Vdcsesuaidengantenagayangdihasilkan.Biasanya
motor DC digunakan sebagai penggerak Robot untuk sistem Roda (Mobil).
Sedangkan Motor Stepper digunakan untuk penggerak Robot yang tidak
memerlukanputaranpenuh,sepertiuntukkontrolRobotLenganatauRobotkaki.
Namun dapat diprogram untuk melakukan revolusi sesuai dengan kebutuhan
sehingga akan lebih fleksibel dibandingkan dengan Motor DC. Dalam prakteknya
diperlukanmekanismeuntukmengendalikanputaranmotor,baikkedepanatauke
belakang,cepatataulambat,lamaatausebentar.
TabelKebenarandarikomponenL293Dadalahsebagaiberikut:

INPUT ENABL
E(*)

OUTPU
T

Dimana:
Z=impedansikeluarantinggi
*=relatifmasingmasingkanal.
EN12berhubungandenganOUT1danOUT2
EN34berhubungandenganOUT3danOUT4
Rangkaianyangdigunakanuntukdrivermotoradalahsebagaiberikut:

RangkainDriverMotor

Sensor:
SensormerupakanbagianyangcukuppentingdidalamkontrolRobotterutamauntuk
RobotAutonomous.BerbedadengankontrolRobotManualyangdigerakkandengan
campurtanganmanusiamelaluiPCatauKeypadataujugaRemoteControl.Sensor
berfungsisebagaipenginderaRobot.RobotdapatberjalanmengikutiJalurdengan
dibimbing oleh Sensor. Robot dapat berjalan mendekati sumber api jika
menggunakansensorsuhuuntukbergerak.

SebagaicontohuntukrangkaiansensorIRadalahsebagaiberikut:

GambarSensorInfrared(IR)

Sensor yang dapat digunakan untuk mengendalikan Robot antara lain adalah :
SensorInfraMerah(IR)merupakansensorcahayataktampak(Invisible),Sensor
Cahaya(Visible)yangmendeteksiadatidaknyacahayatampak,tentunyaterbatas
akandipengaruhiolehcahayadilingkungansekitar,SensorUltrasonikyangbekerja
dengan mengirimkan sinyal suara ultra, seperti yang digunakan dalam perangkat
navigasi kelelawar, sehingga kelelawar dapat terhindar dari tabrakan walaupun
bergerakdidalamgelap.Dengandemikiandalamprakteknyasensorultrasonikdapat
digunakan oleh Robot untuk mendeteksi halangan, atau bahkan kamera sebagai
mataRobotuntukmelihat.
PowerSupply
Sebagai sumber tenaga penggerak atau power supply bagi Robot dapat
menggunakan sumber dari batterai atau adaptor. Dan biasanya power supply
tersebut memer rangkaian Regulator untuk mengatur voltase atau tegangan
keluaran sesuai kebutuhan. Pada dasarnya setiap komponen atau rangkaian
memerlukan catuan daya, yang terkadang besarannya berbeda, seperti untuk
Mikrokontroler memerlukan catuan sebesar 5 9 Volt, sedangkan untuk Motor
memerlukan 10 24 Volt. Sehingga dalam prakteknya sumber catuannya
dibedakanuntukkeduakomponendiatas.RangkaianuntukRegulatorpowersupply
adalahsebagaiberikut:

RegulatorPowerSupply
Aktifitas:
1.Inventarisasi
mengidentifikasidanmenginventarisasibagianbagianrobotsesuaifungsidan
penggunaannya.

2.Perakitan
merakitrobotdaribagianbagiannyamenjadisebuahrobotyangsiapberaksi
3.VerifikasiPerakitan
Inspeksisecaravisualrangkaianmekaniksesuaifungsinya
Inspeksikoneksielektroniksecaravisual
4.MelakukanpengukuransetiapbagianbagiandariRobot
5.MenganalisaDatahasilPengukuran

Modul2
PemrogramandanTestingMikrokontroler
TujuanPembelajaran
1.MengertidanmemahamipemrogramanHardwareMik
2.MengenaldandapatmenggunakanperangkatDownloader
3.DapatmembuatprogramAssembler
4.DapatmengkompilasiprogramAssembler
5.Menjadifamiliardenganpembangunandandownloadingprogram

DasarMikrokontroler
MikrokontroleradalahCentralProcessingUnit(CPU)yangdisertaidenganmemori
sertasaranainput/outoutdandibuatdalambentukchiptunggal.
CentralProcessingUnit(CPU)
CPUterdiridariduabagian,yaituunitpengendali(controlunit)sertaunitaritmatika
danlogika(ALU).Fungsiutamaunitkendaliadalahmengambil,mengkodekan,dan
melaksanakanurutaninstruksisebuahprogramyangtersimpandalammemori.Unit
pengendali menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk
menyerempakkanoperasi,alirandaninstruksiprogram.UnitAritmatikadanLogika
berfungsi untuk melakukan proses perhitungan yang diperlukan selama program
dijalankansertamempertimbangkansuatukondisidanmengambilkeputusanyang
diperlukanuntukinstruksiinstruksiberikutnya.
MikrokontrolerAT89C51SingleChip
Mikrokontroler AT89C51 merupakan salah satu keluarga dari MCS51 keluaran
Atmel. Jenis mikrokontroler ini pada prinsipnya dapat digunakan untuk mengolah
dataperbitataupundata8bitsecarabersamaan.
Sebuahmikrokontrolerdapatbekerjabiladidalammikrokontrolertersebutterdapat
sebuah program yang berisi instruksiinstruksi yang akan digunakan untuk
menjalankansistemmikrokontrolertersebut.Instruksiinstruksidarisebuahprogram

pada tiap jenis mikrokontroler mempunyai beberapa perbedaan : Instruksi pada


mikrokontrolerAtmelberbedadenganinstruksipadamikrokontrolerMotorola.
BeberapafasilitasyangdimilikiolehmikrokontrolerAT89C51sebagaiberikut:

SebuahCentralProcessingUnit(CPU)8bit

OsilatorInternaldanRangkaianPewaktu

RAMInternal128byte

FlashMemori4Kbyte

Lima buah jalur interupsi (dua buah interupsi eksternal dan tiga buah
interupsiinternal)

EmpatbuahprogramableportI/Omasingmasingterdiridari8buahjalurI/O
(8bit)

SebuahportserialdengankontrolserialfullduplexUART

Kemampuanuntukmelakukanoperasiaritmatikadanlogika

Kecepatan dalam melaksanakan instruksi per siklus 1 mikrodetik pada


frekuensi12Mhz.

InstruksipadaMikrokontrolerAT89C51
ADD
Instruksiuntukmelakukanoperasipenjumlahanpadaduabuahdatayangterdapat
pada alamat register yang ditunjuk oleh instruksi. Terdapat beberapa mode
penjumlahanseperticontohberikut:
ADDA,Rn
Siklus JumlahByte
1

Instruksi

1
Flag

ADDA,Rn
C

AC

F0

RS1

RS0

OV

TambahkanAkumulatorAdenganRndimanan=0,1,2,...7dansimpanhasilnyadi
AkumulatorA.
Contoh:
AddA,R7
Isi dari R7 akan ditambahkan dengan Akumulator A dan hasilnya disimpan di
AkumulatorA.

ADDA,direct
Siklus JumlahByte
1

Instruksi

2
Flag

ADDA,direct
C

AC

F0

RS1

RS0

OV

TambahkanAkumulatorAdengandatadialamatmemoritertentusecaralangsung.
Contoh:
AddA,00H
Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM Internal di
alamat00H.
ADDA,@Ri
Siklus JumlahByte
1

Instruksi

1
Flag

ADDA,@Ri
C

AC

F0

RS1

RS0

OV

TambahkanAkumulatorAdengandatayangberadadialamatRi(ditunjukolehRi)
dansimpanhasilnyadiAkumulatorA.RiadalahRegisterIndexdimanapadaMCS51
adalahberupaR0danR1.
Contoh:
AddA,@R0
IsidariAkumulatorAakanditambahkandenganisidarimemoriRAMInternalyang
ditunjukolehR0.ApabilaR0berisi05Hmaka,isidarialamat05Hakandijumlahkan
denganAkumulatorAdanhasilnyadisimpandiAkumulatorA.
ADDA,#data
Siklus JumlahByte
1

Instruksi

2
Flag

ADDA,#data
C

AC

F0

RS1

RS0

OV

TambahkanAkumulatorAdengansebuahkonstantadanhasilnyadisimpandalam
akumulatorA.
Contoh:

AddA,#05H
Isi Akumulator A ditambah dengan data 05H dan hasilnya disimpan dalam
AkumulatorA.
ADDC
ADDCA,Rn
TambahkanAkumulatorAdenganRndimanan=0,1,2,...7dansimpanhasilnyadi
AkumulatorA.
Contoh:
AddcA,R7
IsidariR7akanditambahkandenganakumulatorAbesertacarryflagdanhasilnya
disimpan di Akumulator A. Apabila carry flag set maka hasil yang tersimpan di
AkumulatorAadalahA+R7+1.
ADDCA,direct
Tambahkan Akumulator A dan carry flag dengan data di alamat memori tertentu
secaralangsung.
Contoh:
AddcA,00H
Isi dari Akumulator A akan ditambahkan dengan isi dari memori RAM Internal di
alamat00HbesertacarryflagdanhasilnyadisimpandiAkumulatorA,Apabilacarry
flagsetmakahasilyangtersimpandiAkumulatorAadalahA+isialamat00H+1
ADDCA,@Ri
TambahkanAkumulatorAbesertacarryflagdengandatayangberadadialamatRi
(ditunjukolehRi)danhasilnyadisimpandiAkumulatorA.RiadalahRegisterIndexdi
manapadaMCS51adalahberupaR0atauR1
Contoh:
AddA,@R0
IsidariAkumulatorAbesertacarryflagakanditambahkandenganisidarimemori
RAMInternalyangditunjukolehR0.ApabilaR0berisi05Hmaka,isidarialamat05H
akandijumlahkandenganAkumulatorAbesertacarryflagdanhasilnyadisimpandi

AkumulatorA.
ADDCA,#data
TambahkanAkumulatorAbesertacarryflagdengansebuahkonstantadanhasilnya
disimpandalamakumulatorA.
Contoh:
AddcA,#05H
Isi Akumulator A beserta carry flag ditambah dengan data 05H dan hasilnya
disimpandalamAkumulatorA.ApabilacarryflagsetmakahasildiAkumulatorA
adalahA+5H+1.
SUBB
SUBBA,Rn
Lakukan pengurangan data di Akumulator A dengan Rn (n = 0&7) dan simpan
hasilnyadiAkumulatorA
Contoh:
SubbA,R0
DatadiakumulatorAbesertacarryflagnyadikurangidenganisiR0danhasilnya
disimpandiAkumulatorA
SUBBA,direct
LakukanpengurangandatadiAkumulatorAdengandatadimemoritertentuyang
ditunjuksecaralangsung.
Contoh:
SubbA,00H
DatadiAkumulatorAbesertacarryflagnyadikurangidengandatadialamat00Hdari
RAMInternaldanhasilnyadisimpandiAkumulatorA.
SUBBA,@Ri
LakukanpengurangandatadiAkumulatorAbesertacarryflagdengandatayang
ditunjukolehRi(RegisterIndex)dimanaRidapatberupaR0atauR1
Contoh:

SubbA,@R0
DatadiAkumulatorAbesertacarryflagnyadikurangidengandatayangditunjukoleh
R0danhasilnyadisimpandiAkumulatorA.
SUBBA,#data
Lakukan pengurangan data di Akumulator A beserta carry flag dengan sebuah
konstantadanhasilnyadisimpandiAkumulatorA
Contoh:
SubbA,#05H
DatadiAkumulatorAbesertacarryflagdikurangidengandata05Hdanhasilnya
disimpandiAkumulatorA
INC
INCA
TambahkannilaiAkumulatorAdengan1danhasilnyadisimpandiAkumulatorA.

INCRn
TambahkannilaiRn(n=0,..,7)dengan1danhasilnyadisimpandiRntersebut.
INCdirect
TambahkandatayangdiRAMInternalyangalamatnyaditunjuksecaralangsung
dengan1danhasilnyadisimpandialamattersebut.
Contoh:
Inc00H
Datadialamat00Hditambahdengan1danhasilnyadisimpandialamat00H.

INC@Ri
TambahkandatayangalamatnyaditunjukolehRi(RegisterIndex)dengan1dan
simpanhasilnyadialamattersebut.
Contoh:
Inc@R1
Data di alamat yang ditunjuk oleh R1 dan hasilnya disimpan di alamat tersebut,

apabilaR1berisi10Hmakadatadialamat10Hditambahdengan1dansimpan
kembalidialamat10H.

INCDPTR
TambahkannilaiDPTRdengan1dansimpanhasilnyadiDPTR.

Kebalikandariprosesincrementataupenambahandengan1adalahdecrementatau
pengurangandengan1menggunakanperintahDEC.Denganformatdanaturan
perintahsepertiperintahINC.

MULAB
LakukanperkalianantaraAkumulatorAdanRegisterB,hasildariperkaliandisimpan
diAkumulatorA,untukbyterendahdandiRegisterBuntukbytetinggi.Bilahasil
perkalianlebihdari255(0FFH)makaflagoverflowakanset,sedangkancarryakan
selaluclear.
Contoh:
MovA,#50H
MovB,#0A0H
MulAB
Hasilperkaliandari50Hatau80desimaldengan0A0Hatau160desimaladalah
3200Hatau12800,makanilaiyangdisimpandiAkumulatorAadalah00Hdandi
Register B adalah 32H. Sedangkan Flag Overflow akan set karena hasil dari
perkalianlebihbesardaripada255atau(0FFH)
DIVAB
LakukanpembagianantaraAkumulatorAdanRegisterB,hasildaripembagianakan
disimpandiakumulatorAdansisapembagiandisimpandiRegisterB.FlagOverflow
danCarryakanselaluclearFlagOverflowakansetapabilaisidariRegisterBadalah
00dimanahalinimenandakanbahwaprosespembagiantidakmungkindilakukan
karena hasil pembagian antarasuatu bilangandengan 0 adalah tidak berhingga.
Contoh:
MovA,#0FB

MovB,#12H
DivAB
Hasildaripembagianiniadalah0DHdengansisa11H,maka0DHakantersimpandi
AkumulatorAsebagaihasilbagidan11HtersimpandiRegisterBsebagaisisabagi.
DAA
MengubahdatadiAkumulatorAmenjadibentukBCD.Instruksiiniakanmengubah
sebuah8bitdatapadaAkumulatorAdalambentukhexamenjadi2digitdimana
digitpertamapadanibbleatasberupabit7&4dariAkumulatorAdandigitkedua
adalahnibblebawahberupabit3&0dariAkumulatorA.Padadasarnyainstruksiini
akanmenambahkan6apabilanibblerendahberadadiatas9ataubitACsetdan
menambahkan6apabilanibbletinggiberadadiatas9ataubitCarrySet.Instruksiini
biasadigunakansesudahinstruksiADD.
Contoh1:
AddA,#88H
DAA
NilaiakumulatorAsebelumnyaadalah99H,hasilpenjumlahan99Hdan88Hadalah
21HdenganbitACsetdanCarryset karenahasilpenjumlahan9dan8baikdi
nibbletinggimaupunnibblerendahadalahlebihbesardari9.KarenabitACsetdan
bitcarrysetmakahasilpenjumlahankeduanibbletersebutmasingmasingditambah
6danmenghasilkan87Hdengancarryflagset.
Contoh2:
AddA,#02H
DAA
NilaiAkumulatorAsebelumnyaadalah79H,hasilpenjumlahandengan02Hadalah
7BHdenganbitACsetkarenahasilpenjumlahanpadanibblerendahlebihbesar
dari9dansetelahmelewatiinstruksiDAA,maka7BHakanditambahdengan6H
sehinggamenjadi81H.
Intinya,apabilakondisi:

BitACset,BitCarryclear=AkumulatorAditambah06H

BitACclear,BitCarryclear=AkumulatorAditambah00H

BitACclear,BitCarryset=AkumulatorAditambah60H

BitACset,BitCarryset=AkumulatorAditambah66HI
Instruksi DA A memang bukan sebuah instruksi yang mengubah bilangan
heksamenjadibentukdesimaldenganmudah,namuninstruksiiniberfungsi
untuk membuat operasi penjumlahan secara BCD sehingga hasil
penjumlahandari79Hdan02Hbukanmenjadi7BHmelainkanmenjadi81H.

OperasiLogika
ANL
MelakukanoperasiANDantaraduabuahvariabeldanmenyimpannyadivariabel
tujuan.Apabila variabeltujuan adalahakumulator,makavariabelyanglaindapat
menggunakanregister(Rn), alamatlangsung,taklangsungatauimmediatedata,
apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat
menggunakanakumulatoratauimmediatedata.
ANLA,Rn
Melakukan operasi AND antara akumulator A dan Rn (R0,...,R7) dan hasilnya
disimpandiakumulatorA.
ANLA,direct
Melakukan operasi AND antara akumulator A dan alamat langsung dan hasilnya
disimpandiakumulatorA.
Contoh:
ANLA,05H
Akumulator A di AND dengan data di alamat 05H dan hasilnya disimpan di
akumulatorA.
ANLA,@Ri
MelakukanoperasiANDantaraakumulatorAdandatayangditunjukolehRegister
Index(R0atauR1)sertahasilnyadisimpandiakumulatorA.
Contoh:
ANLA,@R0
AkumulatorAdiANDdengandatayangditunjukolehR0,misalkanR0berisi50H,

makaakumulatorAdiANDdengandatayangtersimpandialamat50Hdanhasilnya
disimpandiakumulatorA.
ANLA,#data
Melakukan operasi AND antara akumulator A dan immediate data serta hasilnya
disimpandiakumulatorA.
ANLdirect,A
Melakukan operasi AND antara alamat langsung dengan akumulator A serta
hasilnyadisimpandialamatlangsungtersebut.
Contoh:
ANL07H,A
Datadialamat07HdiANDdenganakumulatorAdanhasilnyakembalidisimpandi
alamat07H.
ANLdirect,#data
Melakukan operasi AND antara alamat langsung dengan immediate data serta
hasilnyadisimpandialamatlangsungtersebut.
ORL
Melakukan operasi OR antara dua buah variabel dan menyimpannya di variabel
tujuan.Apabila variabeltujuan adalahakumulator,makavariabelyanglaindapat
menggunakanregister(Rn), alamatlangsung,taklangsungatauimmediatedata,
apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat
menggunakanakumulatoratauimmediatedata.
ORLA,Rn
Melakukan operasi OR antara akumulator A dan Rn (R0,...,R7) dan hasilnya
disimpandiakumulatorA.
ORLA,direct
Melakukan operasi OR antara akumulator A dan alamat langsung dan hasilnya

disimpandiakumulatorA.
Contoh:
ORLA,05H
AkumulatorAdiORdengandatadialamat05Hdanhasilnyadisimpandiakumulator
A.
ORLA,@Ri
MelakukanoperasiORantaraakumulatorAdandatayangditunjukolehRegister
Index(R0atauR1)sertahasilnyadisimpandiakumulatorA.
Contoh:
ORLA,@R0
AkumulatorAdiORdengandatayangditunjukolehR0,misalkanR0berisi50H,
makaakumulatorAdiORdengandatayangtersimpandialamat50Hdanhasilnya
disimpandiakumulatorA.
ORLA,#data
Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya
disimpandiakumulatorA.
ORLdirect,A
MelakukanoperasiORantaraalamatlangsungdenganakumulatorAsertahasilnya
disimpandialamatlangsungtersebut.
Contoh:
ORL07H,A
Datadialamat07HdiORdenganakumulatorAdanhasilnyakembalidisimpandi
alamat07H.
ORLdirect,#data
Melakukan operasi OR antara akumulator A dan immediate data serta hasilnya
disimpandiakumulatorA

XRL
MelakukanoperasiEXORantaraduabuahvariabeldanmenyimpannyadivariabel
tujuan.Apabila variabeltujuan adalahakumulator,makavariabelyanglaindapat
menggunakanregister(Rn), alamatlangsung,taklangsungatauimmediatedata,
apabila variabel tujuan adalah alamat langsung, maka variabel yang lain dapat
menggunakanakumulatoratauimmediatedata.
XRLA,Rn
Melakukan operasi EXOR antara akumulator A dan Rn (R0,...,R7) dan hasilnya
disimpandiakumulatorA.
XRLA,direct
MelakukanoperasiEXORantaraakumulatorAdanalamatlangsungdanhasilnya
disimpandiakumulatorA.
Contoh:
XRLA,05H
Akumulator A di EXOR dengan data di alamat 05H dan hasilnya disimpan di
akumulatorA.
CJNE@Ri,#data,rel
Melakukanperbandinganantaradatayangterletakpadaalamatyangditunjukoleh
Register Index (R0 atau R1) dan data immediate serta melakukan lompatan ke
alamatyangditentukanapabilahasilperbandingantidaksama.
Contoh:
CJNE@R1,#00H,lompat1
Programakanmenujukealamatlompat1apabiladatadialamatyangditunjukoleh
R1tidaksamadengandata00H.
DJNZRn,rel
MelakukanpenguranganpadaRn(R0,...,R7)dengan1danlompatkealamatyang
ditentukanapabilahasilnyabukan00.Apabilahasilnya telahmencapai00,maka
programakanterusmenjalankaninstruksidibawahnya.

Contoh:
Tunggu:
DJNZR7,Tunggu
RET
SelalumelakukanlompatankealamattunggudanmengurangiR7dengan1selama
nilaiR7belummencapai00.
DJNZdirect,rel
Melakukanpenguranganpadadatadialamatyangditunjuksecaralangsungdengan
1danlompatkealamatyangditentukanapabilahasilnyabukan00.Apabilahasilnya
telahmencapai00,makaprogramakanterusmenjalankaninstruksidibawahnya.
Contoh:
Tunggu:
DJNZ07H,Tunggu
RET
Selalumelakukanlompatankealamattunggudanmengurangidatapadaalamat
07H dengan 1 selama nilai pada data yang berada pada alamat 07H belum
mencapai00.

NOP
Instruksiiniberfungsiuntukmelakukantundaanpadaprogramsebesar1cycletanpa
mempengaruhiregisterregistermaupunflag.
PengenalanLingkunganPembuatanProgram
Dalam pembuatan program untuk Mikrokontroler dapat dilakukan dengan
menggunakan beberapa tool yang menyediakan fasilitas untuk itu. Lingkungan
Pembuatan Program atau sering disebut dengan Integrated Development
Environment atau disingkat IDE dalam hal ini terdapat banyak pilihan seperti
MikroBasicdenganbahasadasarBasic,MikroPascaldenganbahasadasarPascal.
DiluaritumasihterdapatlingkunganpembuatanProgramyangberbasisteksdimana
dapatdilakukandenganmenggunakanEditortekssepertiNotepad,WordPad,Kwrite
atauKate.

ProgramDownloader
ProgramDownloaderadalahprogramyangdapatdigunakanuntukmendownload
programobyekkememoriyangterdapatpadaMikrokontroler.Salahsatualatyang
sering digunakan untuk Downloader adalah Easy Downloader. Sesuai namanya
Easy Downloader adalah rangkaian Hardware yang dilengkapi dengan Software
yang digunakan untuk mengisi memori Mikrokontroler dengan mudah. Berikut ini
adalahgambardariEasyDownloader:

RangkaianEasyDownloader
PadagambartersebutterdapatduabuahChipMikrokontroler.ChipMikrokontroler
yangpertamaadalahICMasterdariMikrokontroleryangsudahdiisidenganprogram
EZ52.hex,sedangkanICyangkeduaadalahICSlavedariMikrokontroleryangakan
diisi oleh program Obyek. Pengisian IC Mikrokontroler Master dapat dilakukan di
tokoyangmenyediakanfasilitaspengisianMikrokontroler.
Langkahlangkah pengisian program obyek ke dalam IC Mikrokontroler adalah
sebagaiberikut:
1. Sebelum menyalakan power supply, letakkan IC Mikrokontroler Slave
AT89C51/52/55kedalamsocketslave.

2. HidupkanpowersupplyEasyDownloader.
3. Hubungkan kabel serial dar Komputer COM1 atau COM2 ke Easy
Downloader.ICmasterharussudahterisidenganprogramEZ52.hex
4. Jalankan software program EZ3.exe. Hasil tampilan dari EZ3.exe adalah
sepertiberikut:

TampilanprogramEZ3.exe
5. LakukanscanportterlebihdahulujikaComnyabelumterdeteksi.Jikasudah
terdeteksi,tekanCOMyangterdeteksi,misalnyaCOM1.Setelahitutunggu
sampaimuncultulisanpesan...identifyyourchip. Selanjutnya,tekanSend
HexfiledarilayarprogramEZ3.exe,lalupilihfile.hexyangakandimasukkan
keICSlaveMikrokontroler.
6. Program EZ.exe akan melakukan proses penghapusan, penulisan dan
verifikasi data. Jika tulisan Complete sudah muncul, berarti program .hex
sudahmasukkedalamICslave.
7. Sebelum mengambil IC Slave dari socket, matikan terlebih dahulu power
supplyuntukmrnghindarikerusakanICSlave.
8. ICSlavemikrokontrolersiapdigunakan.
PembuatanProgramAssembler
ProgramAssemblerdapatdibuatdenganmenggunakanbeberapaEditorteksyang
adasepertiprogramMsDOSEditoryangdapatdijalankanmelaluimenuStart|Run
danketikedit,selanjutnyaklikOK.Sebelummelakukanlangkahlangkahpembuatan

programAssembler,terdapatbeberapahalyangperludiperhatikan,yaitupindahkan
filefile(51.exe,asm51.exe,h.exe,oh.exe,tppatch.exedantvdemo.exe)kedalam
direktoriyangakandigunakanuntukmenyimpanprogram.Filefileprogramtersebut
diatasdapatdikopidariCDyangterdapatdalampaketEasyDownloader.Berikutini
adalahlangkahlangkahuntukmembuatprogramAssembler:

JalankanprogramEditorTeks:Notepad,Wordpad,atauMsDOSEditor

KetiklistingprogrampadaMsDOSEditor,lalusimpansebagai(SaveAs)dan
simpanfiletersebutdilokasifolderyangtelahditunjukmisalkanpadafolder
c:\asm.Ketiknamafiledariprogrammisalkanled.asm.

JalankanMsDOSPrompt.MsDOSPromptdapatdijalankandarimenuStart|
Programs|MsDOSPromptataudapatjugamelaluimenuStart|Run,lalu
ketikcmd,kemudianklikOK.

Tunjuknamafolderdarifileled.asm,yaituc:\asm.Saatmenjalankanprogram
MsDOSPrompt,awalnyaakanmenunjukkedefaultdirektoritertentu.Oleh
sebab itu pindahkan lokasi cursor ke folder c:\asm, dengan cara ketik cd
(spasi)c:\asm[Enter]

Kompilasiprogram*.asm

Kompilasifileprogram*.asmdenganmengetikkanasm51namafile.asmpada
MsDOS Prompt, misalkan c:\asm>asm51 led.asm. Proses kompilasi file
*.asminiakanmenghasilkanfiledenganekstensi*.lstdan*.obj

Jika terjadi kesalahan dalam kompilasi program tersebut, maka perbaiki


kesalahanpadaprogramdenganmembukadokumennamafile.lst.Padafile

.lstiniterdapatpenjelasantentangkesalahanprogramAssembleryangtelah
dibuat. Setelah diperbaiki, kompilasi ulang file *.asm seperti pada contoh
diatas.

Untukmembuatfiledenganekstensi.hex,ketikohnamafile.obj,misalkan:
c:\asm>ohled.obj

Jika tidak terjadi kesalahan maka anda telah berhasil dalam proses
pembuatanprogramAssemblerkebentukHeksa.

Simulator8051denganPeQUI
ProgramPequimerupakansalahsatuprogramsimulatoruntukmikrokontroler8051.
Dengan program ini, jalannya program yang telah dibuat dapat diketahui dan
dimonitor,jadiandadapatmengetahuialamatdaritiaptiapinstruksiprogram,isidari
registerAccumulator,SP,C,DPTR,R0R7danlainlain.Berikutiniadalahgambar
daripequi.exe:

Programpequi.exe
Langkahlangkahdalammenjalankanprogrampequiadalahsebagaiberikut:

Install program pequi.exe dari CD atau Dokumen yang disertakan dalam


Modulini.

Jalankanprogrampequi.exe

KlikLoadpadataskbarPequi,lalukliknamafile.hex,laluklikOpen.

Untukmenjalankanprogrampequisecaramanualataustepdemistep,klik
tombolStep.SetiapkaliandamengklikStep,akanterlihatjalannyainstruksi
programyangtelahdibuat.

Langkah lain untuk menjalankan program pequi secara otomatis adalah


denganmengkliktombolRun.Untukmengubahkecepatanjalannyaprogram,
AndadapatmembukamenuSettingdarimenuOptions|Speed,laluklikHigh
atauMediumatauLow.

KonfigurasiSpeed

Bila ingin menghentikan jalannya program, klik tombol Stop. Bila ingin
mengulangijalannyaprogramdariawal,klikReset.

Prosesperancangansoftwaretahapdemitahapperludilakukan,termasukmembuat
diagram alir yang merupakan alur atau langkahlangkah dari program yang akan
dibuat,dengandemikianakanlebihjelasdanmudahuntukmelihatcarakerjadari
program.
SebagaicontohpembuatanProgramLEDuntukmenyalakandanmematikanled.
DalamcontohinidimisalkanbahwaLed1terhubungdenganalamatregisterP1.4
dan led 2 tersambung dengan alamat port P1.6. Fungsi led digunakan untuk
mengecekprogramapakahsudahberjalansesuaidenganyangdiinginkan,sebelum
porttersebutdisambungdenganrangkaianelektronikyanglainnyayangmerupakan
bagiandarirobot.
ContohProgram*.asm:

;=====================================================
;
Listingprogramled
;menyalakandanmematikanleddengandelai1detik
;=====================================================
Org 00H
;=====================================================
;ledpadaP1.4danP1.6nyaladanmatisecara
;bersamaan
;=====================================================
Led_sama:
Clr
P1.4 ;led1nyala
Clr
P1.6 ;led2nyala
Acall delai_1s
Setb P1.4 ;led1mati
Setb P1.6 ;led2mati
Acall delai_1s
;=====================================================
;ledpadaP1.4danP1.6nyaladanmatisecara
;bergantian
;=====================================================
Led_ganti:
Clr
P1.4 ;led1nyala
Setb P1.6 ;led2mati
Acall delai_1s
Setb P1.4 ;led1mati
Clr
P1.6 ;led2nyala
Ajmp selesai
Delai_1s:
Mov r1,#8 ;pindahkandata8kealamatr1
Loop1:
Mov r2,#250
;pindahkandata250kealamatr2
Loop2:
Mov r3,#250
;pindahkandata250kealamatr3
Loop3:
Djnz r3,loop3

Djnz r2,loop2
Djnz r1,loop1
ret
Selesai:
End
LangkahPembuatanProgram:
1. KetiklistprogramAssemblerdiatas.
2. KompilasiProgramAssemblerandadenganprogramasm51.exedanoh.exe
untukmendapatkanfileobyek(*.obj)danformatheksa(*.HEX)

3. JalankanProgramPequi.exe
4. Lakukandownloadprogram*.HEXkeMikrokontrolerdenganEasy
Downloader.
5. PasanguCpadaboardRobot
6. Perhatikanhasilnya.