modul sismik

Upload: ayushka-partohap

Post on 02-Mar-2016

109 views

Category:

Documents


0 download

DESCRIPTION

Modul Praktik Sistem Mikroprosesor

TRANSCRIPT

  • 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