Laporan Praktikum 1 Modul 2 [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

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



Nama : Aditia Darmadi J. NIM : J3D112067 Kelas : Tek A P1



PROGRAM KEAHLIAN TEKNIK KOMPUTER DIREKTORAT PROGRAM DIPLOMA INSTITUT PERTANIAN BOGOR BOGOR 2014



Tujuan 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 1 Mikrokontroler 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 mikrokontrolermikrokontroler tersebut terutama terletak pada kapasitas memori-program, memoridata 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 masingmasing 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 bidirectional. 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 Program Percobaan I : Port 1 sebagai Output Persiapan:  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 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Nyala Nyala Nyala Nyala Padam Nyala Padam Nyala 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 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Padam Padam Padam Padam Nyala Nyala Nyala Nyala 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 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Nyala Padam Nyala Padam Padam Padam Nyala Nyala



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 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Nyala Nyala Padam Padam Padam Nyala Padam Padam



Latihan Mandiri Percobaan I : a. Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi : Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Nyala Nyala Padam Padam Nyala Padam Akseslah Port 1 per bit(satu persatu seperti program 1 atau 2). b.



Bit 1 Padam



Bit 0 Padam



Buatlah Program untuk menampilkan LED di Port 1 dengan kondisi: Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Nyala Nyala Padam Nyala Nyala Padam Padam Nyala Akseslah Port 1 per byte (secara keseluruhan sama seperti program 3 atau 4).



Percobaan II : Port 1 sebagai Input Persiapan :  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 2”dan “Bit 0” akan menyala. - Jika toggle switch bernilai “0Fh”,LED “Bit 7”,”Bit 5”,”Bit 1”dan “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 Pustaka Suheri, Asep. 2013. Modul Praktikum Sistem Tertanam. Bogor : Institut Pertanian Bogor



CARR, J Joseph. 1991. Designing Microprocessor Based Instrumentation . McGraw Hill : Singapore. Dany, Christanto . 2004 . Panduan Dasar Mikrokontroller Keluarga MCS-51. Innovative Electronic.