Modul Praktikum Mikroprosessor Revisi

Embed Size (px)

DESCRIPTION

Microprocessor Module

Citation preview

  • PRAKTIKUM MIKROPROSESSOR

    PTE-408

    PRODI S1 PENDIDIKAN TEKNIK ELEKTRO

    PETUNJUK PRAKTIKUM

    DYAH LESTARI

    LABORATORIUM MIKROPROSESSOR

    JURUSAN TEKNIK ELEKTRO-FAKULTAS TEKNIK

    UNIVERSITAS NEGERI MALANG

    2012

  • PRAKTIKUM MIKROPROSESSOR

    PTE-408

    PRODI S1 PENDIDIKAN TEKNIK ELEKTRO

    PETUNJUK PRAKTIKUM

    Dosen Pembina

    Dyah Lestari

    Asisten Praktikum

    Daniel Wijaya

    Frebu Trilangga

    Ahmad Ganjar Baiquni

    Ian Hadinata

    LABORATORIUM MIKROPROSESSOR

    JURUSAN TEKNIK ELEKTRO-FAKULTAS TEKNIK

    UNIVERSITAS NEGERI MALANG

    2012

  • i

    KATA PENGANTAR

    Puji syukur ke hadirat Tuhan YME, perbaikan-perbaikan petunjuk

    praktikum yang sebelumnya merupakan salah satu titik lemah prodi telah selesai.

    Perbaikan yang telah dilakukan harus menjadi satu sistem perbaikan yang

    berkelanjutan.

    Perubahan yang dilakukan dalam penyusunan materi Petunjuk Praktikum

    ini dari Petunjuk Praktikum tahun lalu merupakan perubahan atau perbaikan

    layout serta penambahan tugas-tugas yang bersifat eksplorasi.

    Pada kesempatan ini, kami ingin menyampaikan terima kasih yang besar-

    besarnya pada semua pihak yang telah terlibat dalam penyusunan petunjuk

    praktikum ini. Secara khusus untuk dosen pembina Praktikum Mikroprosessor,

    Ibu Dyah Lestari, yang sudah memberikan tenaga, pikiran dan waktunya untuk

    perbaikan praktikum dalam Program Studi S1 Pendidikan Teknik Elektro ini.

    Ucapan terima kasih juga disampaikan untuk dukungan rekan-rekan teknisi dan

    asisten praktikum di Laboratorium Mikroprosessor. Akhir kata, semoga semua

    usaha yang telah dilakukan berkontribusi pada dihasilkannya lulusan Program

    Studi S1 Pendidikan Teknik Elektro yang berkompeten.

    Malang, September 2012

    Tim Penyusun

  • ii

    DAFTAR ISI

    Halaman KATA PENGANTAR ............................................................................................ i DAFTAR ISI ........................................................................................................ ii MODUL I ANTARMUKA MIKROKONTROLLER DENGAN LED ....................... 1 MODUL II ANTARMUKA MIKROKONTROLLER DENGAN TOGGLE SWITCH . 6 MODUL III ANTARMUKA MIKROKONTROLLER DENGAN SEVEN SEGMENT . 10 MODUL IV ANTARMUKA MIKROKONTROLLER DENGAN KEYPAD ............... 15 MODUL V ANTARMUKA MIKROKONTROLLER DENGAN LCD ...................... 20 MODUL VI MENGGUNAKAN ANALOG TO DIGITAL CONVERTER (ADC)

    DALAM MIKROKONTROLLER ATMEGA8535 .............................. 26 MODUL VII MENGGUNAKAN INTERRUPT DALAM MIKROKONTROLLER

    ATMEGA8535 ............................................................................. 34 MODUL VIII MENGGUNAKAN TIMER, COUNTER dan PWM DALAM MIKRO-

    KONTROLLER ATMEGA8535 ...................................................... 39 DAFTAR RUJUKAN ........................................................................................... 49

  • 1

    MODUL I

    ANTARMUKA MIKROKONTROLER DENGAN LED

    TUJUAN

    Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

    rangkaian LED.

    Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk

    menyalakan LED.

    LED

    Sebuah LED (Light Emitting Diode) adalah sebuah sumber cahaya yang terbuat dari

    semikonduktor. Biasanya LED digunakan sebagai lampu indikator dalam beberapa piranti,

    dan mulai banyak digunakan sebagai penerangan/lampu. Gambar 1 memperlihatkan bentuk

    fisik LED dan simbol rangkaiannya.

    (a) Bentuk fisik LED (b) Simbol elektronik

    Untuk menyalakan sebuah LED perlu

    rangkaian tambahan yang dapat dilihat pada

    gambar disamping. Rangkaian tersebut berupa

    sebuah transistor yang difungsikan sebagai

    saklar dan dua buah resistor untuk pembatas

    arus. Dalam modul I/O yang dipakai dalam

    praktikum, kedelapan rangkaian LED tersebut

    dihubungkan ke sebuah soket jumper bernama

    OUTPUT.

  • 2

    PERINTAH DASAR MENGELUARKAN DATA

    Sebelum mulai menulis program dengan bahasa C, perlu diketahui bahwa

    mikrokontroler ATmega8535 perlu diset isi register DDR dan PORT agar bisa digunakan

    sebagaimana mestinya, seperti yang terlihat dalam Tabel 1.

    Tabel 1 Konfigurasi Pengaturan Port I/O

    DDR bit = 1 DDR bit = 0

    PORT bit = 1 Output ; High Input; R pull up

    PORT bit = 0 Output; Low Input, Floating

    Untuk mengirim data byte dalam bentuk bilangan desimal ke PORTX (X=A, B, C, D) digunakan

    statement

    PORTX = desimal; PORTB = 128;

    Untuk mengirim data byte dalam bentuk bilangan biner ke PORTX (X=A, B, C, D) digunakan

    statement

    PORTX = 0bdata; PORTB = 0b10101010;

    Untuk mengirim data per bit ke PORTX.Y (X=A, B, C, D, dan Y=0, 1, 2 , 3, 4, 5, 6, 7) digunakan

    statement

    PORTX.Y = data; PORTB.1 = 0;

    Dimana data bisa berupa 0 atau 1.

    ALAT DAN BAHAN YANG DIGUNAKAN

    1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

    1 buah catu daya DC +5V

    1 buah multimeter

    1 buah ISP Downloader AVR

    1 buah sistem minimum AVR

    1 buah I/O

    1 buah kabel printer USB

    1 buah kabel pita hitam

  • 3

    PROSEDUR

    1. Rangkailah peralatan yang diperlukan seperti pada gambar dibawah. Hubungkan

    soket jumper PORTB pada minimum system dengan soket jumper OUTPUT pada I/O.

    I/OISP Downloader

    Kabel USBKabel

    downloader Minimum

    system AVR

    Kabel pita

    hitam

    Catu Daya + 5V

    2. Buka program Code Vision AVR

    3. Buatlah project baru dengan inisialisasi PORTA sebagai output (DDRA = FFH) dan

    output value = 0 (PORTA=00H) sehingga pada program bagian inisialisasi PORTA

    terlihat sebagai berikut:

    PORTA=0x00;

    DDRA=0xff;

    4. Tambahkan file header

    #include

    5. Tuliskan dalam program utama sebagai berikut:

    // Program LED1

    PORTA=0x0f;

    delay_ms(1000);

    PORTA=0xf0;

    delay_ms(1000);

    6. Amati nyala LED dan gambarkan nyala LED tersebut.

    7. Ulangi langkah 3-6 untuk program-program berikut:

    //Program LED2

    PORTA=0b00001111;

    delay_ms(1000);

    PORTA=0b11110000;

    delay_ms(1000);

  • 4

    //Program LED3

    PORTA=0x55;

    delay_ms(1000);

    PORTA=0xaa;

    delay_ms(1000);

    //Program LED4

    PORTA=0b11100111;

    delay_ms(1000);

    PORTA=0b11011011;

    delay_ms(1000);

    PORTA=0b10111101;

    delay_ms(1000);

    PORTA=0b01111110;

    delay_ms(1000);

    PORTA=0b10111101;

    delay_ms(1000);

    PORTA=0b11011011;

    delay_ms(1000);

    //Program LED5

    PORTA=0b00000001; PORTA.2=1;

    delay_ms(1000);

    PORTA=0b00000010; PORTA.1=1;

    delay_ms(1000);

    PORTA=0b00000100;

    delay_ms(1000);

    PORTA=0b00001000;

    delay_ms(1000);

    PORTA=0b00010000;

    delay_ms(1000);

    PORTA=0b00100000;

    delay_ms(1000);

    PORTA=0b01000000;

    delay_ms(1000);

    PORTA=0b10000000;

    delay_ms(10 00);

  • 5

    DATA HASIL PERCOBAAN

    1. Tampilan nyala LED Program LED1

    2. Tampilan nyala LED Program LED2

    3. Tampilan nyala LED Program LED3

    4. Tampilan nyala LED Program LED4

    5. Tampilan nyala LED Program LED5

    ANALISA DATA

    1. Analisa Program LED1 LED5!

    2. Apakah persamaan dan perbedaan PROGRAM LED1 dan PROGRAM LED2?

    3. Instruksi apa yang digunakan untuk mengeluarkan data ke LED?

    4. Mengapa ada jeda waktu sekitar 1 detik antara tampilan LED yang pertama dengan

    yang berikutnya?

  • 6

    MODUL II

    ANTARMUKA MIKROKONTROLER DENGAN TOGGLE SWITCH

    TUJUAN

    Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

    rangkaian input saklar toggle.

    Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk membaca

    data input dari saklar toggle.

    SAKLAR TOGGLE

    Saklar toggle adalah salah satu saklar elektrik yang digerakkan secara manual oleh batang

    mekanik. Saklar toggle tersedia dalam berbagai bentuk dan ukuran, serta digunakan dalam

    berbagai aplikasi. Gambar dibawah memperlihatkan bentuk fisik dan symbol saklar toggle.

    (b) Salah satu toggle switch (b) Simbol elektronik

    Dalam modul I/O yang dipakai dalam

    praktikum, saklar toggle yang digunakan diberi

    rangkaian tambahan berupa rangkaian LED

    untuk melihat secara langsung logika yang ada

    pada saklar. Rangkaian LED sama dengan

    rangkaian dalam Modul I. Kedelapan rangkaian

    saklar tersebut dihubungkan ke sebuah soket

    jumper bernama INPUT.

  • 7

    PERINTAH DASAR MEMBACA DATA

    Sebelum membaca data, perlu dibuat deklarasi variabel untuk data yang dimasukkan.

    Data bisa bertipe char. Deklarasi variabel diletakkan di variabel lokal pada main

    program.

    void main (void)

    {

    //Declare your local variables here

    unsigned char data_in;

    Untuk membaca data byte ke PORTX (X=A, B, C, D) digunakan statement

    data_in = PINX;

    contoh: data_in = PINB;

    Untuk membaca data bit ke PORTX.Y (X=A, B, C, D dan Y=0, 1, 2 , 3, 4, 5, 6, 7)

    digunakan statement

    data_in = PINX.Y;

    contoh: data_in = PINB.1;

    ALAT DAN BAHAN YANG DIGUNAKAN

    1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

    1 buah catu daya DC +5V

    1 buah multimeter

    1 buah ISP Downloader AVR

    1 buah sistem minimum AVR

    1 buah I/O

    1 buah kabel printer USB

    2 buah kabel pita hitam

    PROSEDUR

    1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper

    OUTPUT pada I/O dan soket jumper PORTC pada minimum system dengan soket

    jumper INPUT pada I/O

    2. Buka program Code Vision AVR

  • 8

    3. Buatlah project baru dengan inisialisasi PORTB sebagai output (DDRB = FFH) dan

    output value = 0 (PORTB=00H), dan PORTC sebagai input (DDRC = 00H) dan resistor

    pullup dihubungkan (PORTC=FFH) sehingga pada program bagian inisialisasi PORTB

    dan PORTC terlihat sebagai berikut:

    PORTB=0x00;

    DDRB=0xff; //portb sebagai output, 0b11111111, nilai awal 0

    PORTC=0xff;

    DDRC=0x00; // portc sebagai input, 0b00000000, pull up

    4. Tambahkan deklarasi variabel lokal dalam program utama

    unsigned char data_in;

    5. Tuliskan dalam program utama sebagai berikut:

    // Program Saklar1

    data_in=PINC; //baca saklar di PORTC

    PORTB=data_in; //tampilkan logika saklar ke LED di PORTB

    6. Pindahkan saklar sesuai tabel 2.1 dibawah, amati dan catat nyala LED.

    Tabel 2.1 Program Saklar1

    No. Saklar LED

    7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

    1 0 0 0 0 0 0 0 1

    2 0 0 0 0 0 0 1 1

    3 0 0 0 0 0 1 0 1

    4 0 0 0 0 1 0 0 1

    5 0 0 0 1 0 0 0 1

    6 0 0 1 0 0 0 0 1

    7 0 1 0 0 0 0 0 1

    8 1 0 0 0 0 0 0 1

    9 1 1 1 1 1 1 1 1

    7. Ulangi langkah 3-4 untuk program berikut:

    //Program Saklar2

    data_in = PINC.0; // baca saklar bit ke 0

    PORTB.7 = data_in; // tampilkan logika saklar pada LED bit ke 7

    8. Pindah saklar sesuai tabel 3.1 dibawah, Amati dan catat nyala LED. Tabel 3.1 Program Saklar2

    No. Saklar LED

    7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0

    1 0 0 0 0 0 0 0 1

    2 0 0 0 0 0 0 1 1

    3 0 0 0 0 0 1 0 0

    4 0 0 0 0 1 0 0 1

    5 0 0 0 1 0 0 0 0

    6 0 0 1 0 0 0 0 1

    7 0 1 0 0 0 0 0 0

  • 9

    9. Buat program untuk masingmasing algoritma berikut dengan menggunakan if :

    a) Jika switch bit 0 berlogika 1 maka LED bit 4 menyala.

    b) Jika switch bit 1 berlogika 1 maka LED bit 7 menyala.

    10. Buat satu program untuk masingmasing algoritma berikut dengan menggunakan if-

    else.

    a) Jika switch bit 0 berlogika 1 maka LED bit 4 menyala.

    b) Jika switch bit 1 berlogika 1 maka LED bit 7 menyala.

    c) Jika switch bit 2 berlogika 1 maka LED menyala dengan konfigurasi

    ON-OFF-ON-OFF-ON-OFF-ON-OFF (bit7-bit0).

    d) Jika switch bit 3 berlogika 1 maka LED menyala dengan konfigurasi

    OFF-ON-OFF-ON-OFF-ON-OFF-ON (bit7-bit0).

    e) Jika switch bit 4 berlogika 1 maka LED menyala semua.

    f) JIka switch bit 5 berlogika 1 maka LED mati semua.

    g) Jika switch bit 6 berlogika 1 maka LED menyala berurutan mulai dari bit0 ke bit7

    lalu kembali lagi ke bit0 dengan delay 1 detik

    h) Jika switch bit 7 berlogika 1 maka LED akan menyala dengan nilai sama dengan

    dua digit terakhir NIM anda.

    DATA HASIL PERCOBAAN

    1. Tabel 2.1

    2. Tabel 3.1

    3. Source code program pada percobaan langkah 9

    4. Source code program pada percobaan langkah 10

    ANALISA DATA

    1. Analisa Program Saklar1 dan Saklar2

    2. Instruksi apa yang digunakan untuk membaca data input?

    3. Apakah perbedaan program yang menggunakan if dan if-else?

  • 10

    MODUL III

    ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN

    TUJUAN

    Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

    rangkaian seven segment.

    Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk

    menampilkan karakter ke seven segment.

    SEVEN SEGMENT

    Penampil seven segment adalah sebuah piranti penampil untuk menampilkan angka

    desimal. Penampil seven segment banyak digunakan dalam jam digital, meter elektronik,

    dan piranti elektronik yang lain. Gambar 3.1 memperlihatkan bentuk fisik dan layout dasar

    penampil seven segment. Penampil seven segment terdiri atas 8 LED yang disusun seperti

    dalam Gambar 3.1(b). Setiap LED diidentifikasi sebagai huruf a, b, c, d, e, f, g, yang dimulai

    dari huruf a di sebelah atas. Di sebelah kanan terdapat satu LED tambahan yang digunakan

    sebagai koma (dp).

    (a) Penampil seven segment (b) Layout LED

    Gambar 3.1 Seven segment

    Untuk menampilkan sebuah karakter, minimal 2 LED harus dinyalakan. Tabel 3.1

    memperlihatkan kode heksadesimal untuk menampilkan angka 0 sampai 9.

    Dalam modul I/O yang dipakai dalam praktikum, seven segment yang digunakan ada

    2 buah, semuanya bertipe common anoda. Kedua seven segment tersebut dimultipleks

    sehingga data diperoleh dari satu kaki (D0-D7), sedangkan untuk menyalakannya digunakan

    kaki kontrol yang berbeda (DO1 dan DO2). Rangkaian lengkap seven segment dapat dilihat

    dalam Gambar 3.2.

    http://en.wikipedia.org/wiki/File:Seven_segment_02_Pengo.jpg
  • 11

    Tabel 3.1 Kode heksadesimal untuk angka 0-9

    Digit gfedcba g f e d c b a

    0 0x3F off on on on on on on

    1 0x06 off off off off on on off

    2 0x5B on off on on off on on

    3 0x4F on off off on on on on

    4 0x66 on on off off on on off

    5 0x6D on on off on on off on

    6 0x7D on on on on on off on

    7 0x07 off off off off on on on

    8 0x7F on on on on on on on

    9 0x6F on on off on on on on

    Gambar 3.2 Rangkaian penampil seven segment

    Dalam Gambar 3.2, kaki a, b, c, d, e, f, g, dp dihubungkan ke soket jumper DATA 7S,

    sedangkan kaki kontrol (DO1 dan DO2 dihubungkan dengan soket jumper I/P S KEY.

  • 12

    ALAT DAN BAHAN YANG DIGUNAKAN

    1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

    1 buah catu daya DC +5V

    1 buah multimeter

    1 buah ISP Downloader AVR

    1 buah sistem minimum AVR

    1 buah I/O

    1 buah kabel printer USB

    2 buah kabel pita hitam

    PROSEDUR

    1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper

    DATA7S pada I/O dan soket jumper PORTC pada minimum system dengan soket

    jumper I/P S KEY pada I/O.

    2. Buka program Code Vision AVR

    3. Buatlah project baru dengan inisialisasi PORTB sebagai output (DDRB = FFH) dan

    output value = 0 (PORTB=00H), dan PORTC.0-PORTC.3 sebagai input, PORTC.4-

    PORTC.7 sebagai output (DDRC = F0H) dan (PORTC=F0H) sehingga pada program

    bagian inisialisasi PORTB dan PORTC terlihat sebagai berikut:

    PORTB=0x00;

    DDRB=0xff; //portb sebagai output, 0b11111111

    //un tuk data 7s

    PORTC=0xf0;

    DDRC=0xf0; //portc sebagai input dan output, 0b11110000

    //untuk kontrol DO1, DO2

    4. Tuliskan dalam program utama sebagai berikut:

    PROGRAM SEGMEN1

    //Menampilkan angka 8 pada seven segmen sebelah kanan.

    while (1)

    {

    PORTC.7=1; //nonaktifkan seven segment kiri

    PORTC.6=0; //aktifkan seven segmen kanan

    PORTB=0x7f; //tampilkan data angka 8

    delay_ms(10);

    }

  • 13

    5. Amati nyala seven segment.

    6. Ulangi langkah 3-5 untuk program berikut:

    PROGRAM SEGMEN2

    //Menampilkan angka 4 pada seven segmen sebelah kiri.

    while (1)

    {

    PORTC.7=0; //aktifkan seven segment kiri

    PORTC.6=1; //nonaktifkan seven segmen kanan

    PORTB=0x66; //tampilkan data angka 4

    delay_ms(10);

    }

    7. Gabungkan kedua program di atas dan lihat nyala seven segmen.

    8. Ubah nilai delay untuk masing-masing seven segment menjadi 100 ms dan amati

    tampilan seven segmen.

    9. Ulangi langkah 3-5 untuk program berikut:

    PROGRAM SEGMEN3

    //Membuat counter 0 - 9 di segmen sebelah kanan

    // Declare your gl obal variables here

    unsigned char bil[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // Declare your local variables here

    int kanan;

    while (1)

    {

    // Place your code here

    kanan=0;

    for (kanan=0;kanan

  • 14

    DATA HASIL PERCOBAAN

    5. Program SEGMEN1

    6. Program SEGMEN2

    7. Gabungan SEGMEN1 dan SEGMEN2 delay 100ms

    8. Program SEGMEN3

    9. Program SEGMEN3 delay 100ms

    10. Source code Program SEGMEN4

    11. Source code Program SEGMEN5

    ANALISA DATA

    1. Analisa Program SEGMEN1 sampai SEGMEN5

    2. Instruksi apa yang digunakan untuk mengeluarkan data ke seven segment?

    3. Instruksi apa yang digunakan untuk mengontrol nyala seven segment?

    4. Jika nilai delay pada Gabungan Program SEGMEN1 dan SEGMEN2 diperbesar, apa

    yang terjadi pada tampilan seven segment?

    5. Jika nilai delay pada program SEGMEN3 diperkecil, apa yang terjadi pada tampilan

    seven segment?

  • 15

    MODUL IV

    ANTARMUKA MIKROKONTROLER DENGAN KEYPAD

    TUJUAN

    Mengetahui dan memahami cara mengantarmukakan mikrokontroler dengan

    keypad.

    Mengetahui dan memahami bagaimana memrogram mikrokontroler untuk membaca

    masukan dari keypad.

    KEYPAD

    Keypad merupakan tombol push button yang disusun sebagai baris dan kolom sehingga

    membentuk matriks. Keypad banyak digunakan sebagai piranti masukan dalam piranti

    elektronik. Gambar 4.1 memperlihatkan bentuk fisik keypad. Keypad ini memiliki 16 tombol

    yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C, D,* dan #.

    Gambar 4.1 Keypad 4x4

    Dalam modul I/O yang di Dalam gambar 4.2 keypad dihubungkan ke PORTB

    mikrokontroler dengan posisi baris (b1-b4) terhubung ke PORTB.0-PORTB.3 dan posisi kolom

    (c1-c4) terhubung ke PORTB.4-PORTB.7. Sedangkan untuk mengetahui tombol apa yang

    ditekan oleh user, 8 buah LED yang terdapat dalam MODUL I/O dihubungkan ke PORTC.

    Gambar 4.2

    Rangkaian keypad dan LED

    http://www.google.co.id/imgres?imgurl=http://www.futurlec.com.au/images/KEYPAD4X4B.jpg&imgrefurl=http://www.futurlec.com.au/Keypads.jsp&usg=__akJh_U9FPEYRx8prSSv8lt8ByAI=&h=231&w=250&sz=43&hl=id&start=1&zoom=1&tbnid=qtZ0nmEuM8eNoM:&tbnh=103&tbnw=111&prev=/images?q=keypad+4x4&um=1&hl=id&tbs=isch:1&um=1&itbs=1
  • 16

    ALAT DAN BAHAN YANG DIGUNAKAN

    1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

    1 buah catu daya DC +5V

    1 buah multimeter

    1 buah ISP Downloader AVR

    1 buah sistem minimum AVR

    1 buah modul I/O

    1 buah keypad

    1 buah kabel printer USB

    2 buah kabel pita hitam

    PROSEDUR

    1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper

    KEYPAD dan soket jumper PORTC pada minimum system dengan soket jumper

    OUTPUT pada I/O.

    2. Buka program Code Vision AVR

    3. Buatlah project baru dengan inisialisasi PORTB.0-PORTB.3 sebagai output dengan

    kondisi awal berlogika HIGH dan PORTB.4-PORTB.7 sebagai input dengan pull-up

    (DDRB = 0FH dan PORTB=FFH), serta PORTC sebagai output dan kondisi awal LOW

    (DDRC = FFH dan PORTC=00H), sehingga pada program bagian inisialisasi PORTB dan

    PORTC terlihat sebagai berikut:

    PORTB=0xff; //0b11111111

    DDRB=0x0f; //PORTB sebagai input dan output, 0b00001111

    PORTC=0x00;

    DDRC=0xff; //PORTC sebagai output

    4. Deklarasikan fungsi keypad() dengan bilangan yang dikembalikan ke program utama

    sebagai bilangan integer pada global variabel.

    unsigned char keypad();

    5. Tuliskan script berikut dalam program utama:

    while (1)

    {

    PORTC=keypad();

    //menampilkan hasil yang dikembalikan oleh fungsi ke LED

    }

  • 17

    6. Tambahkan fungsi berikut di bawah program utama (di luar fungsi void) :

    unsigned char keypad()

    {

    PORTB = 0b11111110; //aktifkan baris1 (memberi logika 0 ke baris1) delay_ms(100);

    if(PINB.7==0) return (10);

    if(PINB.6==0) return (3);

    if(PINB.5==0) return (2);

    if(PINB.4==0) return (1);

    //========================

    PORTB = 0b11111101; //aktifkan baris2 delay_ms(100);

    if(PINB.7==0) return (11);

    if(PINB.6==0) return (6);

    if(PINB.5==0) return (5);

    if(PIN B.4==0) return (4);

    //========================

    PORTB = 0b11111011; //aktifkan baris3 delay_ms(100);

    if(PINB.7==0) return (12);

    if(PINB.6==0) return (9);

    if(PINB.5==0) return (8);

    if(PINB.4==0) return (7);

    //============== ==========

    PORTB = 0b11110111; //aktifkan baris4 delay_ms(100);

    if(PINB.7==0) return (13);

    if(PINB.6==0) return (15);

    if(PINB.5==0) return (0);

    if(PINB.4==0) return (14);

    }

    7. Tekan tombol keypad, amati nyala LED dan isi Tabel 4.1.

    8. Ubah program utama untuk algoritma berikut:

    a. Jika tombol 0 ditekan semua LED mati.

    b. Jika tombol 1 ditekan semua LED menyala.

    9. Buatlah satu program dengan algoritma sebagai berikut:

    a. Jika tombol 0 ditekan LED bit 0 menyala.

    b. Jika tombol 1 ditekan LED bit 1 menyala.

    c. Jika tombol 2 ditekan LED bit 2 menyala.

    d. Jika tombol 3 ditekan LED bit 3 menyala.

    e. Jika tombol 4 ditekan LED bit 4 menyala.

    f. Jika tombol 5 ditekan LED bit 5 menyala.

    g. Jika tombol 6 ditekan LED bit 6 menyala.

    h. Jika tombol 7 ditekan LED bit 7 menyala.

  • 18

    i. Jika tombol 8 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)

    j. Jika tombol 9 ditekan LED menyala sesuai gambar dibawah ini ber urutan dari

    atas kebawah dengan delay 1 detik. (Gunakan perulangan for ...)

    k. Jika tombol A ditekan LED bit 0,2,4,6 menyala dan bit 1,3,5,7 mati.

    l. Jika tombol B ditekan LED bit 0,2,4,6, mati dan bit 1,3,5,7 menyala.

    m. Jika tombol C ditekan ditekan algoritma k dan l dilaksanakan bergantian dengan

    delay 1 detik.

    n. Jika tombol D ditekan ditekan maka LED menyala menunjukkan nilai biner dua

    digit terakhir NIM anda.

    o. Jika tombol * semua LED mati.

    p. Jika tombol # semua LED menyala.

    LED Menyala

    LED Mati

    LED Menyala

    LED Mati