PETUNJUK PRAKTIKUM
SISTEM MIKROPROSESOR
Laboratorium Dasar Teknik Elektro
SEKOLAHTEKNIKELEKTRODANINFORMATIKA
INSTITUTTEKNOLOGIBANDUNG
2009
PETUNJUKPRAKTIKUM
SISTEMMIKROPROSESOR
MervinT.Hutabarat
HarrySeptanto
M.ZakiyullahRomdlony
EricAgustian
NarpendyahAriwardhani
LaboratoriumDasarTeknikElektro
SEKOLAHTEKNIKELEKTRODANINFORMATIKA
INSTITUTTEKNOLOGIBANDUNG
KataPengantar
i
KATAPENGANTAR
Puji dan syukur kami panjatkan pada Tuhan Yang Maha Esa karena rahmatNya telahmemberikan kami kesempatan untukmenyusun Petunjuk Praktikum Rangkaian ElektrikyangdisesuaikandenganKurikulumProgramStudiTeknikElektrotahun2008ini.Petunjukpraktikum ini mengalami cukup banyak perubahan dibandingkan dengan petunjukpraktikum sejenis sebelumnya. Hal ini dilakukan sejalan dengan rencana Program StudiTeknik Elektro untuk mengupayakan Akreditasi ABET Internasional. Tuntutan pekerjaanmahasiswadalampraktikum ini lebih tinggidenganpengharagaanbebansksyangsesuai.Dalammelaksanakan praktikum ini,mahasiswa dituntut juga untukmenggunakan BukuCatatan Laboratorium dengan pola pencatatan sesuai baku yang berlaku sebagai buktidalam perselisihan terkait pengajuan paten di negara maju guna melatih mahasiswamenjadiengineeryangbaik.
Pada kesempatan ini, kami inginmenyampaikan terima kasih yang besarbesarnya padasemuapihakyangtelahterlibatdalampenyusunanpetunjukpraktikum ini.SecarakhususuntukanggotaTimPenyusunPetunjukPraktikumRangkaianElektrik,MasHarrySeptanto,MasEricAgustian,MasM.ZakiyullahRomdlonydanMbakNarpendyahAriwardhani,yangsudah memberikan tenaga, pikiran dan waktunya untuk perbaikan praktikum dalamProgram Studi Teknik Eletro ini.Ucapan terima kasih juga disampaikan untuk dukunganrekanrekan teknisi di Laboratorium Dasar Teknik Elektro, Pak Suparyanto, Pak SandraIrawandanMbakNinaLestari.
Akhir kata, semoga semua usaha yang telah dilakukan berkontribusi pada dihasilkannyalulusanProgramStudiTeknikElektrosebagaiengineerdenganstandarinternasional.
Bandung,September2009
TimPenyusunPetunjukPraktikumRangkaianElektrik
KetuaTim,
Ir.MervinT.Hutabarat,M.Sc.,Ph.D.
ii
DaftarIsi
iii
DAFTARISI
KataPengantar i
DaftarIsi iii
AturanUmumLaboratorium v
PanduanUmumKeselamatandanPenggunaanPeralatanLaboratorium vii
Percobaan1BasicInput/Output 1
Percobaan2Timer/CounterdanInterrupt 13
Percobaan3AksesSerialdanReviewModul 23
Percobaan4:7Segment,KeypaddanLCDDotMatriks 33
Percobaan5dan6PerancanganAplikasi 49
ApendiksADT51 51
ApendiksBSetInstruksi8051 55
ApendiksCKabelKabel 59
ApendiksDKodeASCII 61
iv
AturanUmumLaboratorium
v
ATURANUMUMLABORATORIUM
KELENGKAPAN
Setiappraktikanwajibberpakaian lengkap,mengenakancelanapanjang/rok,kemejadanmengenakansepatu.Praktikanwajibmembawakelengkapanberikut:
Modulpraktikum BukuCatatanLaboratorium(BCL) Alattulis(dankalkulator,jikadiperlukan) Nametag KartuPraktikum
PERSIAPAN
SEBELUMPRAKTIKUM
Membacadanmemahamiisimodulpraktikum Mengerjakan halhal yang dapat dikerjakan sebelum praktikum dilaksanakan,
misalnya mengerjakan soal perhitungan, menyalin source code, mengisi KartuPraktikumdll.
MengerjakanTugasPendahuluan (TP)setiapPercobaan.TPdapatdilihatdipapanpengumumanLab.Dasardandihttp://labdasar.ee.itb.ac.id
Mengisidaftarhadir Mengambil kunci loker dan melengkapi administrasi peminjaman kunci loker
(tukarkandengankartuidentitas:KTM/SIM/KTP)
SELAMAPRAKTIKUM
Perhatikan dan kerjakan setiap percobaan denganwaktu sebaikbaiknya, diawalidengankehadiranpraktikansecaratepatwaktu
KumpulkanKartuPraktikumpadaasisten DokumentasikanpadaBCL(lihatPetunjukPenggunaanBCL)tentanghalhalpenting
terkaitpercobaanyangsedangdilakukan
SETELAHPRAKTIKUM
PastikanBCLtelahditandatanganiolehasisten Kembalikan kunci loker dan melengkapi administrasi pengembalian kunci loker
(pastikankartuidentitas(KTM/SIM/KTP)diperolehkembali)
AturanUmumLaboratorium
vi
Kerjakan laporansesuaidengantemplateFormatLaporanyangdapatdiperolehdihttp://labdasar.ee.itb.ac.id
Kumpulkan laporanpada lemari (sesuainamaasistennya)di ruangLoket,sebelahruang Lab Dasar. Waktu pengumpulan paling lambat jam 16.30, hari kerjaberikutnyasetelahpraktikum
PERGANTIANJADWAL
KASUSBIASA
Pertukaranjadwalhanyadapatdilakukanperkelompokdanganmodulyangsama IsiFormPergantian Jadwal (dapatdiperolehdi labdas.ee.itb.ac.id), lalu tunjukkan
pada asisten yang bersangkutan, Kordas yang bersangkutan atau TU Lab. Dasaruntukditandatangani
SerahkanFormPergantianJadwalyangsudahditandatanganitadipadaasistensaatpraktikum
KASUSSAKITATAUURUSANMENDESAKPRIBADILAINNYA
Isi Form Pergantian Jadwal dengan melampirkan surat keterangan dokter (bagiyangsakit)atausuratterkaitlainnya
FormPergantianJadwaldiserahkanpadaTULab.Dasar Praktikan yang bersangkutan sebelum kesempatan jadwal praktikum selanjutnya
harusmemintajadwalpraktikumpenggantikeKordaspraktikumterkait
KASUSKEPENTINGANMASSAL
Kepentinganmassal terjadi jika ada lebih dari 1/3 rombongan praktikan yangtidakdapatmelaksanakanpraktikumpadasatuhariyangsamakarenaalasanyangterkaitkegiatanakademis
Isi FormPergantian Jadwaldan serahkanpadaTU Lab.Dasar secepatnya. JadwalpraktikumpenggantisatuhariituakanditentukankemudianolehKordaspraktikumyangbersangkutan
SANKSIPengabaian aturanaturan di atas dapat dikenakan sanksi pengguguran nilai praktikumterkait.
PanduanUmumKeselamatandanPenggunaanPeralatanLaboratorium
vii
PANDUANUMUMKESELAMATANDANPENGGUNAANPERALATANLABORATORIUM
KESELAMATAN
Padaprinsipnya,untukmewujudkanpraktikum yang amandiperlukanpartisipasi seluruhpraktikan dan asisten pada praktikum yang bersangkutan. Dengan demikian, kepatuhansetiap praktikan terhadap uraian panduan pada bagian ini akan sangat membantumewujudkanpraktikumyangaman.
BAHAYALISTRIK
Perhatikan dan pelajari tempattempat sumber listrik (stopkontak dan circuitbreaker)dancaramenyalamatikannya.Jikamelihatadakerusakanyangberpotensimenimbulkanbahaya,laporkanpadaasisten
Hindaridaerahataubendayangberpotensimenimbulkanbahaya listrik(sengatanlistrik/strum)secaratidakdisengaja,misalnyakabeljalajalayangterkelupasdll.
Tidakmelakukansesuatuyangdapatmenimbulkanbahaya listrikpadadirisendiriatauoranglain
Keringkanbagiantubuhyangbasahkarena,misalnya,keringatatausisaairwudhu Selaluwaspadaterhadapbahayalistrikpadasetiapaktivitaspraktikum
Kecelakaanakibatbahayalistrikyangseringterjadiadalahtersengataruslistrik.Berikutiniadalahhalhalyangharusdiikutipraktikanjikahalituterjadi:
Janganpanik Matikansemuaperalatanelektronikdansumberlistrikdimejamasingmasingdan
dimejapraktikanyangtersengataruslistrik
Bantupraktikanyangtersengataruslistrikuntukmelepaskandiridarisumberlistrik Beritahukandanmintabantuan asisten,praktikan laindanorangdi sekitar anda
tentangterjadinyakecelakaanakibatbahayalistrik
BAHAYAAPIATAUPANASBERLEBIH
Janganmembawabendabendamudahterbakar(korekapi,gasdll.)kedalamruangpraktikumbilatidakdisyaratkandalammodulpraktikum
Janganmelakukan sesuatuyangdapatmenimbulkanapi,percikanapiataupanasyangberlebihan
PanduanUmumKeselamatandanPenggunaanPeralatanLaboratorium
viii
Jangan melakukan sesuatu yang dapat menimbulkan bahaya api atau panasberlebihpadadirisendiriatauoranglain
Selalu waspada terhadap bahaya api atau panas berlebih pada setiap aktivitaspraktikum
Berikut ini adalah halhal yang harus diikuti praktikan jikamenghadapi bahaya api ataupanasberlebih:
Janganpanik Beritahukandanmintabantuan asisten,praktikan laindanorangdi sekitar anda
tentangterjadinyabahayaapiataupanasberlebih
Matikansemuaperalatanelektronikdansumberlistrikdimejamasingmasing Menjauhdariruangpraktikum
BAHAYABENDATAJAMDANLOGAM
Dilarangmembawabendatajam(pisau,guntingdansejenisnya)keruangpraktikumbilatidakdiperlukanuntukpelaksanaanpercobaan
Dilarangmemakaiperhiasandarilogammisalnyacincin,kalung,gelangdll. Hindaridaerah,bendaataulogamyangmemilikibagiantajamdandapatmelukai Tidakmelakukansesuatuyangdapatmenimbulkanlukapadadirisendiriatauorang
lain
LAINLAIN Dilarangmembawamakanandanminumankedalamruangpraktikum
PENGGUNAANPERALATANPRAKTIKUM
Berikutiniadalahpanduanyangharusdipatuhiketikamenggunakanalatalatpraktikum:
Sebelummenggunakanalatalatpraktikum,pahamipetunjukpenggunaanalat itu.Petunjuk penggunaan beberapa alat dapat didownload dihttp://labdasar.ee.itb.ac.id
Perhatikandanpatuhiperingatan(warning)yangbiasaterterapadabadanalat Pahami fungsi atau peruntukan alatalat praktikum dan gunakanlah alatalat
tersebut hanya untuk aktivitas yang sesuai fungsi atau peruntukannya.Menggunakan alat praktikum di luar fungsi atau peruntukannya dapatmenimbulkankerusakanpadaalattersebutdanbahayakeselamatanpraktikan
Pahami rating dan jangkauan kerja alatalat praktikum dan gunakanlah alatalattersebutsesuairatingdanjangkauankerjanya.Menggunakanalatpraktikumdiluar
PanduanUmumKeselamatandanPenggunaanPeralatanLaboratorium
ix
ratingdan jangkauan kerjanyadapatmenimbulkan kerusakanpada alat tersebutdanbahayakeselamatanpraktikan
Pastikan seluruh peralatan praktikum yang digunakan aman dari benda/ logamtajam,api/panasberlebihataulainnyayangdapatmengakibatkankerusakanpadaalattersebut
Tidakmelakukan aktifitas yangdapatmenyebabkan kotor, coretan, goresan atausejenisnyapadabadanalatalatpraktikumyangdigunakan
SANKSIPengabaian uraian panduan di atas dapat dikenakan sanksi tidak lulus mata kuliahpraktikumyangbersangkutan.
x
Percobaan1:BasicInput/Output
1
PERCOBAAN1BASICINPUT/OUTPUT
BASICI/ODENGANPORT1
TUJUANPraktikanmampumembuat program input dan outputmenggunakan PORT1 dari DT51MinSysdengancaramengaksesPORT1secaraperbitdanperbyte
DASARTEORIPerangkatkerasyangdigunakandalampraktikuminiadalahDT51MinSysver3.0danDT51TrainerBoard.DT51MinSysmerupakansuatu sistemminimumberbasis89S51 (salahsatukeluargaMCS51),sedangkanDT51TrainerBoardmerupakanboardpendukungDT51MinSys untukmengamati keluaran (output) ataumemberimasukan (input) pada sistemminimum.
Gambar 1 DT-51 MinSys ver 3.0
BerikutinimerupakanspesifikasisingkatdariDT51MinimumSystemver3.0:
memilikimemorieksternalsebesar8MB; 4byteportinput/output(I/O),yaituPORT1dari89S51dan3portPPI(yaituPORTA,
PORTB,danPORTC);
PortCONTROLyangmeliputiinterrupteksternaldancountereksternal89S51
Percobaan1:BasicInput/Output
2
portLCD;dan serialinterfacestandardRS232untukkomunikasiDT51MinSysdenganPC.
AdapunspesifikasisingkatdariDT51TrainerBoardadalahsebagaiberikut:
8ledsebagaioutput(OUTPUTLEDDISPLAY); 8toggleswitchsebagaiinput(SWITCHINPUT); 2sevensegmentsebagaiscanningoutput(SCANNING7SEGMENTDISPLAY),dengan
konektordatanyaterdapatpadaportDATA7SdankonektorpemilihnyaterdapatpadaportI/PSKEY;
4keypadsebagaiscanning input(SCANNINGKEYPAD),dengankonektor inputdanoutputterdapatpadaportI/PSKEY;
CLOCKGENERATOR1Hz,1kHz,dan10kHz.Konektoroutput terdapatpadaCO1danCO2;dan
4keypadsebagaiinputbagiinterruptdancounter(INTERRUPT&COUNTERINPUT).KonektoroutputterdapatpadaIS1,IS2,IS3,danIS4.
Gambar 2 DT-51 Trainer Board
BeberapaportpadasistemminimumDT51iniakandihubungkandenganportpadatrainerboard.KhususuntukmenghubungkanportCONTROLpada sistemminimumdenganportCONTROLpadatrainerboard,digunakankabeltipeXsepertipadaGambar3dibawahini.Penggunaan kabel tipe ini dikarenakan posisi pin VCC dan GND pada sistemminimumdengantrainerboardterbalik.
Percobaan1:BasicInput/Output
3
Gambar 3 Kabel tipe X
Gambar 4 Penggunaan kabel tipe X untuk menghubungkan kedua port "CONTROL"
Komunikasi antara PC dangan DT51 MinSys dilakukan melalui SERIAL PORT (dengankonektorDB9).PadaPC,serialport inidiberi labelCOM,misalCOM1atauCOM2.MelaluikomunikasiinipulaprogramyangdibuatpadasetiappercobaandidownloaddariPCkeDT51MinSys.HubungkankabelserialsepertipadaGambar5untukmenjalankankomunikasitersebut.
Gambar 5 Hubungan DT-51 MinSys dengan PC
Percobaan1:BasicInput/Output
4
PadapraktikuminiakandigunakanprogramberbahasaAssembly.Listingprograminiditulisdan diubah denganmenggunakan editor Notepad dan disimpan dengan format (namafile).ASM.FileyangakandidownloadkeDT51MinSysmemiliki format (nama file).HEX.UntukmengubahlistingprogrampadaNotepadmenjadisuatufileheksadesimaldigunakansuatuhexassembler,yaituASM51.EXE.
Proses assembling dilakukan dengan mengetikkan ASM51 (nama file) pada MSDOSprompt (pada folder yang memuat semua file yang akan diassemble tersebut). Jikaterdapat kesalahan pada listing program,maka akan dihasilkan file (nama file).LST yangberisipesan errordan lokasinya. File ini jugaberisi alokasi (alamat)memoripada listingprogram.
Setelah dilakukan proses assembling,maka file heksadesimal siap didownload keDT51MinSys. Langkah ini dilakukan dengan bantuanDT51L.EXE, denganmengetikkan DT51L(namafile).HEXpadaMSDOSpromptataudenganmenggunakanversiDT51Lyang lebihuserfriendly,yaituDT51LWin.EXE.
PERINTAHYANGDIGUNAKAN
SJMP,LJMP MOV,MOVX SETB,CLR JB,JNB JC,JNC CJNE
PERCOBAAN1.1:PORT1SEBAGAIOUTPUT
Persiapan Hubungkan PORT1 DT51MinSys dengan PORT OUTPUT DT51 Trainer Board
menggunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board(sebagaisumbertegangan)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmengunakankabelserialDB9pin.
HubungkanDT51MynSysdengansumbertegangan.
Perhatikan:
1. Perhatikan gambar 4 pada bagian Dasar Teori. Pemasangan kabel X pada portcontrol jangan sampai terbalik. Bagian kabel yang bersilangan (cross) dipasangpadapin1dan2(sisikiri);
2. PadakitpraktikuminidigunakanteganganVs=12V.
Percobaan1:BasicInput/Output
5
Program 1.1 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 CSEG ORG 4000H LJMP START START: CLR P1.0 CLR P1.1 CLR P1.2 SETB P1.3 SETB P1.4 SETB P1.5 CLR P1.6 CLR P1.7 SJMP $ END
Tugas 1.1 Modifikasi program di atas sehingga menghasilkan keluaran led (OUTPUT LED DISLAY)sesuaidenganrepresentasibinerdarinomorkelompokAnda(dimana,nyala=1,padam=0)Petunjuk: Lihatperintahprogram yangberkaitandengan aksesport (yaitu yangmemilikioperandP1.x).
AnalisiskeluaranpadaOUTPUTLEDDISPLAYdanpengaruhdarisetiaplineprogramyangAndabuatsehinggamenghasilkankeluaransepertiitu.
Catatan:
PerintahSJMP$padaprogramakanmenyebabkanprogramberputar(looping)padaalamat(address)dimanaperintahSJMP$berada.
BASICI/ODENGANPPIPORT
TUJUANPraktikanmampumembuatprogram inputdanoutputmenggunakanPPI (ProgrammablePeripheralInterface)Port(PORTA,PORTBdanPORTC)padaDT51MinSys.
DASARTEORIPPIPortmerupakanportekspansi (tambahan) yang terdiridari tigaport:PORTA (beradapadaalamat2000h),PORTB(beradapadaalamat2001h)danPORTC(beradapadaalamat2002h).Masingmasingporttersebutmemilikijalurdatainputdanoutputselebar8bit.
Penggunaan PPI Port pada 82C55 tidak sesederhana penggunaan PORT1 yang telahdisediakan oleh AT89S51. Untukmenggunakan port PPI harus didahului dengan prosesinisialisasi. Proses inisialisasi dilakukan denganmenggunakan ControlWord yang beradapadaalamat2003h.Dengandemikian,denganControlWordinilahdapatdiaturportmanayangaktifdanmodeapayangdigunakanpadaPORTA,PORTBdanPORTCPPI.
Percobaan1:BasicInput/Output
6
ControlWordBerikutinipenjelasannilaiControlWorduntukinisialisasi:
MSB(MostSignificantBit) LSB(LeastSignificantBit)
D7 D6 D5 D4 D3 D2 D1 D0
Simbol Fungsi
D7 SetFlag,berlogika1untukmengaktifkanPPIPort.
D6&D5 Mode Select untuk PORTA dan PORTC Upper (bit 7 bit 4), bernilai 00 untuk mode 0, 01 untuk mode 1, dan 10 atau 11 untuk mode 2. Praktikum ini hanya menggunakan mode 0 sehingga nilainya selalu 00.
D4 PORTA, berlogika 1 untuk input dan berlogika 0 untuk output.
D3 PORTC Upper, berlogika 1 untuk input dan berlogika 0 untuk output.
D2 Mode Select untuk PORTB dan PORTC Lower (bit 3 bit 0), berlogika 0 untuk mode 0 dan berlogika 1 untuk mode 1. Praktikum ini hanya menggunakan mode 0 sehingga selalu berlogika 0.
D1 PORTB, berlogika 1 untuk input dan berlogika 0 untuk output.
D0 PORTC Lower, berlogika 1 untuk input dan berlogika 0 untuk output.
Setelahprosesinisialisasidilakukan,PPIPortdapatdiaksesperbyte.
AksesPortperbitPadaPPIPortSelaindiaksesperbyte,PPIPortdapat jugadiaksesperbit (Bit Set/Reset).Aksesperbithanya terbatas pada PORTC saja dan hanya sebagai output saja. Meski menggunakanPORTC,tetapiaksesperbitbukanberartimengakseslangsungkealamatPORTC.AksesperbitdidapatdenganmengaksesControlWord.
BerikutinipenjelasannilaiControlWorduntukmengaksesportperbit.
MSB LSB
D7 D6 D5 D4 D3 D2 D1 D0
Simbol Fungsi
D7 SetFlag,berlogika0untukmengaktifkanaksesperbit.
D6, D5,D4
Bitbersifatdontcare(dapatdiisilogika0atau1).Disarankanuntukmengisidenganlogika0.
Percobaan1:BasicInput/Output
7
D3, D2,D1
Bit SelectuntukmenentukanbitpadaPORTC yangakandiakses.Keteranganlebihjelasditunjukkanolehtabel2.
D0 BitSet/ResetuntukPORTC.Berlogika1untukSetdan0untukReset.
BitpadaPortC
7 6 5 4 3 2 1 0
D3 1 1 1 1 0 0 0 0
D2 1 1 0 0 1 1 0 0
D1 1 0 1 0 1 0 1 0
PERINTAHYANGDIGUNAKAN
SJMP,LJMP MOV,MOVX ACALL,RET DJNZ CJNE
PERCOBAAN1.2:PORT1SEBAGAIINPUTDANPORTASEBAGAIOUTPUT
Persiapan HubungkanPORT1DT51MinSysdenganPORTINPUTDT51TrainerBoard
menggunakankabeltipeY.
Hubungkan PORTA DT51 MinSys dengan PORT OUTPUT DT51 TrainerBoardmenggunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board(sebagaisumbertegangan)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmengunakankabelserial. HubungkanDT51MynSysdengansumbertegangan.
Program 1.2 Jalankan program di bawah ini, analisis dan buatlah diagram alirnya (keterangan: ubah posisi SWITCH INPUT masing-masing bit).
Percobaan1:BasicInput/Output
8
$mod51 CSEG ORG 4000H LJMP START START: INIT: MOV DPTR, #2003H MOV A, #80H MOVX @DPTR, A LABEL: JB P1.4, DISPLAY2 DISPLAY1: MOV DPTR, #2000H MOV A, #00H MOVX @DPTR, A SJMP LABEL DISPLAY2: MOV DPTR, #2000H MOV A, #55H MOVX @DPTR, A SJMP LABEL END
Tugas 1.2 ModifikasiprogramdiatassehinggajikaSWITCHINPUTbitke0disetsamadengan1akanmenghasilkan keluaranLED(nyala=1, padam=0)sesuaidenganrepresentasibinerdarinomorkelompokAnda.
AnalisiskeluaranpadaOUTPUTLEDDISPLAYdanpengaruhdarisetiaplineprogramyangAndabuatsehinggamenghasilkankeluaransepertiitu.
PERCOBAAN1.3:KOMBINASIPPIPORTSEBAGAIINPUTDANOUTPUT
Persiapan Hubungkan PORTA DT-51 MinSys dengan PORT OUTPUT DT-51 Trainer
BoardmenggunakankabeltipeY.
HubungkanPORTBDT-51MinSysdenganPORTINPUTDT-51TrainerBoardmenggunakankabeltipeY.
Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51TrainerBoard(sebagaitegangansumber)menggunakankabeltipeX.
HubungkanDT-51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Program 1.3 Jalankan program di bawah ini, analisis dan buatlah diagram alirnya (keterangan: ubah posisi SWITCH INPUT masing-masing bit).
$mod51 PORTA EQU 2000H PORTB EQU 2001H CW EQU 2003H
CSEG
Percobaan1:BasicInput/Output
9
ORG 4000H LJMP START DELAY:
MOV R7, #04H LUP1: MOV R6, #0FFH LUP2: MOV R5, #0FFH
DJNZ R5, $ DJNZ R6, LUP2 DJNZ R7, LUP1 RET
START: MOV SP, #30H
INIT: MOV DPTR, #CW MOV A, #82H MOVX @DPTR, A
LOOP: MOV DPTR, #PORTB MOVX A,@DPTR MOV DPTR, #PORTA MOVX @DPTR, A ACALL DELAY SJMP LOOP END
Tugas 1.3: Modifikasi program di atas sehingga PORTAmenjadi input dan PORTBmenjadi output(Petunjuk: perhatikan posisi kabel dan nilai CW). Analisis keluaran pada OUTPUT LEDDISPLAYdanpengaruhdari setiap lineprogram yangAndabuat sehinggamenghasilkankeluaransepertiitu.
I/OPORTDENGANDELAYSetiap instruksimemiliki totalwaktukomputasiyangberbedayang tergantungdarisiklus(cycle)yangdiperlukan,besarnyafrekuensiosilator,sertapembagifrekuensiosilatorutamayangdigunakan.Perhitunganwaktuinstruksisetiapcyclenyaadalahsebagaiberikut:
ttiapcycle=12/fosilator
Sedangkan besarnya waktu untuk tiap instruksi bergantung pada jumlah siklus yangdibutuhkaninstruksitersebut.
Untuk beberapa kasus, potongan program delay dibutuhkan untuk memberikan jeda,karenakecepataninstruksilebihcepatdarikemampuanmanusiauntukmeresponkeadaan.Berikutinimerupakanprogramyangmenggunakandelaydidalamnya.
PERCOBAAN1.4:PORT1DENGANDELAY
Persiapan: HubungkanPORT1DT51MinSysdenganPORTOUTPUTDT51TrainerBoard
menggunakankabeltipeY.
Percobaan1:BasicInput/Output
10
Hubungkan CONTROL DT51MinSys dengan CONTROL DT51 Trainer Board(sebagaitegangansumber)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Program 1.4: Jalankan program di bawah ini, analisis dan buatlah diagram alirnya (keterangan: ubah posisi SWITCH INPUT masing-masing bit). $mod51 ;Membuat running led dengan delay dari DJNZ CSEG ORG 4000H LJMP START START: MOV A,#01H MOV P1,A LED1: RL A CJNE A,#10H,LED2 LCALL DELAY1 MOV P1,A LJMP LED1 LED2: LCALL DELAY2 MOV P1,A LJMP LED1 DELAY1:
MOV R7,#0C8H ;200 LUP1: MOV R6,#64H ;100 LUP2: MOV R5,#64H ;100 DJNZ R5,$ DJNZ R6,LUP2 DJNZ R7,LUP1 RET DELAY2:
MOV R7,#32H ;50 LUP3: MOV R6,#64H ;100 LUP4: MOV R5,#64H ;100 DJNZ R5,$ DJNZ R6,LUP4 DJNZ R7,LUP3 RET END
Programdiatasmenghasilkandua jenisdelay, jikadiasumsikan frekuensiosilatoradalah12MHzmakasecaraperhitungankasarpadaprograminiterdapatdelaypanjangsebesar4detikdandelaypendeksebesar1detik.(untukfrekuensiosilatorreal=11,0592Mhz;delayreal4,4detikdan1,1detik)
Modifikasiprogramdiatas sehinggapada setiapperpindahanoutput LED terdapatdelaypanjangdandelaypendek yang sama, yaitu sebesar xdetik.Nilai x inibergantungpadanomorkelompokAnda,dimana:
X=(No.Kelompokmod10)+2
Percobaan1:BasicInput/Output
11
AnalisiskeluaranpadaOUTPUTLEDDISPLAYdanpengaruhdarisetiaplineprogramyangAnda buat. Jelaskan perhitungan delay pada program yang Anda buat. Untukmempermudahperhitungan,Andabolehmenggunakanasumsif=12Mhz.
Percobaan1:BasicInput/Output
12
Percobaan2:Timer/CounterdanInterrupt
13
PERCOBAAN2TIMER/COUNTERDANINTERRUPT
DASARPENGGUNAANTIMER
TUJUAN PRAKTIKUM Praktikanmampumembuatprogrammenggunakantimerpadamikrokontroler8051dalamberbagaivariasimodetimerdanjenistimer.
DASAR TEORI Dalammenggunakantimer,kitamemerlukansettingbeberaparegisteryangterkaitdengantimer sehingga timer bisa bekerja sesuai dengan keinginan kita. Berikut ini adalahpenjelasanmengenairegisteryangakandigunakan.
TMODRegister ini terdiri dari 8 bit dan tidak bitaddressable. Empat bit pertama (LSB) padaregisterinidigunakanuntukmengaturtimer0,danempatbitselanjutnya(MSB)digunakanuntukmengaturtimer1.
MSB LSB
GATE(1) C/~T(1) M1(1) M0(1) GATE(0) C/~T(0) M1(0) M0(0)
Timer1 | Timer0
Simbol Fungsi
GATE(X) Jikabitinibernilai1,timeryangbersangkutanakandimulaijika(~INTXdanTRX)=1.Sedangkan jikabit inibernilai0, timeryangbersangkutanakandimulaijikaTRX=1.
C/~T(X) JIka bit ini bernilai 1,maka fungsi yang dijalankan adalah counter, yaitutimeryangbersangkutanakandiincrementsetiaptransisi1ke0padapinTX. Sedangkan jika bit ini bernilai 0maka fungsi yang dijalankan adalahtimer,yaitu timerakandiincrement1 setiap siklusmesin.Kedua fungsi inihanyaakanberjalanjikaTRXdiset1.
M1(X)/M0(x) Bitinimenentukanmodeoperasitimer.Lihatpadabitdibawah.
Percobaan2:Timer/CounterdanInterrupt
14
M1 M0 Mode ModeKerja
0 0 0 Timer13bit.
0 1 1 Timer16bit
1 0 2 Autoreload8bit
1 1 3 Splittimer
TCONRegister ini terdiri dari 8 bit dan dapat diakses perbit. Sesuai namanya register inimerupakan kendalidari timer yangberfungsiuntukmengendalikan kapan timerbekerja,menandakanketikaadanyaoverflowataupunpenunjukjikaterjadiinterupsipadatimer.
MSB LSB
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Simbol Fungsi
TF(x) Bit ini secaraotomatisdisetbernilai 1 jikaTimer(x)overflow.Bit ini jugamemicu interrupt pada Timer(x). Bit ini secara otomatis diset bernilai 0ketika interupsi timer(x)dieksekusiataubisa jugadilakukan secaramanualmelaluiprogram.
TR(x) BitiniberfungsiuntukpenandadimulainyaTimer(x).Setbitinikenilai1jikainginmenjalankanTimer(x).
IE(x) Bit ini diset secara otomatis oleh mikrokontroller untuk mengindikasikanterjadi kondisi interupsi eksternal(x). Perubahan bit ini bisa dipicu olehtransisi10(fallingedge)dariportINT(x)atauketikaINT(x)berlogika0,haliniditentukan oleh konfigurasi IT(x). Jika bit ini bernilai 1maka rutin darivector Interupsi Eksternal(x) akan dieksekusi. Bit ini secara otomatis akandihapusjikainterupsiterjadi.
IT(x) Bit inidigunakanuntuk konfigurasi apakah interupsi eksternal akan terjadisaatpintINT(x)padatransisi10atauketikaberlogika0.Jikabitinibernilai1interupsieksternalakaterjadiketikatransisi10.
TH(x)danTL(x)TH(x)dan(TL(x)merupakansepasangregisteryangdigunakanuntukmenampungnilaiyangdibutuhkanuntuktimer.Penggunaannyabergantungpadamodetimeryangdigunakan.Jikamode16bittimer,makanilaiTH(x)danTL(x)dipakaiuntuknilaiawaltimeryangkemudian
Percobaan2:Timer/CounterdanInterrupt
15
setiap satu cycle akan ditambah 1 hinggamencapai overflow (peralihan dari FFFFH0000H). Jikamode 8bit autoreloadmakahanyanilai TH(x) yangditambah setiapwaktusedangkannilaiTL(x)akandiisikankeTH(x)jikaterjadioverflowdanlainsebagainya.Untuklengkapnyasilahkanbacadatasheet8051.
PERINTAH YANG DIGUNAKAN MOV CLR,SETB LJMP,JNB,CJNE,JB INC ACALL,RET PUSH,PULL
SPECIAL FUNCTION REGISTER YANG DIGUNAKAN TMOD TCON THx TLx SP
PERCOBAAN2.1:TIMER/COUNTER0SEBAGAITIMERMODE0/1
Persiapan Hubungkan PORT1 DT51MinSys dengan PORT OUTPUT DT51 Trainer Board
menggunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board (sebagaisumbertegangan)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Program 2.1 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$MOD51 ORG 4000H LJMP START START: MOV R0,#00H MOV P1,#0FFH CLR P1.4
Percobaan2:Timer/CounterdanInterrupt
16
INITTIM: MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#0EFH SETB TR0 MOV A,#0FFH CHECK: JNB TF0,CHECK LCALL RELOAD LJMP PENGALI PENGALI: INC R0 CJNE R0,#32H,CHECK MOV R0,#00H LJMP LED LED: CJNE A,#00H,NYALA LJMP MATI MATI: CLR P1.4 MOV A,#0FFH LJMP CHECK NYALA: SETB P1.4 MOV A,#00H LJMP CHECK RELOAD: CLR TR0 MOV TH0,#0D8H MOV TL0,#0EFH CLR TF0 SETB TR0 RET
END
Tugas 2.1 Modifikasi program di atas sehingga antara 4bit LSB dengan 4 bitMSB berkedip secarabergantiandenganwaktuperiodekedipLEDberkisarxdetik,dimanax= (modulus9darino.grup) + 1; asumsikan frekuensi clock 12MHz. (Petunjuk: perhatikan cara kerja nilaipengalidannilairegisterTH/TXsertaclockdivideryangterdapatpadamikrokontroler).
PERCOBAAN2.2:TIMER/COUNTER0SEBAGAICOUNTERMODE2(8BITAUTORELOAD)
Persiapan Hubungkan PORT1 DT51MinSys dengan PORT OUTPUT DT51 Trainer Board
menggunakankabeltipeY.
HubungkanIS3denganT0padaDT51TrainerBoard. Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board
menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Percobaan2:Timer/CounterdanInterrupt
17
Program 2.2 Jalankan program di bawah ini, analisis dan buatlah diagram alirnya. Keterangan: TekantombolIS3beberapakalidanperhatikankeluaranpadaOUTPUTLEDDISPLAY.
$mod51 CSEG ORG 4000H LJMP START
START:
INITCO: MOV TMOD, #06H MOV TH0, #0FBH MOV TL0, #0FBH CLR TF0 MOV A, #00H SETB TR0
LED1: MOV A, TL0 SUBB A, #0FBH JB TF0, LED2 MOV P1, A LJMP LED1
LED2: MOV P1, #0FFH ACALL DELAY LJMP START
DELAY: MOV R7, #04H LUP1: MOV R6, #0FFH LUP2: MOV R5, #0FFH
DJNZ R5, $ DJNZ R6, LUP2 DJNZ R7, LUP1 RET END
Tugas 2.2 Modifikasi program diatas sehinggamomen LEDmenyala semua sejenak adalah ketikatombolditekansejumlahxkali,dimanax= (modulus9darino.grup)+1.Untukreferensijumlahpenekanan tombol lihat representasibinerdari jumlahpenekananyangadapadaOUTPUTLEDDISPLAY.
DASARPENGGUNAANINTERUPT
TUJUAN PRAKTIKUM Praktikan mampu membuat program dengan memanfaatkan fasilitas interupsi yangtersediapadamikrokontroler
DASAR TEORI Dalam menggunakan interupsi, ada beberapa register yang dimanfaatkan untuk rpsespengaturanjalannyainterupsi.Penjelasansingkatnyaadalahsebagaiberikut:
Percobaan2:Timer/CounterdanInterrupt
18
IE(InteruptEnable)Register ini terdiri dari 8 biat dan bit addressable, register ini digunakan untukmengaktifkanregisteryangkitainginkanyangterdapatpadamikrokontroler.
MSB LSB
EA ES ET1 EX1 ET0 EX0
Simbol Fungsi
EA Jikakitainginmenggunakanfasilitasinterupsi,makabitiniharusdisetpertamakali.Jikabitinibernilai0tidakakanadainterupsiyangbisaterjadi.
ES BitinidigunakanuntukmengaktifkanInterupsiSerialPort.Jikabernilai1makarutinInterupsiSerial(0023H)akandipanggilketikabitTIatauRIbernilai1.
ET(x) Bit inidigunakanuntukmengaktifkan interupsiTimer(x). Jikabernilai1 rutininterupsitimerakandipanggilketikabitTF(x)bernilai1.
EX(x) BitinidigunakanuntukmengaktifkaninterupsiExternal(x).Jikabernilai1rutininterupsieksternalakandipanggilketikabitIE(x)bernilai1.
IP(InterruptPriority)Register ini terdiri dari 8 bit dan bit addressable, register ini digunakan untukmemilihprioritas interupsi, interupsidenganprioritas lebih tinggiakandieksekusi terlebihdahulujikaterjadi2interupsipadawaktuyangsama.
MSB LSB
PT2 PS PT1 PX1 PT0 PX0
Simbol Fungsi
PT(x) Timer2InterruptPriority.0=LowPriority,1=HighPriority.
PS SerialInterruptPriority.0=LowPriority,1=HighPriority.
PX(x) 0=LowPriority,1=HighPriority.
Percobaan2:Timer/CounterdanInterrupt
19
PERCOBAAN2.3:PENGGUNAANINT0DENGANINTERRUPTENABLE
Persiapan Hubungkan PORT1 DT51MinSys dengan PORT OUTPUT DT51 Trainer Board
menggunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board(sebagaisumbertegangandankoneksiINT0/INT1)menggunakankabeltipeX.
HubungkanIS1denganINT0padaDT51TrainerBoard. HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Program 2.3 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 CSEG ORG 4000H LJMP START ORG 4003H INTER: RL A MOV P1, A MOV R7, #04H RETI START: INITINT: MOV TCON, #01H MOV A, #01H MOV P1, #01H MOV IE, #81H SJMP $
END
Catatan:
Untukmenggunakan INT0dengan falling edge trigger (transisidarihigh ke low),makaIT0(TCON.0)berlogika1,sehinggaTCONbernilai00000001batau01h.
Untukmengaktifkaninterrupt,makaEX0(IE.0)danEA(IE.7)berlogika1sehinggaIEbernilai10000001batau81h.
Perhatikanbahwapadasaat interrupt,programakanmelompatkealamatvektor0003h,tetapiolehDT51MinSysakanlangsungdipindahkealamat4003h.
Tugas 2.3 BuatlahprogramuntukmenampilkanLEDdiPORTAdenganIS1yangdihubungkankeINT0padaDT51TrainerBoarddengansyarat:
Padakondisiawal,BIT7,BIT6,BIT1danBIT0padaOUTPUTLEDDISPLAYmenyala. Interrupttriggerbersifatfallingedge.
Percobaan2:Timer/CounterdanInterrupt
20
Jika terjadi interrupt, BIT5, BIT4, BIT3 dan BIT2 pada OUTPUT LED DISPLAYmenyalasejenak.
Setelah interrupt selesai, kondisi OUTPUT LED DISPLAY kembali pada kondisiawal.
PERCOBAAN2.4:PENGGUNAANINT0DANINT1DENGANINTERRUPTPRIORITY
Persiapan: Hubungkan PORT1 DT51MinSys dengan PORT OUTPUT DT51 Trainer Board
menggunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board(sebagaisumbertegangandankoneksiINT0/INT1)menggunakankabeltipeX.
HubungkanIS1denganINT0danIS2denganINT1padaDT51TrainerBoard. HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Program 2.4 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 CSEG ORG 4000H LJMP START ORG 4003H LJMP INTER0 ORG 4013H LJMP INTER1
INTER0: MOV P1, #0H SETB P1.0 LCALL LDELAY CLR P1.0 RETI
INTER1: MOV P1, #0H SETB P1.7 LCALL LDELAY CLR P1.7 RETI
LDELAY: PUSH 7 PUSH 6 PUSH 5 MOV R7, #24H
LUPA: MOV R6, #0FFH LUPB: MOV R5, #0FFH
DJNZ R5, $ DJNZ R6, LUPB DJNZ R7, LUPA POP 5 POP 6 POP 7
Percobaan2:Timer/CounterdanInterrupt
21
RET
SDELAY: PUSH 7 PUSH 6 PUSH 5 MOV R7, #04H
LUP1: MOV R6, #0FFH LUP2: MOV R5, #0FFH
DJNZ R5, $ DJNZ R6, LUP2 DJNZ R7, LUP1 POP 5 POP 6 POP 7 RET
START: ;inisialisasi
MOV SP,#30H MOV TCON, #05H MOV IP, #04H MOV IE, #85H
;program utama MAIN:
MOV P1, #01010101B ACALL SDELAY MOV P1, #10101010B ACALL SDELAY SJMP MAIN END
Jika tidakadakesalahan,program tersebutakanmenampilkannyalaLEDyangbergantianantaranyalaLEDBit6,Bit4,Bit2,danBit0dengannyalaLEDBit7,Bit5,Bit3, dan Bit 1. Setiap kali ada penekanan tombol IS1, hanya LED Bit 0 yang akanmenyala.SetiapkaliadapenekanantombolIS2,hanyaLEDBit7yangakanmenyala.
Catatan:
UntukmenggunakanINT0danINT1denganfallingedgetrigger(transisidarihighkelow),maka IT1 (TCON.2)dan IT0 (TCON.0)berlogika 1, sehingga TCONbernilai00000101batau05h.
Untukmemindah INT1 ke tingkatprioritas lebih tinggi,makaPX1 (IP.2)berlogika1,sehinggaIPbernilai00000100batau04h.
Untuk mengaktifkan INT0 dan INT1, maka EX0 (IE.0), EX1 (IE.2), dan EA (IE.7)berlogika1,sehinggaIEbernilai10000101batau85h.
Rutin interrupt pada alamat vektor 4003h dan 4013h dipindah ke alamat laindengan perintah LJMP. Hal ini dilakukan agar rutin dapat lebih panjang tanpakhawatirmenerjangalamatvektorberikutnya.
Perhatikan bahwa penekanan keypad IS2 dapat menginterupsi rutin daripenekanan keypad IS1 tetapi tidakdapat sebaliknya.Hal inidikarenakan INT1berada pada tingkat prioritas lebih tinggi. Jadi jika keypad IS1 ditekan setelahkeypad IS2 ditekan, LED Bit 7 akanmenyala hingga delay selesai dieksekusibarukemudianLEDBit0akanmenyala.
Percobaan2:Timer/CounterdanInterrupt
22
PerhatikanbahwaSDELAYmenggunakanalamatyangsamadenganLDELAY.Untukmenghindarikekacauannilai,makadiperlukanPUSHdanPOP.Untukkeperluanini,alamat30HdigunakanuntukinisialisasiSP.
Tugas 2.4 Buatlah program untuk menampilkan LED di PORTA dengan IS1 yang dihubungkan keINT0danIS2dihubungkankeINT1padaDT51TrainerBoarddengansyarat:
Programutamaakanmenampilkandata0FFhbergantiandengandata00h. InterrupttriggerbersifatfallingedgedenganprioritasINT0. Jikaterjadi interruptdari INT0,programakanmenampilkandata99hdan66h
selama3detik.Setelahitukembalikeprogramutama.
JikaterjadiinterruptdariINT1,programakanmenampilkandata0Aahdan55hselama3detik.Setelahitukembalikeprogramutama.
Catatan:
Gunakanbeberapaalamatatauvariabeluntukmenyimpandatadatatersebut.
Percobaan3:AksesSerialdanReviewModul
23
PERCOBAAN3AKSESSERIALDANREVIEWMODUL
DASARKOMUNIKASIDENGANAKSESSERIAL
TUJUAN Praktikanmampumembuat programmenggunakan serial port (DB9) dari DT51MinSyssebagai jalurkomunikasidalamberbagaikecepatan,baik sebagaipenerimadatamaupunpengirimdata.
DASAR TEORI Dalam menggunakan fasilitas serial pada mikrokontroler, ada beberapa register yangdigunakan untuk pengaturan komunikasi serial tersebut. Penjelasan singkatnya adalahsebagaiberikut:
RegisterSCON(SerialControl)Register ini terdiri dari 8 bit dan dapat diakses perbit. Sesuai namanya register inimerupakankendalidarikomunikasiyangberfungsiuntukmenentukanmodekerja serial,kapan komunikasi serial mulai beroperasi, mengendalikan interupsi pada serial danmengendalikanbitke9padakomunikasiserialjikadigunakan.
MSB LSB
SM0 SM1 SM2 REN TB8 RB8 TI RI
Simbol Fungsi
SM0/SM1 SerialPortMode.2bitSM0danSM1digunakanbersamasamauntukmemilihmodekomunikasiserialyangakandigunakan
SM0 SM1 ModeSerial ModeKerja BaudRate
0 0 0 ShiftRegister ClockOscilator/12
0 1 1 8bitUART Disetolehtimer
1 0 2 9bitUART ClockOscilator/32atau/64
1 1 3 9bitUART Disetolehtimer
Percobaan4:AksesInterfaceInput/OutputTambahan
24
Mode0: Shift Register|Oscilator/12. Kirim/Terima Data terjadi pada RXD (P3.0),sedangkanTXD (P3.1)adalah jalurclock.Tegangan jalurTXDakanberalihdarihighkelowsetiapadasatubitoutputpadaRXD.Ketikamenerimadata,satubitmasukanpadaRXDterjadisetiapsatupulsaTXD.
Mode1: 8bitUART|TimerBased. Keluaran serial ditransmisikanmelalui TXD (P3.1)danmasukandiRXD(P3.0).Dataterdiridari10bit,1bitsebagaistartbityangselalubernilai0,8bitdatayangdiawaliolehbitLSBdan1bitsebagaistopbityangselalubernilai1.Baudrateditentukanolehtimer.
Mode2: 9bit UART|Oscliator/32 atau /64. Keluaran serial ditransmisikan melaluiTXD(P3.1)danmasukandiRXD(P3.0).Dataterdiridariword11bit,1bitsebagaistartbityangselalubernilai0,9bitdatayangdiawaliolehbitLSB,1bitsebagaistopbityangselalubernilai1.Ketikamengirim,bitdatake9direpresentasikanoleh nilai register TB8, sedangkan ketika menerima bit data ke9 akandisimpan pada register RB8. Baud rate merupakan 1/32 dari frekuensioscillator(1/64jikabitSMODadalahset).
Mode3: 9bitUART/TimerBased.Samasepertimode2,tetapibaudrateberdasarkansiklusoverflowdariTimer1.
SM2: KomunikasiMultiprosesor.KetikasetdanmenggunakanSerialMode2atau3,maka port serial beroperasi dalammodemultiprosesor. Padamode ini, datahanyaditerimadiregisterSBUF
REN: ReceiveEnable.Bit iniharusberstatus setuntukmendapatkandatamelaluiportserial.Jikabitinitidakset,datatidakakanditerimadalamSBUF,registerRIjugatdakakanset.
TB8: Transmit Bit8. Ketika komunikasi serial dalammode 2 dan 3, bit ini akanmenjadibitdatake9yangakanditransmisikanmelaluiportserial.
RB8: Receive 8bit. Ketika komunikasi serial dalam mode 2 dan 3, bit ini akanmenyimpanbitdatake9yangakanditerimamelaluiportserial.
TI: Transmit Interrupt.Bit iniakan setketikakarakter sudahdikirimkanmelaluiUART. Bit ini harus di clear oleh program sebelum pengiriman karakterberikutnyamelaluiportserial.
RI: Receive Interrupt.Bit iniakansetketikakaraktersudahditerimaolehUART.Ketikabit ini set,programbisamembacanilaidari SBUFuntukmendapatkannilaidaribyteyangditerima.BitiniharusdiclearsegerasetelahnilaidariSBUFsudahdibaca.
Percobaan3:AksesSerialdanReviewModul
25
SBUF(Serialbuffer)Register inidigunakan sebagaipenyimpanan sementaradaridata yangakandikirimatauditerima dari port serial.Untukmenerima danmengirim datamenggunakan register inidiperlukankonfigurasiregisterSCONyangsesuaidanjugakonfigurasitimerjikadigunakansebagaipembangkitbaudrate.
PERCOBAAN3.1:PENERIMAANDATADARIPC(SERIALMODE1)
Persiapan Hubungkan PORT1 DT51MinSys dengan PORT OUTPUT DT51 Trainer Board
menggunakankabeltipeY.
Hubungkan CONTROL DT51MinSys dengan CONTROL DT51 Trainer Board(sebagaisumbertegangan)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan. BukalahprogramHyperTerminaldanaturlahkecepatan9600bitpersecond(bps)
padaposisiserialportyangdigunakan.Simpandantutuplahprogramtersebut.
Program 3.1 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 CSEG ORG 4000H LJMP START
;interrupt penerimaan ORG 4023H CLR RI MOV A, SBUF MOV P1, A
RETI
START: ;inisialisasi
MOV SCON, #50H ;Serial Mode 1 dengan REN=1 MOV TMOD, #20H ;Timer1 pada Mode2 MOV TH1, #0FDH ;Baud rate = MOV PCON, #00H ;9600 bps SETB TR1 ;Hidupkan Timer1 SETB ES ;Aktivasi interupsi serial SETB EA ;Aktivasi interupsi global SJMP $ END Setelahprosesdownload keDT51MinSys, jalankanprogramHyper Terminal yang telahdibuat.Kemudian tekan sembarang tombolpadakeybordcomputer (misalnya,hurufZ,F, angka 3 atau symbol @) dan perhatikan bahwa OUTPUT LED DISPLAY akanmenampilkankodeASCIIdaritombolkeyboardyangditekan.
Percobaan4:AksesInterfaceInput/OutputTambahan
26
Catatan:
DalammenggunakankomunikasiserialMode1untukmenerimadata,makaSM0(SCON.7)pada SCON berlogika 0, sedangkan SM1 (SCON.6) dan REN (SCON.4) berlogika 1,sehinggaSCONbernilai01010000batau50h.
Untuk menghasilkan baud rate 9600 bps menggunakan Timer 1, maka ada beberaparegisteryangharusdiberinilai(diinisialisasi):
Timer1beradapadaMode2(M1padaTMODberlogika1,bityanglainberlogika0)danmengisinilai0FDhpadaTH1.
SMOD (PCON.7) pada PCON berlogika 0 sehingga PCON bernilai 00000000batau00h.
TR1(TCON.6)berlogika1untukmengaktifkantimer1.Untukmengaktifkanserialinterrupt,ES(IE.4)danEA(IE.7)berlogika1.
Tugas 3.1 BuatlahprogramuntukmengaksesOUTPUTLEDDISPLAYmelaluiPORTAdengan syaratberikut:
Semualeddimulaidarikeadaanpadam. Aturkomunikasiserialdalammode1dengankecepatan19200bps. Aktifkanserialinterrupt. DT51 MinSys akan menerima data dari PC (dari penekanan keyboard) dan
menampilkandatatersebutkeledbergantiandengankomplemendatatersebutkeLEDbergantiandengankomplemendatatersebuthinggaadadatalainyangmasuk.Misalkan data yang diterima 35h atau 00110101b, maka nyala led akanmerepresentasikan/ menampilkan data 00110101b dan 11001010b secarabergantian.
Catatan:
Tambahkanprosedurdelayuntukmemperlamatampilan.
PERCOBAAN3.2:PENGIRIMANDATAKEPC
Persiapan HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan. Bukalah program Hyper Terminal dan aturlah kecepatan 19200 bps pada posisi
serialportyangdigunakan.Simpandantutuplahprogramtersebut.
Program 3.2 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
Percobaan3:AksesSerialdanReviewModul
27
$mod51 CSEG ORG 4000H LJMP START
;interrupt pengiriman ORG 4023H CLR TI CJNE A, #39H, PLUS MOV A, #30H SJMP EXIT
PLUS: INC A EXIT: RETI DELAY: MOV R7, #0FFH
MOV R6, #0FFH DJNZ R6, $ DJNZ R7, $ RET
START: CLR ET1 MOV SCON, #40H ;Serial Mode 1 dengan REN=0 MOV TMOD, #20H
MOV TH1, #0FDH ;Baud rate = MOV PCON, #80H ;19200 bps SETB TR1 SETB ES SETB EA MOV A, #30H
ULANG: MOV SBUF, A
LCALL DELAY SJMP ULANG END
Setelahprosesdownload keDT51MinSys, jalankanprogramHyperTerminalyang telahdibuat. Jika semua tahap diikuti dengan benar, akan ditampilkan angka 0 sampai 9secaraberulangulangpadajendelaHyperTerminal.
Catatan:
Untukmenggunakankomunikasiserialpadamode1hanyauntukmengirimkandata,makaSM0 (SCON.7) dan REN(SCON.4) pada SCON berlogika 0, sendangkan SM1 (SCON.6)berlogika1,sehinggaSCONbernilai01000000batau40h.
Untuk menghasilkan baud rate 19200 bps menggunakan Timer 1, maka ada beberaparegisteryangharusdiberinilai:
Timer1beradapadaMode2(M1padaTMODberlogika1,bityanglainberlogika0)danmengisinilai0FDhpadaTH1.
SMOD (PCON.7) pada PCON berlogika 1 sehingga PCON bernilai 10000000batau80h
TR1(TCON.6)berlogika1untukmengaktifkanTimer1.Untukmengaktifkanserialinterrupt,ES(IE.4)danEA(IE.7)berlogika1
Percobaan4:AksesInterfaceInput/OutputTambahan
28
Tugas 3.2 BuatlahprogramuntukmenampilkanhurufasampaizkemudianAsampaiZsecaraberulangulangpadaHyperTerminaldengansyarat:
Aturkomunikasiserialdalammode1dengankecepatan9600bps. Aktifkanserialinterrupt.
Catatan:
Tambahkanprosedurdelayuntukmemperlamatampilan.
PERCOBAAN3.3:PENGIRIMANDANPENERIMAANDATAKEPC
Persiapan Hubungkan PORT1 DT51MinSys dengan PORT OUTPUT DT51 Trainer Board
mengunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board(Sebagaisumbertegangan)mengunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan. BukalahprogramHyperTerminaldanaturlahkecepatan960bpspadaposisiserial
portyangdigunakan.Simpandantutuplahprogramtersebut.
Program 3.3 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 CSEG
ORG 4000H LJMP START
;interrupt penerimaan ORG 4023H CLR RI MOV A, SBUF MOV P1, A
;mengirimkan data ke PC MOV SBUF, A JNB TI, $ CLR TI RETI
;interrupt diaktifkan dan serial berada pada mode 1 ;dengan REN = 1 START:
MOV SCON, #50H
;inisialisasi baud rate (9600 bps) MOV TMOD, #20H MOV TL1, #0FDH MOV TH1, #0FDH MOV PCON, #00H SETB TR1
Percobaan3:AksesSerialdanReviewModul
29
SETB ES SETB EA SJMP $ END
Setelahproses download keDT51MinSys, jalankanprogramHyper Terminal yang telahdibuat.SepertipadaPercobaan3.1,perhatikanOUTPUTLEDDISPLAYketikasembarangtombol keyboard komputer ditekan. Namun, pada Percobaan 3.3 ini, data (yangbersesuaiandengan tombolkeyboardyangditekan) tadiakandikirimkanbalikkePCdanmunculpadajendelaHyperTerminal.
Catatan:
Untukmenggunakan komunikasi serial padamode 1 untukmenerima data,maka SM0(SCON.7)padaSCONberlogika0,sedangkanSM1 (SCON.6)danREN (SCON.4)berlogika1,sehinggaSCONbernilai01010000batau50h.
Untuk menghasilkan baud rate 9600 bps menggunakan Timer 1, maka ada beberaparegisteryangharusdiberinilai:
Timer1beradapadaMode2(M1padaTMODberlogika1,bityanglainberlogika0)danmengisinilai0FDhadaTH1.
SMOD (PCON.7) pada PCON berlogika 0 sehingga PCON bernilai 00000000batau00h.
TR1(TCON.6)berlogika1untukmengaktifkanTimer.Untukmengaktifkanserialinterrupt,ES(IE.3)danEA(IE.7)berlogika1.
Tugas 3.3: Buatlahprogramuntukkomunikasiserialdengansyarat:
Semua led pada OUTPUT LED DISPLAY (penggunaan port bebas) dimulai darikeadaanpadam.
Aturkomunikasiserialdalammode1dengankecepatan19200bps. Aktifkanserialinterrupt. DT51MinSysakanmenerima2setdatadariPC,menampilkannyadiOUTPUTLED
DISPLAY,danmengirimnyakembali secara terbalik.Misalkandatayangditerimaberturutturut adalah 30h dan 31h. LED akan menampilkan data 30hkemudian31h.DatayangdikirimkandanditampilkandiPCsecaraberturutturutadalah31hdan30h.
Catatan:
Gunakanbeberaparegisterbantuuntukmembalikurutandata. GunakandelayuntukmemperlamatampilanLED.
Percobaan4:AksesInterfaceInput/OutputTambahan
30
REVIEWMATERIPRAKTIKUMSISMIK
TUJUAN Praktikanmampumemanfaatkanpengetahuandaripraktikumsebelumnyauntukmembuatprogram yang memanfaatkan secara bersamasama fasilitas yang disediakan olehmikrokontroler.
Tugas 3.4 Buatlahsebuahprogramyangberfungsiuntukmemeriksapasswordataukatakunciyangdiberikanmelaluikomunikasi serialdan toggle switch (SWITCH INPUT)dengan spesifikasisebagaiberikut:
Adaduabuahkatakunciyangakandiberikankepadasistem; Padasaatidle,menjalankanprogramrunningled; Jika sebuah tombol ditekan,maka sistem akan berpindah padamodemenerima
katakunci1;
Padamodekatakunci1,sistemhanyamenyediakanwaktu5detikuntukmenerimainput dari switch toogle. Sementara itu, OUTPUT LED DISPLAY akanmerepresentasikan kenaikan waktu perdetik (dimulai dari detik kenol) dengannyalaledyangterusbertambah(darihanyanyalaledBit0,laluBit0danBit1hinggaledBit0sampaidenganBit5menyala).Setelah5detikberlalu,programmengecekapakahkatakunciyangdirepresentasikandenganswitchtoggleadalahbenaratausalah?Jikasalah,akankembalikeprogramrunningled;
Jika kata kunci 1 benar, semua led pada OUTPUT LED DISPLAY akanmenyalasejenakkemudianmati;
Setelahitusistemakanberpindahpadamodecounter; Padamodecounter,adasebuah tombolyangdigunakansebagaipenghitung. Jika
tombol ituditekan sebanyak5kali,makaprogramakanberpindahkemodekatakunci2.SetiaprepresentasibinerdarijumlahpenekanantombolditampilkanpadaOUTPUTLEDDISPLAY;
Padamodekatakunci2,sistemakanmenerimainputdarikomunikasiserialdalamjangka waktu 5 detik juga. Sementara itu, OUTPUT LED DISPLAY akanmerepresentasikan kenaikan waktu perdetik (dimulai dari detik kenol) dengannyalaledyangterusbertambah(darihanyanyalaledBit0,laluBit0danBit1hinggaledBit0sampaidenganBit5menyala).Setelah5detikberlalu,programmengecekapakahkatakunciyangdirepresentasikandenganswitchtoggleadalahbenaratausalah?Jikasalah,akankembalikeprogramrunningled;
Jika kata kunci2benar,program akanmembuat seluruh ledpada OUTPUT LEDDISPLAYnyaladanmati,bergantiantiapdetik,sebanyak2kali.Setelahitukembalipadaprogramrunningled.
Percobaan3:AksesSerialdanReviewModul
31
Catatan:
Port,modetimerdankombinasikatakuciyangdigunakanbebas. Buatlahketerangan/komentarpadaprogramyangdibuat sehingga setiapbagian
programtersebutdapatdenganmudahdipahami;
Kerjakanlah tugasdiatas secaraberurutan.Dengandemikian, jika tugas tersebuttidakselesaidikerjakan,asistenmasihmungkinmemberikanpenilaian;
Percobaan4:AksesInterfaceInput/OutputTambahan
32
Percobaan4:7Segment,KeypaddanLCDDotMatriks
33
PERCOBAAN47SEGMENT,KEYPADDANLCDDOTMATRIKS
DASARPEMAKAIAN7SEGMENTDANKEYPAD
TUJUAN PRAKTIKUM Praktikanmampumembuat programmenggunakan teknik scanning seven segment danscanningkeypadpadaDT51MinSys.
DASAR TEORI
ScanningSevenSegmentTeknik scanning digunakan untukmenghemat penggunaan input/ output port. Scanningseven segment sebenarnyahanyalah suatuprosesuntukmenyalakan satu seven segmentpadasatusaat.Karenaadalebihdarisatusevensegment,sevensegmenttersebutmenyalabergantiansecaracepat.Dengancara tersebutdiatas,seolaholahsemuasevensegmentmenyalapadawaktuyangbersamaan.Lebar jalurdatayangdibutuhkan=8bit (ket:8bitadalahlebarjalurdatauntuksatusevensegment)+nbit(ket:n=jumlahsevensegment).
Untukmenyalakansevensegment1(DIGIT1)padaDT51TutorialBoard,makaDO1(I/PSKEYpin9)harusdiberilogika0(bersifatactivelow).Sedangkanuntukdapatmenyalakansevensegment2(DIGIT1)makaDO2(I/PSKEYpin10)harusdiberilogika0.
Datasevensegmentpadarangkaianinibersifatactivehigh(logika1=nyala,logika0=padam),denganurutandariMSBkeLSBadalahDP(titik),G,F,E,D,C,B,A.
Gambar 1 Seven Segment
ScanningKeypadScanning keypad sebenarnya hanyalahmengirimkan data output ke satu bagian keypad(baris/ kolom) kemudianmembacaperubahan inputpadabagian tersebut (kolom/baris)keypadpadasatusaat.Jikaadaperubahanberartitelahterjadipenekanankeypad.Karenaada lebihdari satubagian (baris/kolom),pembacaandilakukanbergantian secara cepat.Dengancarasepertiini,seolaholahsemuakeypaddibacapadawaktuyangbersamaan.
Lebar jalurdatayangdibutuhkan=nbit(jumlahtombolkeypaddalamsatubaris)+mbit(m=jumlahtombolkeypaddalamsatukolom).
Percobaan4:7Segment,KeypaddanLCDDotMatriks
34
DT51TutorialBoardmemilikikeypad2x2.DataoutputnyaadalahKBO1(I/PSKEYpin7)danKBO2(I/PSKEYpin8)danbersifatactivelow.SedangkandatainputnyaadalahKBI1(I/PSKEYpin3)danKBI2(I/PSKEYpin4)yangjugabersifatactivelow.
ScanningkeypaddilakukanpertamatamadenganmengaktifkanKBO1(KBO1berlogika0,KBO2 berlogika 1), kemudian memeriksa logika dari data input KBI1. Jika logikanyaberubahdari1ke0berartiadapenekanankeypadyangterletakantaraKBO1danKBI1.SelanjutnyaKBI2diperiksa; jika logikanyaberubahdari1ke0berartiadapenekanankeypad antara KBO1 dan KBI2. Setelah pemeriksaan selesai, data output berikutnyadiaktifkan,yaituKBO2(KBO1berlogika1,KBO2berlogika0). Kemudiantiaptiapdatainputnyadiperiksa,sepertipemeriksaanpadaKBO1.
Gambar 2 Skematik Keypad 2x2 pada DT-51 Trainer Board
PERCOBAAN4.1:SCANNINGSEVENSEGMENT
Persiapan Hubungkan PORT1 DT51 MinSys dengan DATA 7S DT51 Trainer Board
menggunakantipeY.
Hubungkan PORTC DT51 MinSys dengan I/P S KEY DT51 Trainer BoardmenggunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board(sebagaisumbertegangan)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
35
Program 4.1 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 PORTC EQU 2002H CW EQU 2003H ANGKA5 EQU 6DH ANGKA7 EQU 07H
CSEG ORG 4000H LJMP START
DELAY: MOV R6, #0FH LUP: MOV R7, #0FFH
DJNZ R7, $ DJNZ R6, LUP RET
START: ;mengaktifkan PPI (dalam hal ini adalah PORTC) ;lihat kembali Modul 1
MOV DPTR, #CW MOV A, #80H MOVX @DPTR, A
LOOP: ;menampilkan angka 5 di seven segment 1
MOV DPTR, #PORTC MOV A, #80H MOVX @DPTR, A MOV P1, #ANGKA5 LCALL DELAY
;menampilkan angka 7 di seven segment 2 MOV A, #40H MOVX @DPTR, A MOV P1, #ANGKA7 LCALL DELAY SJMP LOOP END
Jikasetiaptahapdiikutidenganbenar,programtersebutakanmenampilkanangka7padaseven segment2 (DIGIT2)danangka 5pada seven segment1 (DIGIT1) secara serentaktanpaberkedip.
Catatan:
Padaprogram tersebut,DO1 terhubungdenganPORTCbitke6 (PC.6)danDO2terhubungdenganPORTCbitke7(PC.7).
Untukmenampilkanangka7padasevensegment2,makaDO2berlogika0danDO1 berlogika 1. Data seven segment yang dikirimkan ke PORT1 bernilai00000111batau07h.
Untukmenampilkanangka5padasevensegment2,makaDO2berlogika1danDO1 berlogika 0. Data seven segment yang dikirimkan ke PORT1 bernilai01101101batau6Dh.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
36
Perhatikanbahwaprogramdiberidelaysetiapkalisetelahdatadikirimkankesevensegment.HalinidilakukankarenawaktuaksesPPIlebihlamadibandingkandengancyclemikrokontroler.
Tugas 4.1: Latihan Mandiri untuk Scanning Seven Segment Buatlahprogrammenggunakansevensegment(portyangdigunakanbebas)dengansyarat:
Pada saat pertama kali program dijalankan, seven segment akan menampilkanangka00.
Selangwaktukirakira3detik,sevensegmentakanmenampilkanangka10. Selangwaktukirakira3detik,sevensegmentakanmenampilkanangka32. Selangwaktukirakira3detik,sevensegmentakanmenampilkanangka54. Selangwaktukirakira3detik,sevensegmentakanmenampilkanangka76. Selangwaktukirakira3detik,programkembalimenampilkan00.
PERCOBAAN4.2:SCANNINGKEYPAD
Persiapan Hubungkan PORT1 DT51 MinSys dengan I/P S KEY DT51 Trainer Board
menggunakankabeltipeY.
Hubungkan PORTA DT51MinSys dengan PORT OUTPUT DT51 Trainer BoardmenggunakankabeltipeY.
Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board(sebagaisumbertegangan)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Program 4.2 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 PORTA EQU 2000H CW EQU 2003H CSEG ORG 4000H LJMP START DELAY: MOV R7, #0FFH DJNZ R7, $ RET START: MOV SP, #30H MOV DPTR, #CW MOV A, #81H MOVX @DPTR, A MOV DPTR, #PORTA
Percobaan4:7Segment,KeypaddanLCDDotMatriks
37
LOOP: MOVX @DPTR, A LCALL DELAY MOV A, #00H ;scanning key berada di baris 1 (KBO1) MOV P1, #00101111B ;memeriksa penekanan tombol 1 JB P1.0, KEY3 SETB ACC.0 AJMP LOOP
;memeriksa penekanan tombol 3 KEY3: JB P1.1, INPUT2 SETB ACC.2 AJMP LOOP ;scanning key berada di baris 2 (KBO2) INPUT2: MOV P1, #00011111B
;memeriksa penekanan tombol 2 JB P1.0, KEY4 SETB ACC.1 AJMP LOOP ;memeriksa penekanan tombol 4 KEY4: JB P1.1, LOOP SETB ACC.3 AJMP LOOP END
Jikasetiaptahapdiikutidenganbenar,programtersebutakanbekerjasebagaiberikut:
Jikakeypad1(KEY1)ditekanmakaBit0padaOUTPUTLEDDISPLAYakanmenyalasejenak.
Jika keypad 2 (KEY2) ditekanmaka LED Bit1 pada OUTPUT LED DISPLAY akanmenyalasejenak.
Jika keypad 3 (KEY3) ditekanmaka LED Bit2 pada OUTPUT LED DISPLAY akanmenyalasejenak.
Jika keypad 4 (KEY4) ditekanmaka LED Bit3 pada OUTPUT LED DISPLAY akanmenyalasejenak.
Catatan:
Padaprogram tersebut,KBO1 terhubungdenganPORT1bit ke4 (P1.4)danKBO2terhubungdenganPORT1bitke5 (P1.5).KBI1 terhubungdenganPORT1bitke0(P1.0)danKBI2terhubungdenganPORT1bitke1(P1.1).Programakanmemeriksapadadataoutputbarisbawah(KBO1= 0 ,KBO2= 1).Lalumemeriksa logikaKBI1(keypad1).JikaKBI1berlogika0berartikeypad1tersebutditekan.
Jikakeypad1 tidakditekan,programakanmemeriksa logikaKBI2 (keypad3). JikaKBI2berlogika0berartikeypad3tersebutditekan.
Jikatidakadapenekanankeypadpadabarisbawah,programakanmemeriksapadadata output baris atas (KBO2 = 0, KBO1 = 1). Lalu memeriksa logika KBI1(keypad2).
Percobaan4:7Segment,KeypaddanLCDDotMatriks
38
Jika KBI1 berlogika 0 berarti keypad 2 tersebut ditekan. Jika keypad 1 tidakditekan,programakanmemeriksa logikaKBI2 (keypad4). JikaKBI2berlogika 0berartikeypad4tersebutditekan.
Tugas 4.2: Latihan Mandiri Scanning Keypad Buatlahprogramdenganmenggunakankeypaddansevensegment.
Pada saat pertama kali program dijalankan, maka seven segment akanmenampilkanangka00.
Jikakeypadpertamaditekan,makasevensegmentakanmenampilkanangka11. Jikakeypadkeduaditekan,makasevensegmentakanmenampilkanangka22. Jikakeypadketigaditekan,makasevensegmentakanmenampilkanangka33. Jikakeypadkeempatditekan,makasevensegmentakanmenampilkanangka44.
DASARPEMAKAIANLCD
TUJUAN PRAKTIKUM Praktikanmampumembuat program untukmenampilkan karakter ke layar LCD denganmenggunakanPORTLCDdanrutinrutinpadaDT51MinSys.PraktikanmampumembuatkreasikaraktersendiridanmenampilkannyapadalayarLCD.
DASAR TEORI DT51memilikirutinrutinyangdapatlangsungdigunakanuntukmenampilkankarakterkelayarLCD.Rutinrutintersebutadalah:
CBF(0715h)
FungsiCBF adalahuntukmemeriksaBusy Flag LCD jika LCD akandiakses secaramanualtanpamenggunakan rutinrutin. Jikamenggunakan rutinrutinDT51MinSys, tidak perlulagimengaksesCBF.
InitLCD(0740h)
RutininidigunakanuntukmenginisialisasiLCDsebelummenggunakanLCD.
CommandLCD(070h)
Rutin inidigunakanuntukmemberikanperintahpada LCD.RutinCommandLCDdipanggilsetelah kitamengisiAccumulator dengan nilai commandword (perintah).Ada beberapacommandwordyangmemilikinilaitersendirisepertidalamtabel3.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
39
Tabel 1 Daftar Command Word
Commandword Nilai FungsiDisplayClear 01h MenghapussemuatampilandiLCD.CursorHome 02h Meletakkankursordantampilkanpadaposisiawal.DeeCursor 04h KursosdecrementsetiapkaliselesaimenulisataumembacaLCD.IncCursor 06h KursosincrementsetiapkaliselesaimenulisataumembacaLCD.CDDSR 05h Kursordecrementdantampilanbergeserkekanansetiapkaliselesaimenulisatau
membacaLCDICDSL 07h Kursorincrementdantampilanbergeserkekirisetiapkaliselesaimenulisatau
membacaLCDDisplayoff 08h MemadamkanlayarLCD,tampilandapatmunculkembalijikaadaperintahuntuk
menyalakanlayar(dapatdilihatdimanualLCD).Tetapidaricommandwordyangadadisini,mengakseskursor(memadamkan,menghidupkan,ataublinking)dapatdigunakanuntukmenyalakanlayar.Selamalayarpadam,LCDmasihdapatditulisitapitidakmenampilkanapaapa.
CursorOff 0Ch MemadamkankursorCursorOn 0Eh Menghidupkankursor.CursorBlink 0Fh Kursormenjadiblinking(berkedip).CurShLeft 10h MenggeserkursorkekiriCurShRight Menggeserkursorkekanan.DispShLeft 18h Menggesertampilankekiri.DispShRight 1Ch Menggesertampilankekanan.
WriteLCD(07D0h)
Rutin ini berfungsi untuk menuliskan karakter ke LCD. Kode karakter disimpan padaAccumulator. Karakter pada LCD membutuhkan 8 bit data. Karena DT51 MinSysmenggunakan mode 4 bit, maka seharusnya kita mengirimkan dua set data untukmenampilkansatukarakter.Denganadanyarutinini,kitatidakperlumengirimkanduasetdata.Untukmenampilkan satukarakterkitacukupmengisiAccumulator satukalidengankarakteryangdiinginkan.
KodeDDRAM(DisplayDataRandomAccessMemory)darisetiapkarakterdapatdilihatpadamanualLCD.Jikatidakada,makatable4memuattablereferensidarimanualLCDbuatanSeikoInstruments,Inc.Tabelinihanyamemuatkarakteryangumumdigunakan(LCDSeikojugadapatmenampilkankarakterJepang,Yunani,dankarakterlainyangjarangdigunakan.Alamat00000000hsampai0000FFFFhdigunakanuntukmenyimpan8karakterCGRAM(Character Generator Random Access Memory). Karena yang digunakan hanya 3 bitterakhir, maka alamat 00000000h sama dengan alamat 00001000h. Bagian kosongpadakolomUpper0010memangberupakarakterspasi.
Jika ingin menampilkan huruf J, Accumulator diberi nilai 01001010b atau 4Ah danmemanggil rutinWriteLCD. Sebagian dari karakter di tabel sama dengan karakter ASCII,sehinggatidakmenutupkemungkinanuntukmenampilkankarakterlain.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
40
Tabel 2 Kode Data DDRAM
UpperLower
0000 0010 0011 0100 0101 0110 0111
xxxx0000
(1) 0 @ P ` p
xxxx0001
(2) . 1 A Q a q
xxxx0010
(3) 2 B R b r
xxxx0011
(4) # 3 C S c s
xxxx0100
(5) $ 4 D T d t
xxxx0101
(6) % 5 E U e u
xxxx0110
(7) & 6 F V f v
xxxx0111
(8) 7 G W g w
xxxx1000
(1) ( 8 H X h x
xxxx1001
(2) ) 9 I Y i y
xxxx1010
(3) * : J Z j z
xxxx1011
(4) + ; K [ k {
xxxx1100
(5) , N ^ n
xxxx1111
(8) / ? O _ o
ReadLCD(07F0h)
Rutin ini berfungsi untuk membaca karakter dari LCD atau CGRAM kemudianmemindahkannya ke Accumulator. Pembacaan karakter dari LCD didahului denganpenentuanalamatDDRAMyangdiinginkandanpemanggilanrutinSetDDRAM.Sedangkanpembacaan karakter dari CGRAM didahului dengan penentuan alamat CGRAM yangdiinginkandanpemanggilanrutinSetCGRAM.
ReadAddrLCD(0820h)
Rutin iniberfungsiuntukmembacaalamatLCDatauCGRAMkemudianmemindahkannyake Accumulator. Pembacaan alamat dari LCD didahului dengan penentuan alamat yangdiinginkandanpemanggilan rutinSetDDRAM.SedangkanpembacaanalamatdariCGRAMdidahuluidenganpenentuanalamatyangdiinginkandanpemanggilanrutinSetCGRAM.
SetDDRAM(0850h)
Rutin iniberfungsiuntukmenentukanalamatDDRAMpadaalamattertentuyangterdapatpadaAccumulator sebelummemulaimenulisataumembaca LCD.AlamatDDRAMadalahalamatpadatampilanLCD.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
41
KonfigurasialamatDDRAMuntukduabarisadalahsebagaiberikut:
DisplaybarisI : 00h27h
DisplaybarisII : 40h67h
JikaLCDyangadaberformat16x2,makapadabarisIadalahalamatDDRAM00h0Fhdan baris II adalah alamat 40h 4Fh. Jika display digeser ke kiri satu kali,maka yangtampilpadabarisIadalahalamat01h10hdanbarisIIadalahalamat41h50h.
SetCGRAM(0870h)
Rutin ini berfungsi untuk menentukan alamat CGRAM sebelum memulai menulis ataumembaca pada CGRAM. Alamat tersebut disimpan pada Accumulator. Alamat CGRAMadalah alamat per baris pada setiap kotak tampilan. Satu karakter memiliki 8 alamatCGRAM(7barisuntukkarakterdan1baristerakhirumumnyauntukkursor)yangmasingmasingdatanyaselebar8bit.Tetapidari8bittersebut,yangdigunakanhanya5bitLSB(bit4 bit 0). Karakter I dan E pada program TESLCD DT51MinSys jugamenggunakanCGRAM.
Konfigurasi alamat CGRAM terdapat pada 00h 3Fh (karena alamat CGRAM hanyaselebar 6 bit) dengan kemampuan untuk menampung 8 karakter (1 karakter butuh 8a1amat).SatucontohuntukmembuatkarakterIdanEpadaalamatDDRAM00hdan01hakandiberikanpadatabel5.
Tabel 3 Contoh Data CGRAM
DataDDRAM AlamatCGRAM DataCGRAM
0000*000 000
000001010011100101110111
1111111111001000010000100111111111100000
0000*001 001
000001010011100101110111
1111111111110001111111000111111111100000
Jadiuntukmembuatkaraktersendiri,yangpertamadilakukanadalahmenentukanalamatCGRAM, kemudian diisi dengan dengan data CGRAM. Penampilan karakter tersebutdilakukandenganmengisiAccumulatordengandataDDRAM (bernilaiantara00h0Fhpadatabel4)lalumemanggilperintahWRITELCD.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
42
PERCOBAAN4.3:PENAMPILANKARAKTERDANVARIASINYA
Persiapan: HubungkanPORTLCDDT51MinSysdenganmodulLCD. Hubungkan CONTROL DT51 MinSys dengan CONTROL DT51 Trainer Board
(sebagaisumbertegangan)menggunakankabeltipeX.
HubungkanDT51MinSysdenganPCmenggunakankabelserial. HubungkanDT51MinSysdengansumbertegangan.
Program 4.3.1 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 ;built-in routine
INITLCD EQU 0740H COMMANDLCD EQU 07B0H WRITELCD EQU 07D0H
;command word
CURSORHOME EQU 02H DISPLAYOFF EQU 08H CURSOROFF EQU 0CH CURSORON EQU 0EH CURSORBLINK EQU 0FH CURSHLEFT EQU 10H CURSHRIGHT EQU 14H DISPSHLEFT EQU 18H DISPSHRIGHT EQU 1CH
CSEG ORG 4000H LJMP START ORG 4100H LDELAY: MOV R7, #08H
LOP1: MOV R6, #0FFH LOP2: MOV R5, #0FFH
DJNZ R5, $ DJNZ R6, LOP2 DJNZ R7, LOP1 RET
START: LCALL INITLCD LCALL LDELAY
;menampilkan "ABC" MOV A, #41H LCALL WRITELCD LCALL LDELAY MOV A, #42H LCALL WRITELCD LCALL LDELAY MOV A, #43H LCALL WRITELCD LCALL LDELAY
;menampilkan kursor blinking
Percobaan4:7Segment,KeypaddanLCDDotMatriks
43
MOV A, #CURSORBLINK LCALL COMMANDLCD LCALL LDELAY
;memadamkan kursor MOV A, #CURSOROFF LCALL COMMANDLCD LCALL LDELAY
;menampilkan kursor MOV A, #CURSORON LCALL COMMANDLCD LCALL LDELAY
;memadamkan display MOV A, #DISPLAYOFF LCALL COMMANDLCD LCALL LDELAY
;menyalakan tampilan dengan mengakses kursor MOV A, #CURSORON LCALL COMMANDLCD LCALL LDELAY
;menggeser kursor ke kanan MOV A, #CURSHRIGHT LCALL COMMANDLCD LCALL LDELAY
;menggeser kursor ke kiri MOV A, #CURSHLEFT LCALL COMMANDLCD LCALL LDELAY
;meletakkan kursor pada posisi awal MOV A, #CURSORHOME LCALL COMMANDLCD LCALL LDELAY
;menggeser display ke kanan 1 kali MOV A, #DISPSHRIGHT LCALL COMMANDLCD LCALL LDELAY
;menggeser display ke kiri 2 kali MOV A, #DISPSHLEFT LCALL COMMANDLCD LCALL LDELAY MOV A, #DISPSHLEFT LCALL COMMANDLCD SJMP $ END
Jikasetiap tahapdiikutidenganbenar,program tersebutakanbekerjasebagaimanayangsudahtercantumpadakomentardiawalmasingmasingbagian.
Catatan:
PerhatikanbahwameskipunlayarLCDdipadamkan,karakterABCmasihtersimpandalammemori.
Salahsatucarauntukmenyalakanlayaradalahdenganmenyalakankursor.Perhatikanjugapada bagian terakhir dimana accumulator diisi ulang dengan perintah untukmenggesertampilan ke kiri meskipun perintahnya sama. Hal ini dilakukan untuk mengantisipasiberubahnyaaccumulatorakibatpemanggilanrutinCommandLCD.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
44
Program 4.3.2 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 ;built-in routine
INITLCD EQU 0740H COMMANDLCD EQU 07B0H WRITELCD EQU 07D0H SETDDRAM EQU 0850H
;command word DISPLAYCLEAR EQU 01H DECCURSOR EQU 04H INCCURSOR EQU 06H
CSEG ORG 4000H LJMP START ORG 4100H LDELAY: MOV R7, #08H LOP1: MOV R6, #0FFH LOP2: MOV R5, #0FFH DJNZ R5, $ DJNZ R6, LOP2 DJNZ R7, LOP1 RET START: LCALL INITLCD ;memindahkan kursor ke alamat 6h MOV A, #6H LCALL SETDDRAM LCALL LDELAY ;menulis "Lab." (dari belakang) dengan diawali perintah ;DecCursor MOV A, #DECCURSOR LCALL COMMANDLCD LCALL LDELAY MOV A, #2EH LCALL WRITELCD LCALL LDELAY MOV A, #62H LCALL WRITELCD LCALL LDELAY MOV A, #61H LCALL WRITELCD LCALL LDELAY MOV A, #4CH LCALL WRITELCD LCALL LDELAY ;memindahkan kursor ke alamat 8h MOV A, $8H LCALL SETDDRAM LCALL LDELAY ;mengembalikan ke penulisan normal dengan ;IncCursor lalu menuliskan "Sismik" MOV A, #INCCURSOR LCALL COMMANDLCD LCALL LDELAY MOV A, #53H LCALL WRITELCD LCALL LDELAY MOV A, #69H
Percobaan4:7Segment,KeypaddanLCDDotMatriks
45
LCALL WRITELCD LCALL LDELAY MOV A, #73H LCALL WRITELCD LCALL LDELAY MOV A, #6DH LCALL WRITELCD LCALL LDELAY MOV A, #69H LCALL WRITELCD LCALL LDELAY MOV A, #6BH LCALL WRITELCD LCALL LDELAY SJMP $
END Jika setiap tahap dikerjakan dengan benar, program tersebut akan bekerja sebagaimanayangsudahtercantumpadakomentardiawalmasingmasingbagian.
Catatan:
Perintah DecCursor hanya menggeser kursor ke kiri setiap kali program selesaimenuliskan satu karakter pada LCD. Perintah ini tidak menggeser tampilan. PerintahIncCursormenampilkanpenulisannormaldimanakursorakanbergeserkekanansetiapkali selesai menuliskan satu karakter. Perintah ini juga tidak menggeser tampilan. Jikasebelumnya terdapat perintah DecCursor, perintah DisplayClear akan menghapussemuatampilansekaligusmengembalikankepenulisannormal.
PERCOBAAN4.4:PEMBUATANDANPENAMPILANKARAKTER
Persiapan: hubungkanPORTLCDDT51MinSysdenganmodulLCD hubungkanDT51MinSysdenganPCmenggunakankabelserial hubungkanDT51MinSysdengansumbertegangan
Program 4.4 Jalankanprogramdibawahini,analisisdanbuatlahdiagramalirnya.
$mod51 ;built-in routine
INITLCD EQU 0740H WRITELCD EQU 07D0H SETDDRAM EQU 0850H SETCGRAM EQU 0870H
CSEG
ORG 4000H LJMP START
ORG 4100H
LDELAY: MOV R7, #08H LOP1: MOV R6, #0FFH LOP2: MOV R5, #0FFH DJNZ R5, $ DJNZ R6, LOP2
Percobaan4:7Segment,KeypaddanLCDDotMatriks
46
DJNZ R7, LOP1 RET START: MOV SP, #40H LCALL INITLCD LCALL LDELAY ;membuat karakter di data DDRAM 00000000 ;(00h) dan 00000100 (04h)
MOV A, #00H LCALL SETCGRAM MOV A, #00000111B LCALL WRITELCD MOV A, #00001000B LCALL WRITELCD MOV A, #00011110B LCALL WRITELCD MOV A, #00001000B LCALL WRITELCD MOV A, #00011110B LCALL WRITELCD MOV A, #00001000B LCALL WRITELCD MOV A, #00000111B LCALL WRITELCD MOV A, #00000000B LCALL WRITELCD MOV A, #20H LCALL SETCGRAM MOV A, #00011000B LCALL WRITELCD MOV A, #00010100B LCALL WRITELCD MOV A, #00011000B LCALL WRITELCD MOV A, #00010100B LCALL WRITELCD MOV A, #00010110B LCALL WRITELCD MOV A, #00010101B LCALL WRITELCD MOV A, #00010110B LCALL WRITELCD MOV A, #00010100B LCALL WRITELCD LCALL LDELAY
;menampilkan karakter di data DDRAM 00h dan 04h pada awal LCD
MOV A, #00H LCALL SETDDRAM MOV A, #00H LCALL WRITELCD LCALL LDELAY MOV A, #04H LCALL WRITELCD LCALL LDELAY SJMP $
END
Jika seluruh tahap dikerjakan dengan benar, program tersebut akanmenampilkan logomenyerupaidanRp.
Catatan:
UntukmembuatkarakterdidataDDRAM00h(0000*000),makaalamatCGRAMharusdipindahke00h(000|000).
Percobaan4:7Segment,KeypaddanLCDDotMatriks
47
UntukmembuatkarakterdidataDDRAM04h(0000*100),makaalamatCGRAMharusdipindahke20h(100|000).
Penulisan data CGRAM dilakukan secara berurutanmulai dari baris paling atas (alamat CGRAM terkecil, 000|000 dan 100|000) ke baris paling bawah ( alamatCGRAMterbesar,000|111dan000|111).AlamatCGRAMakanbertambahsecaraotomatis.
Baris terakhir umumnya dikosongkan sebagai tempat untuk kursor, tetapi dapatjugadiisi.
LangkahselanjutnyauntukmenampilkankarakteryangtelahdibuatadalahmengisiAccumulator dengan data DDRAM 00h dan 04h lalu memanggil perintahWriteLCD.
DataCGRAMjugadapatdisimpandalamEEPROM.
Tugas 4.4 Untukpraktikanharisenindanselasa:
Buatlahsuatucounteryangakanmencacahsetiapkali tombol interruptditekandannilaihasilpencacahanditampilkanpadaLCD
Untukpraktikanharirabudankamis:
BuatlahsuatuprogramuntukmenampilkaninputdarikeyboardpadaLCD.
Untukpraktikanharijumat:
BuatlahsuatuprogramuntukmenampilkaninputdarikeypadpadaLCD.
Percobaan4:7Segment,KeypaddanLCDDotMatriks
48
Percobaan5dan6:PerancanganAplikasi
49
PERCOBAAN5DAN6PERANCANGANAPLIKASI
Percobaan 5 dan 6 adalah praktikum perancangan suatu aplikasi sederhana yangmemanfaatkanfasilitasmikrokontroler89S51.Percobaan inidilakukansecaramandiridanmengharuskan praktikan mengajukan dan membuat deskripsi perancangan aplikasitersebut.
InformasirincimengenaiPerancanganAplikasi inidapatdiperolehdipapanpengumumandanhttp://labdasar.ee.itb.ac.id
50
ApendiksADT51
51
APENDIKSADT51
DT51MINIMUMSYSTEM
Blok Diagram
Gambar 6 Blok Diagram DT-51 Minimum System
Konektor Ekspansi
Gambar 7 Konektor Ekspansi DT 51 Minumum System
ApendiksA:DT51
52
Peta Memori
Gambar 8 Peta Memori DT 51 Minimum System
ApendiksADT51
53
DT51TRAINERBOARD
Tata Letak
Gambar 9 Tata Letak DT-51 Trainer Board
Konektor Ekspansi
Gambar 10 Konektor Ekspasi pada DT-51 Tainer Board
ApendiksA:DT51
54
APENDIKSB:SetInstruksi8051
55
APENDIKSBSETINSTRUKSI8051
ApendiksB:SetInstruksi8051
56
APENDIKSB:SetInstruksi8051
57
ApendiksB:SetInstruksi8051
58
APENDIKSCKabelKabel
59
APENDIKSCKABELKABEL
Gambar 11 Kabel Tipe X
Gambar 12 Kabel Tipe Y
APENDIKSC:Kabelkabel
60
Gambar 13 Kabel Serial
Gambar 14 Kabel Jumper
APENDIKSDKodeASCII
61
APENDIKSDKODEASCII