laporan praktikum 1 modul 2

Upload: aditia-darmadi-j

Post on 09-Oct-2015

91 views

Category:

Documents


14 download

DESCRIPTION

Embedded System MODUL 2 BASIC I/O DENGAN PORT 1

TRANSCRIPT

LAPORAN PRAKTIKUMSISTEM TERTANAM (EMBEDDED SYSTEM)MODUL 2 BASIC I/O DENGAN PORT 1

Nama : Aditia Darmadi J.NIM : J3D112067Kelas : Tek A P1

PROGRAM KEAHLIAN TEKNIK KOMPUTERDIREKTORAT PROGRAM DIPLOMAINSTITUT PERTANIAN BOGORBOGOR2014Tujuan praktikum

1. Mengerti dan memahami dasar alat DT-51 MinSys.2. Mengerti dan memahami tentang basic input/output port dari DT-51 MinSys.3. Dapat membuat program input dan output menggunakan Port 1 dari DT-51 dengan cara mengakses Port 1 secara per bit dan per byte.

Teori Penunjang

Panduan Dasar Mikrokontroler keluarga MCS-51 Bab IV bagian 1Mikrokontroler MCS51 buatan Atmel terdiri dari dua versi, yaitu versi 20 kaki dan versi 40 kaki. Semua mikrokontroler ini dilengkapi dengan Flash PEROM (Programmable Eraseable Read Only Memory) sebagai media memori-program, dan susunan kaki IC-IC tersebut sama pada tiap versinya. Perbedaan dari mikrokontroler-mikrokontroler tersebut terutama terletak pada kapasitas memori-program, memori-data dan jumlah pewaktu 16-bit. Mikrokontroler MCS51 Atmel versi mini (20 pin) dan versi 40 pin secara garis besar memiliki struktur dasar penyusun arsitektur mikrokontroler yang sama. Bagian-bagian tersebut secara lebih lengkap (detil) ditunjukan dalam diagram blok berikut.

Mikrokontroler MCS51 Atmel versi 40 kaki mempunyai 32 kaki sebagai port paralel dan 8 pin yang lain untuk konfigurasi kerja mikrokontroler. Satu port paralel terdiri dari 8 kaki, dengan demikian 32 kaki tersebut membentuk 4 buah port paralel yang masing-masing dikenal sebagai port 0, port 1, port 2, port 3. Nomor dari masing-masing jalur (kaki) dari port paralel mikrokontroler MCS51 Atmel mulai dari 0 sampai 7, jalur (kaki) pertama dari port 0 disebut sebagai P0.0 dan jalur terakhir untuk port 3 adalah P3.7. Mikrokontroler MCS51 Atmel versi mini mempunyai 20 kaki, 15 kaki diantaranya adalah kaki port 1 dan port 3. 5 kaki yang lain untuk konfigurasi kerja mikrokontroler. Port 1 terdiri dari 8 jalur yaitu P1.0 sampai P1.7 dan port 3 terdiri dari 7 jalur yaitu P3.0 sampai P3.5 dan P3.7. Susunan kaki mikrokontroler MCS51 atmel versi 40 kaki dapat dilihat pada gambar berikut.

Fungsi Kaki-Kaki (Pin) Microcontroller Atmel MCS51 VCC, Kaki VCCdigunakan untuk masukan suplai tegangan. GND, Kaki (pin) GNDfunsinya sebagai saluran ground atau pentanahan. RST, Kaki RSTfungsinya sebagai masukan reset. Kondisi 1 selama 2 siklus mesin pada saat oscillator bekerja akan me-reset mikrokontroler yang bersangkutan. ALE/PROG, Kaki ALEdigunakan sebagai keluaran ALE atau Adreess Latch Enable yang akan menghasilkan pulsa-pulsa untuk menahan byte rendah (low byte) alamat selama mengakses memori eksternal. Kaki ini juga berfungsi sebagai masukan pulsa program (the program pulse input) atau selama pemrograman flash. Pada operasi normal, ALEakan berpulsa dengan laju 1/6 dari frekuensi kristal dan dapat digunakan sebagai pewaktuan (timing) atau pendekatan (clocking) rangkainan eksternal. PSEN, Kaki (Program Store Enable) merupakan sinyal baca untuk memori program eksternal. Saat mikrokontroler MCS51 menjalankan program dari memori eksternal, akan diaktifkan dua kali per-siklus mesin, kecuali dua aktivasi dilompati (diabaikan) saat mengakses memori data eksternal. EA/VPP, Kaki VPP( Exkternal Access Enable) fungsinya sebagai kontrol untuk mengakses memori. harus dihubungkan ke ground, jika mikrokontroler akan mengeksekusi program dari memori eksrternal. Selain itu harus dihubungkan ke VCCjika akan mengakses program secara internal. Kaki ini juga berfungsi untuk menerima tegangan 12V (VPP) selama pemrograman flash, khususnya untuk tipe mikrokontroler 12V volt. XTAL1, Kaki XTAL1merupakan masukan untuk penguat inverting oscillator dan masukan untuk clock internal pada rangkaian operasi mikrokontroler. XTAL2, Kaki XTAL2merupakan keluaran dari rangkaian penguat inverting oscilator Port 0, Port 0 merupakan port keluaran/masukan (I/O) 8-bit bertipe open drain bi-directional. Sebagai port keluaran, masing-masing kaki dapat menyerap arus (sink current) delapan masukan TTL (sekitar 3,8 mA). Pada saat logika 1 dituliskan ke port 0, maka kaki-kaki port 0 ini dapat digunakan sebagai masukan-masukan berimpedansi tinggi. Port 0 juga dapat dikonfigurasikan sebagai jalur alamat/data bagian rendah (low byte) selama proses pengaksesan memori data dan program eksternal. Jika digunakan dalam mode ini maka port 0 memiliki pull-up internal. Port 0 juga dapat menerima kode-kode yang dikirimkan kepadanya selama proses pemrograman dan mengeluarkan kode-kode selama proses verifikasi program yang telah tersimpan dalam Flash PEROM. Dalam hal ini dibutuhkan pull-up eksternal selama proses verifikasi program. Port 1, Port 1 merupakan port I/O 8-bit bertipe bidirectional yang dilengkapi dengan pull-up internal. Penyangga keluaran port 1 mampu memberikan/menyerap arus empat masukan TTL(sekitar 1,6 mA). Jika logika 1 dituliskan ke kaki-kaki port 1, maka masing-masing kaki port 1 akan di-pull-up high dengan pull-up internal sehingga dapat digunakan sebagai masukan. Sebagai masukan jika kaki-kaki port 1 dihubungkan ke ground (di-pull-up low), maka masing-masing kaki akan memberikan arus (source current) karena di-pull-up high secara internal. Port 1 juga menerima alamat bagian rendah (low byte) selama pemrograman dan verifikasi pada Flash PEROM. Port 2, Port 2 merupakan port I/O 8-bit bertipe bidirectional yang dilengkapi dengan pull-up internal. Penyangga keluaran port 2 mampu memberikan/menyerap arus empat masukan TTL (sekitar 1,6 mA). Jika logika 1 dituliskan ke kaki-kaki port 2, maka masing-masing kaki port 2 akan di-pull-up high dengan pull-up internal sehingga dapat digunakan sebagai masukan. Sebagai masukan jika kaki-kaki port 2 dihubungkan ke ground (di-pull-up low), maka masing-masing kaki akan memberikan arus (source current) karena di-pull-up high secara internal. Port 2 akan memberikan byte alamat bagian tinggi (high byte) selama pengambilan instruksi dari memori program eksternal dan selama pengaksesan memori data yang menggunakan perintah dengan alamat 16-bit (misalnya: MOVX @DPTR). Dalam aplikasi ini, jika ingin mengirimkan 1, maka digunakan pull-up internal yang sudah disediakan. Selama pengaksesan memori data eksternal yang menggunakan perintah dengan alamat 8-bit (misalnya: MOVX @R1), port 2 akan mengirimkan isi dari SFR P2. Port 2 juga menerima alamat bagian tinggi selama pemrograman dan verifikasi pada Flash PEROM. Port 3, Port 3 merupakan port I/O 8-bit bertipe bidirectional yang dilengkapi dengan pull-up internal. Penyangga keluaran port 3 mampu memberikan/menyerap arus empat masukan TTL(sekitar 1,6 mA). Jika logika 1 dituliskan ke kaki-kaki port 3, maka masing-masing kaki port 3 akan di-pull-up high dengan pull-up internal sehingga dapat digunakan sebagai masukan. Sebagai masukan jika kaki-kaki port 3 dihubungkan ke ground (di-pull-up low), maka masing-masing kaki akan memberikan arus (source) karena di-pull-up high secara internal. Port 3 juga digunakan untuk menerima sinyal-sinyal kontrol (P3.6 dan P3.7), bersama-sama dengan port 2 (P2.6 dan P2.7) selama proses pemrograman dan verifikasi pada Flash PEROM.3.Perintah yang digunakan SJMP,LJMP MOV,MOVX SETB,CLR JB,JNB JC,JNC CJNE

Listing ProgramPercobaan I : Port 1 sebagai OutputPersiapan: Hubungkan Port 1 DT-51 MinSys dengan PORT OUTPUT DT-51 Trainer Board menggunakan kabel tipe Y. Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai sumber tegangan) menggunakan kabel tipe X. Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial. Hubungkan DT-51 MinSys dengan sumber tegangan.

a. Program 1 :Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada Tutorial Board berada pada kondisi :Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0

NyalaNyalaNyalaNyalaPadamNyalaPadamNyala

Catatan :SP dipindah ke alamat 30h karena alamat-alamat sebelumnya umumnya masih dipakai.Perintah SJMP $ pada program akan menyebabkan program berputar (looping) pada alamat (address) di mana perintah SJMP $ berada.

b. Program 2 :Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada Tutorial Board berada pada kondisi :Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0

PadamPadamPadamPadamNyalaNyalaNyalaNyala

c. Program 3 :Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada Tutorial Board berada pada kondisi :Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0

NyalaPadamNyalaPadamPadamPadamNyalaNyala

d. Program 4 :Ketiklah program berikut ini, assemble, dan download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan, program tersebut akan menyebabkan output LED pada Tutorial Board berada pada kondisi :Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0

NyalaNyalaPadamPadamPadamNyalaPadamPadam

Latihan Mandiri Percobaan I :a. Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi :Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0

NyalaNyalaPadamPadamNyalaPadamPadamPadam

Akseslah Port 1 per bit(satu persatu seperti program 1 atau 2).b. Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi:Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0

NyalaNyalaPadamNyalaNyalaPadamPadamNyala

Akseslah Port 1 per byte (secara keseluruhan sama seperti program 3 atau 4).

Percobaan II : Port 1 sebagai InputPersiapan : Hubungkan Port 1 DT-51 MinSys dengan PORT INPUT DT-51 Trainer Board menggunakan kabel tipe Y. Hubungkan Port A DT-51 MinSys dengan PORT OUTPUT DT-51 Trainer Board menggunakan kabel tipe Y. Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (Sebagai sumber tegangan) menggunakan kabel tipe X. Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.a. Program 1 :Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan ,program tersebut akan bekerja sebagai berikut: Jika toggle switch Bit 4 berlogika 0 maka semua LED akan padam(masuk ke label DISPLAY2). Jika toggle switch Bit 4 berlogika 1 maka hanya LED Bit 4 yang akan menyala(masuk ke label DISPLAY).

Catatan:Karena program melakukan looping,maka perintah SJMP $ dapat di hilangkan.Program dengan label INIT (inisialisasi PPI),DISPLAY,DAN DISPLAY2 hendaknya tidak berubah karena penggunaan PPI barn akan dijelaskan pada bab berikutnya.Penggunaan p1.4 tidak mutlak dan dapat diganti dengan bit port 1 lain sebagain input.Nilai 00h dan 10h yang diberi tanda dapat diganti dengan nilai lain sebagai output ke LED.

b. Program 2 :Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan,program tersebut akan bekerja sebagai berikut: Jika Toggle switch Bit 5 berlogika 1 maka hanya LED Bit 5 yang akan menyala(masuk ke label DISPLAY). Jika Toggle switch Bit 5 berlogika 0 maka program akan memeriksa kondisi toggle switch Bit 0. Jika toggle switch Bit 5 berlogika 0 dan toggle switch Bit 0 berlogika 1 maka semua LED akan padam(masuk ke label DISPLAY2). Jika toggle switch Bit 5 berlogika 0 dan toggle switch Bit 0 berlogika 0 maka hanya LED Bit 0 yang akan menyala(masuk ke label DISPLAY3). Jika toggle switch Bit 5 berlogika 1,kondisi toggle switch Bit 0 tidak akan mempengaruhi kondisi LED.Catatan:Program denga table INIT (Inisialisasi PPI),DISPLAY,DISPLAY2 dan DISPLAY3 hendaknya tidak diubah.Penggunaan P1.5 dan P1.0 tidak mutlak dapat diganti dengan Port 1 sebagai input.Nilai 00h,20h,dan 01h yang diberi tanda dapat diganti dengan nilai lain sebagai output ke LED.

c. Program 3 :Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan program tersebut akan menampilkan nyala LED pada posisi yang sesuai dengan posisi toggle switch yang berlogika 1.Catatan:Program dengan label INIT dan DISPLAY hendaknya tidak diubah.

d. Program 4 :Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan,program tersebut akan bekerja sama seperti program 3.Hanya saja program ini tidak langsung memindahkan Accumulator ke Port 1 melainkan dipindahkan ke register R1 terlebih dahulu.Catatan:Program dengan label INIT dan DISPLAY hendaknaya tidak diubah.

e. Program 5 :Ketiklah program berikut ini (tanpa tanda panah), assemble, download ke DT-51 MinSys, dan amati hasilnya :

Jika tidak ada kesalahan,program tersebut akan bekerja sebagai berikut: Jika posisi toggle switch bernilai 0Fh,maka tampilan LED tidak berubah(sama dengan kondisi sebelumnya). Jika posisi toggle switch bernilai selain 0Fh,maka tampilan LED akan sesuai dengan nilai toggle switch tersebut.Catatan:Program dengan label INIT dan DISPLAY hendaknya tidak diubah.

Latihan Mandiri Percobaan II:a. Buatlah program untuk menampilkan LED di Port A dengan toggle switch di Port 1 dengan syarat: Jika toggle switch Bit 0 berlogika 0, semua LED padam. Jika toggle switch Bit 0 berlogika 1,program akan memeriksa kondisi toggle switch Bit 7. Jika toggle switch Bit 0 berlogika 1 dan toggle switch Bit 7 berlogika 0,LED Bit 0 menyala. Jika toggle switch Bit 0 berlogika 1 dan toggle switch Bit 7 berlogika 1,LED Bit 7 menyala.Petunjuk : Akseslah Port 1 per bit (satu per satu, seperti program 1 atau 2).Catatan:Gunakan bagian berlabel INIT dan DISPLAY2.Ubahlah nilai yang diberi tanda panah agar Output LED sesuau dengan soal latihan.

b. Buatlah program untuk menampilkan LED di Port A dengan toggle switch di Port 1 dengan syarat: Jika toggle switch bernilai 0AAH,LED Bit 6,Bit 4,Bit 2dan Bit 0 akan menyala. Jika toggle switch bernilai 0Fh,LED Bit 7,Bit 5,Bit 1dan Bit 1 akan menyala. Jika toggle switch bernilai selain kedua nilai tersebut di atas,semua LED padam.Petunjuk : Akseslah Port 1 per byte (secara keseluruhan sama seperti program 3,4, atau 5).Catatan:Gunakan bagian berlabel INIT dan DISPLAY.Gunakan perintah CJNE untuk membandingkan/memeriksa Port 1.

Analisa Program

Latihan Mandiri Percobaan I:

a.

Pada program di atas, digunakan perintah CLR dan SETB untuk mematikan dan menyalakan LED pada port DT-51. Perintah CLR digunakan untuk mematikan LED, dan perintah SETB digunakan untuk menyalakan LED. Langkah yang dilakukan pertama-tama adalah mendeklarasikan alamat akses untuk program tersebut, dalam hal ini #30h, karena alamat-alamat sebelumnya umumnya masih dipakai. Setelah itu, atur nilai pada P1.0 sesuai output yang diinginkan, dalam hal ini LED bit 0 ingin dimatikan lampunya, maka kita harus memberikan perintah CLR P1.0 agar port 1 bernilai 0. Setelah itu dengan perintah MOV, nilai dikirimkan ke Port 1 bit 0 sehingga hasilnya LED pada P1.0 akan mati. Sebaliknya, perintah SETB digunakan untuk memberikan nilai 1 sehingga output yang dihasilkan adalah LED yang menyala. Contoh pada program di atas, LED pada port 1 bit 3 ingin dinyalakan sehingga kita harus menuliskan SETB P1.3. Setelah memberikan nilai 1 pada port 1 bit 3, kirimkan nilai tersebut ke port yang ingin dituju, dalam hal ini adalah P1.3, dengan perintah MOV, sehingga hasilnya LED pada P1.3 akan menyala. Perintah SJMP $ digunakan agar program melakukan looping pada alamat di mana perintah SJMP $ berada sehingga output yang dihasilkan akan tetap.

b.Pada program ini, hanya digunakan perintah MOV untuk menyalakan LED yang diinginkan. Program ini lebih sederhana dari program sebelumnya karena program ini hanya menuliskan bilangan hexadecimal dari lampu LED tersebut. Bilangan hexa tersebut mewakili bit-bit yang ada pada LED mulai dari bit 0 sampai dengan bit 7. Dengan menggunakan perintah MOV, nilai hexa yang sesuai langsung dikirimkan ke port 1 (tanpa memandang bit-nya, artinya nilai akan dikirimkan ke semua bit port 1 bergantung pada nilai hexa-nya).

Latihan Mandiri Percobaan II:a.

Pada percobaan kedua, program yang dikerjakan adalah menentukan nyala LED berdasarkan suatu kondisi tertentu. Disini, digunakan label agar suatu rutin program dapat berpindah ke rutin program berikutnya dengan teratur. Pada latihan ini digunakan toogle switch untuk mengontrol nyala LED yang diinginkan. Hal yang dilakukan pertama kali adalah memeriksa kondisi P1.0, apakah kondisinya 1 atau 0. Jika kondisinya 0, maka program akan melakukan jump ke label display. Di dalam label display, rutin program tersebut akan mematikan semua LED, sesuai kondisi yang diinginkan. Jika P1.0 bernilai 1, maka program akan berlanjut ke baris program berikutnya, yaitu MOV C, P1.7, yang akan mengecek nilai toogle switch bit 7. Jika kondisinya 0, maka program akan melakukan jump ke display3 yang menjalankan rutin program untuk menyalakan LED bit 0 (ditunjukkan dengan bilangan hexa 01H). Sementara itu, jika kondisinya 1, maka program akan berlanjut ke baris berikutnya yaitu label bernama display2, yang rutin programnya akan menyalakan LED bit 7 (ditunjukkan dengan bilangan hexa 80H). Jika diperhatikan dengan seksama, semua rutin program pada label akan diakhiri dengan SJMP label1, yang artinya akan dilakukan looping kembali pada rutin program label1 selama kondisi belum berubah.

b.

Pada percobaan selanjutnya, program akan melakukan akses dengan bilangan hexa, artinya, program tidak akan memeriksa bit secara satu per satu, melainkan per byte atau melihat port 1 secara keseluruhan. Pertama-tama, seperti program sebelumnya, nilai toogle switch akan ditampung ke dalam akumulator A. Setelah itu, sesuai dengan program yang diinginkan, program akan menjalankan baris program berikutnya, yaitu CJNE A,#0AAh, DISPLAY. Perintah CJNE digunakan untuk membandingkan dua nilai, entah itu ada dalam akumulator atau nilai dan alamat langsung, lalu melakukan jump ke suatu label jika nilainya tidak sama. Pada program, jika kondisi toogle switch bernilai AAh, maka program akan melakukan sub-rutin program selanjutnya yaitu pada LABEL1. LABEL1 akan menghasilkan nyala lampu dengan biner 01010101B yang ditunjukkan dengan nilai hexa 55H. Selanjutnya, jika kondisi toogle switch bukan bernilai AAh, maka program akan melakukan jump (ingat perintah CJNE) ke DISPLAY. Pada kondisi berikutnya, yang diinginkan adalah jika toogle switch bernilai 0Fh, maka akan menghasilkan nyala lampu dengan biner 10101010B. Kembali dengan menggunakan perintah CJNE, nilai toogle switch yang telah ditampung dalam akumulator A dibandingkan. Jika nilainya cocok yaitu 0Fh, maka program akan melakukan sub-rutin program berikutnya yaitu label DISPLAY2 yang akan menjalankan kondisi lampu dengan biner 10101010B tersebut. Seperti biasanya, semua sub-rutin program diakhiri dengan SJMP label1 agar program melakukan looping kembali pada sub-rutin program label1 selama kondisi belum berubah.

Kesimpulan

Akses Port 1 pada DT-51 dapat dilakukan dengan dua cara, yaitu pengaksesan secara bit (satu per satu) dan secara byte (semua bit pada port). Dalam modul ini, program biasanya terdiri dari dua bagian terpenting, yaitu bagian untuk mengontrol program (didefinisikan pada bagian label) dan untuk tampilan program (didefinisikan pada bagian display). Suatu sub-rutin program dapat diakhiri dengan menggunakan SJMP (label awal), agar program berjalan terus-menerus (secara berkesinambungan) sehingga output dapat dilihat dengan baik. Bandingkan jika program tidak dilakukan looping dengan perintah SJMP, maka program hanya akan berjalan sekali saja dan output juga hanya akan muncul sekali.

Daftar PustakaSuheri, Asep. 2013. Modul Praktikum Sistem Tertanam. Bogor : Institut Pertanian BogorCARR, J Joseph. 1991. Designing Microprocessor Based Instrumentation . McGraw Hill : Singapore. Dany, Christanto . 2004 . Panduan Dasar Mikrokontroller Keluarga MCS-51. Innovative Electronic.