Top Banner
LAPORAN PRAKTIKUM MIKROKONTROLER “Paralel Input Output” Disusun Oleh Nama : Yudi Irwanto NIM : 021500456 Prodi : Elektronika Instrumentasi Jurusan : Teknofisika Nuklir SEKOLAH TINGGI TEKNOLOGI NUKLIR BADAN TENAGA NUKLIR NASIONAL YOGYAKARTA 2017
14

“Paralel Input Output” · LAPORAN PRAKTIKUM MIKROKONTROLER “Paralel Input Output” Disusun Oleh Nama : Yudi Irwanto NIM : 021500456 Prodi : Elektronika Instrumentasi Jurusan

Feb 08, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • LAPORAN PRAKTIKUM

    MIKROKONTROLER

    “Paralel Input Output”

    Disusun Oleh

    Nama : Yudi Irwanto

    NIM : 021500456

    Prodi : Elektronika Instrumentasi

    Jurusan : Teknofisika Nuklir

    SEKOLAH TINGGI TEKNOLOGI NUKLIR

    BADAN TENAGA NUKLIR NASIONAL

    YOGYAKARTA

    2017

  • PARALEL INPUT OUTPUT

    I. TUJUAN

    1. Praktikan mampu memahami Input output mikrokontroler AVR AT Mega.

    2. Praktikan mampu memahami Input output AVR AT Mega.

    3. Praktikan mampu membuata program dalam bahasa C untuk input output

    Port mikrokontroler dan penerapannya.

    II. PERALATAN PRAKTIKUM

    1. K-125R USB AVR Programmer

    2. Minimum System AVR

    3. BASCOM AVR sebagai Compiler.

    III. DASAR TEORI

    Atmel AT Mega8535/16/32 dilengkapi dengan empat buah 8-bit input output (I/O)

    digital multiguna yaitu PORTA, PORTB, PORTC, dan PORTD. Semua port ini juga

    memiliki fungsi alternatif yang akan dijelaskan kemudian. Pada bab ini akan dibahas

    mengenai fungsi dasar port I/O digital. Selanjutnya pada subbab berikut akan dibahas

    mengenai penggunaan port I/O dalam aplikasi led, seven segmen, keypad, dan LCD.

    Register Port

    Setiap port dalam AT Mega8535 memiliki tiga buah register yang berkaitan yaitu:

    1. Data Register (PORTx), digunakan untuk menulis data keluaran port.

    2. Data Direction Register (DDRx), digunakan untuk menentukan pin port spesifik

    sebagai output (bernilai 1) atau sebagai input (bernilai 0).

    3. Input Pin Address (PINx) digunakan untuk membaca data input dari port.

    Gambar 5.1 merupakan gambaran register-register yang dimiliki setiap port.

  • Gambar 1. Register-register port

    Port mikrokontroler AVR dapat dikonfigurasi sebagai input atau output, dengan cara

    mengubah isi I/O register DDRx. Bit-bit pada DDRx menentukan arah pin. Setiap pin

    pada AVR juga memiliki internal pull-up, untuk mengaktifkannya dilakukan dengan

    memberikan nilai 0xFF pada register PORTx.

    Untuk membaca data pada salah satu port, dapat digunakan fungsi PINx, sedangkan

    membaca data per pin pada suatu port maka ditentukan bit pin-nya yaitu PINx.bit.

    IV. LANGKAH PERCOBAAN

    1. Hubungkan port PIO pada AVR ATMega dengan modul penampil led.

    2. Hubungkan port PIO yang lain pada AVR ATMega dengan modul switch.

    3. Buatlah program-program berikut, kemudian download kedalam chip AVR.

    4. Ubahlah beberapa variable pada program dengan nilai yang bervariasi,

    kemudian amati hasilnya dan simpulkan dalam pembahasan.

    5. Buatlah program sesuai tugas yang diberikan pada saat praktikum.

  • V. Listing Program

    Program 1

    Program 2

  • Program 3

    Program 4

  • Program 5

  • VI. Pembahasan

    Percobaan 1:

    Dari program yang telah disajikan, dapat dianalisa bahwa pada Bagian awal

    program #include digunakan untuk memberitahu kepada compiler bahwa

    program yang kita buat menggunakan Atmega 8535. Selanjutnya pada program utama,

    disetting DDRD sebelum PortD digunakan. Dengan menuliskan program DDRD=0xFF,

    maka portD difungsikan sebagai output. DDR bernilai FF(hexa). Apabila diubah menjadi

    bilangan biner, maka menjadi 1111 1111. Bit-bit DDRD saat berisi 1, maka pin-pin pada

    port D difungsikan sebagai output.

    Selanjutnya, program PORTD=0xFF; digunakan untuk memberikan masukan

    HIGH pada kondisi awal setiap Port di D. Karena Kit ini terdapat common catoda, maka

    apabila diberi masukan HIGH setiap portnya maka output tidak akan mengeluarkan

    keluaran. PortD hanya mengeluarkan keluaran apabila diberi masukan LOW.

    Pernyataan While digunakan untuk loop. Pada program selanjutnya berisikan nilai

    masukan untuk PortD dari pin 0 hingga pin 7. Dimana, akan dihasilkan keluaran jika

    masukan untuk pin D adalah 0 (Low), sedangkan jika masukan untuk pin D adalah 1

    (HIGH) maka tidak akan dihasilkan keluaran. Hal ini terbukti dengan hasil pada

    percobaan 1.

    Percobaan 2:

    #include digunakan untuk memberitahu kepada compiler bahwa

    program yang kita buat menggunakan Atmega 8535. Selanjutnya pada program utama

    dideklarasikan A menggunakan tipe data unsigned char . Artinya, A memiliki jangkauan

    nilai 0 hingga 255. Kemudian, sebelum Port A digunakan, maka DDRA harus disetting

    terlebih dahulu. DDRA bernilai 00(hexa). Apabila diubah menjadi bilangan biner, maka

    menjadi 0000 0000. Dimana, bit-bit DDRA saat berisi 0, maka pin-pin pada port A

    difungsikan sebagai input.

    Pada percobaan ini, selanjutnya ditulis program PORTA=0XFF; yang apabila

    dijadikan bilangan biner menjadi 1111 1111. Sehingga dapat ditetapkan bahwa Port A

    menggunakan Pull-Up karena bernilai 1 untuk setiap Pin pada PortA. Pull-Up hanya akan

    menghasilkan keluaran jika terjadi perubahan nilai 1 ke 0.

  • DDRD bernialai FF(hexa), maka pin-pin pada port D difungsikan sebagai output.

    Selanjutnya, program PORTD=0xFF; digunakan untuk memberikan masukan HIGH

    pada kondisi awal setiap Port di D. Karena Kit ini terdapat common catoda, maka apabila

    diberi masukan HIGH setiap portnya maka output tidak akan mengeluarkan keluaran.

    PortD hanya mengeluarkan keluaran apabila diberi masukan LOW.

    Pada program utama, dituliskan A=PINA; yang artinya memasukan program

    PINA ke A. Seanjutnya dituliskan PORTD=A; yang artinya memasukkan program pada

    A ke PORTD. Shingga maksud dari program ini adalah keluaran tergantung dari

    masukannya. Masukannya sendiri berdasarkan pada tombol. Karena Pull-Up, maka hanya

    aktif ketika terjadi perubahan dari nilai 1 ke 0 (tombol ditekan, lalu dilepas). Saat terjadi

    perubahan nilai dari 1 ke 0 inilah, LED akan menyala. Mengindikasikan adanya keluaran

    pada pin-pin di PORTD. Hal ini sesuai dengan prakteknya saat praktikum.

    Percobaan 3:

    Pada percobaan 3, yakni program PortD sebagai keluaran, dengan fungsi

    jeda/delay. #include digunakan untuk memberitahu kepada compiler

    bahwa program yang kita buat menggunakan Atmega 8535. Kemudian juga dituliskan

    #include sebagai library untuk program delay.

    Pada pada program utama dideklarasikan A menggunakan tipe data unsigned int .

    Artinya, A memiliki jangkauan nilai 0 hingga 65.353. Kemudian, sebelum Port D

    digunakan, maka DDRD harus disetting terlebih dahulu. DDRD bernialai FF(hexa), maka

    pin-pin pada port D difungsikan sebagai OUTPUT.

    Program PORTD=0x00; digunakan untuk memberikan masukan/nilai awal LOW

    pada kondisi awal setiap Port di D. Selanjutnya program A=1; ditulis untuk memasukkan

    nilai 1 ke A. pernyataan While digunakan untuk pengulangan atau loop-ing.

    Kemudian ditulis program PORTD=~A; ditulis untuk menghasilkan keluaran dari

    invers A. maksdunya adalah nilai awal adalah 0000 0000, kemudian menjadi 0000 0001.

    Namun karena diinvers, maka keluarannya dibalik dari MSB ke LSB, menjadi 1000 0000.

    Sehingga LED yang menyala adalah LED paling kiri. Dan kondisi seperti ini

    bertahan/tertunda selama 250 ms. Setelah 250ms, maka nilai 1 akan dikalikan dengan

    nilai 2(desimal) dan diinverskan kembali menjadi 0100 0000. Karena nilai A belum > 128

    maka kondisi bertahan/tertunda 250ms, sehingga LED yang menyala adalah nomor 2 dari

  • kiri. Lalu dikalikan lagi nilai 2 dengan 2 menjadi 4. Dan seterusnya hingga dikalikan

    kembali nilai 64 dengan 2 menjadi 128. Maka diinverskan menjadi 0000 0001 sehingga

    LED yang menyala adalah nomor 1 dari kanan. Waktu delay disini berfungsi untuk

    mengatur lamanya LED menyala.Setelah itu program kembali lagi dari A=1 karena nilai

    bitnya sudah >128. Hal ini sudah dibuktikan pada saat praktikum, dan sesuai.

    Percobaan 4:

    Percobaan 4 adalah percobaan geser bit. #include digunakan untuk

    memberitahu kepada compiler bahwa program yang kita buat menggunakan Atmega

    8535. Kemudian juga dituliskan #include sebagai library untuk program delay.

    Selanjutnya dideklarasikan Val dan n menggunakan tipe data unsigned char. Artinya, Val

    dan n memiliki jangkauan nilai 0 hingga 255.

    Pada program utama, dimasukan nilai 2 ke n sebagai nilai awalan. Lalu, sebelum

    Port D digunakan, maka DDRD harus disetting terlebih dahulu. DDRD bernilai FF(hexa),

    maka pin-pin pada port D difungsikan sebagai output.

    Program val=1

  • Percobaan 5:

    Program 5 adalah program untuk membaca input port dan dikeluarkan pada port

    yang lain. #include digunakan untuk memberitahu kepada compiler bahwa

    program yang kita buat menggunakan Atmega 8535. Kemudian juga dituliskan

    #include sebagai library untuk program delay.

    Karena kita memiliki 5 buah data dengan nilai 129, 66, 36, 24, 255 dengan tipe

    data yang sama (unsigned int), maka digunakan array untuk mengefektifkan program.

    Yakni menyimpan 5 data tersebut dengan tipe data yang sama ke variabel D1.

    Pada program awal, dideklarasikan variabel n dan a memiliki tipe data unsigned

    char. Artinya, variabel n dan a memiliki jangkauan nilai 0 hingga 255. Selanjutnya

    disetting DDRD bernilai FF (hexa) sehingga portD digunakan sebagai output. Lalu,

    PortD diberi masukan awal 1, sehingga portD hanya akan menghasilkan keluaran jika

    terdapat masukan 0.

    Kemudian program DDRB=0x00; digunakan untuk pemilihan fungsi port. Bit-bit

    DDRB berisi 0, maka pin-pin pada port B difungsikan sebagai input. Selanjutnya

    PORTB=0XFF; artinya Port B menggunakan Pull-Up karena bernilai 1 untuk setiap Pin

    pada PortB.

    Pernyataan While untuk perulangan atau looping. Pada proses perulangan ini, jika

    pin B.0 diberi masukan 0 dengan kondisi pull-up (tombol ditekan, lalu dilepas) maka

    variabel a akan bertambah 1, yang menyebabkan pertambahan juga pada variabel n.

    karena variabel n bertambah menjadi [1], maka keluaran pada portD akan bernilai 129

    (hexa) atau 1000 0001. Artinya LED yang nyala hanyalah led nomor 1 dari kiri dan kanan

    bersamaan selama 500ms.

    Selanjutnya, akan terjadi looping variabel n jika variabel n belum bernilai 6. Saat

    variabel n bernilai 2, maka keluarannya adalah 66(hexa) atau 0100 0010 (biner) selama

    500ms. Begitu juga saat variabel n bernilai 3, maka keluarannya menjadi 36(hexa) atau

    0010 0100 (biner) selama 500ms. Saat variabel n bernilai 4, maka keluarannya adalah

    24(hexa) atau 0001 1000 (biner) selama 500ms. Saat variabel n bernilai 5, maka

    keluarannya adalah 255(hexa), sehingga semua LED menyala selama 500ms. Intruksi ini

  • akan mengalami pengulangan sebanyak 2x dikarenakan variabel a disetting akan terus

    bertambah nilainya sampai nilai variabel a

  • Lampiran:

    Program 1:

    Program 2:

  • Program 3:

    Program 4:

  • Program 5: