Anda di halaman 1dari 8

MODUL 1 : I/O DASAR

Praktikan: Sarah Kharismawati (13210113)
Asisten: Alissa Ully Ashar Waktu Percobaan: 2 November 2012 EL3096-Sistem Mikroprosesor Laboratorium Dasar Teknik Elektro Sekolah Teknik Elektro dan Informatika – ITB

Abstrak Praktikum mengenai I/O Ports dasar ini membuat praktikan memahami pengaturan dan penggunaan Port baik seabgai input maupun output. Selain itu, praktikan diajar untuk membaca dan memahami datasheet ATMega 8535. Pada Tugas I.B diperkenalkan mengenai fungsi delay dan pengaturan fuse jika menggunakan sumber clock (kristal) eksternal yang juga membutuhkan pemahaman datasheet mengenai External Crystal. Penggunaan perangkat lunak WinAVR untuk memprogram mikroprosesor dan AVRDude untuk mengatur fuse juga diperkenalkan pada praktikum ini. Kata kunci: Datasheet ATMega 8535, I/O Ports, delay, external crystal, WinAVR, AVRDude 1. Pendahuluan

Gambar 2-1 Tabel konfigurasi DDRx dan PORTx (datasheet ATMega8535 hal. 53)

Jika DDRx diset ‘0’, maka PORTx akan berfungsi sebagai input dan jika DDRx diset ‘1’, maka PORTx akan berfungsi sebagai output. Selain register DDR, PORT dan PIN, terdapat juga SFIOR (Special Function Input Output Register). Pada bit ke 2 SFIOR terdapat PUD (Pull Up Disable). Walaupun DDRx dan PORTx telah diatur agar pull-up enable, jika PUD aktif, maka pull-up tetap akan disable.

Pada sistem mikroprosesor terdapat bagian yang dapat digunakan sebagai input dan output. Pada praktikum ini akan dipelajari mengenai pengesetan dan aplikasi dari input output. Tujuan dari percobaan ini antara lain :  Memahami datasheet ATMega 8535  Mampu membuat aplikasi input dan output pada AVR dengan menggunakan bahasa pemrograman C pada WinAVR  Memahami pengesetan fuse yang berkaitan dengan penggunaan besar dan jenis kristal 2. Dasar Teori

Gambar 2-2 SFIOR (datasheet ATMega8535 hal. 59)

Jika terdapat pin yang tidak digunakan, akan lebih baik jika pin-pin ini memiliki level tegangan yang jelas (tertentu). Untuk memastikan kejelasan level tegangan, pull-up pin harus di enable. 3. Metodologi

Pada sistem mikroprosesor terdapat bagian yang disebut DDR, PORT, dan PIN. DDR (Data Direction Register) dipakai untuk mengatur fungsi PORT, apakah PORT akan digunakan sebagai input atau output. PORT sendiri merupakan tempat masuk dan keluarnya data yang akan diproses maupun data hasil proses yang dilakukan mikroprosesor. Sedangkan PIN Register digunakan untuk melihat/membaca data pada port pin. Berikut dibawah ini terdapat tabel pengaturan DDR, PORT dan PIN mikroprosesor ATMega 8535 karena pada praktikum digunakan mikroprosesor ATMega 8535.

Alat dan komponen yang digunakan dalam semua percobaan : Power Supply Kit praktikum terdiri dari Sismin ATMega 8535, DT-51 Trainer Board Kabel konektor PC yang telah terinstall dengan WinAVR dan AVRDude Datasheet ATMega 8535

Halaman

1

output menjadi seperti Tugas IB2 jika input = 3 angka terakhir nim rekan praktikan. output menjadi seperti Tugas IB4 jika input selain diatas.la saat akan mendownload program Hasil diamati dan dibuat flowchart program [Tugas IB2] Program dimodifikasi agar menghasilkan output bergantian sesuai representasi biner 3 angka terakhir nim anggota kelompok Hasil diamati dan dibuat flowchart program Hasil diamati dan dibuat flowchart [Tugas IB4] Program dimodifikasi agar menghasilkan LED pingpong Hasil diamati dan dibuat flowchart program [Tugas IB3] contoh program pada modul dijalankan Halaman 2 .Langkah kerja tiap percobaan : 3.la saat akan mendownload program Sismin ATMega 8535 dihubungkan dengan PC menggunakan kabel DB-9 Gambar 3-1 Langkah kerja Percobaan 1 (Port A Sebagai Output) Hasil diamati dan dibuat flowchart program [Tugas IC2] Program dimodifikasi agar menghasilkan output sbb : jika input = 3 angka terakhir nim praktikan.la saat akan mendownload program Power supply diatur pada tegangan 9V PORT A ATMega 8535 dihubungkan pada PORT Output Trainer Board PORT D ATMega 8535 dihubungkan pada PORT Input Trainer Board [Tugas IA2] Program dimodifikasi agar menghasilkan output sesuai representasi biner nomor kelompok [Tugas IC1] contoh program pada modul dijalankan tanpa memperhatikan pengaturan fuse Dipastikan switch S2 pada Sismin ATMega 8535 menya. output menjadi seperti Tugas IA2 3.2 Fasilitas Delay Pada AVR GCC Power supply diatur pada tegangan 9V PORT A ATMega 8535 dihubungkan pada PORT Output Trainer Board Sismin ATMega 8535 dihubugkan dengan PS menggunakan kabel DB9 Hasil diamati dan dibuat flowchart program [Tugas IB1] contoh program pada modul dijalankan Dilakukan pengaturan fuse dengan menggunakan AVRDude Dipastikan switch S2 pada Sismin ATMega 8535 menya.1 PORT A Sebagai Output PORT A ATMega 8535 dihubungkan pada PORT Output Trainer Board Sismin ATMega 8535 dihubungkan dengan PC menggunakan kabel DB-9 Gambar 3-2 Langkah kerja Percobaan 2 (Fasilitas Delay pada AVR GCC) Power supply diatur pada tegangan 9V 3.3 PORT A Sebagai Output dan PORT D Sebagai Input Hasil diamati dan dibuat flowchart program [Tugas IA1] contoh program pada modul dijalankan tanpa memperhatikan pengaturan fuse Dipastikan switch S2 pada Sismin ATMega 8535 menya.

Setelah sedikit memodifikasi program. maka percobaan ini benar.1 Hasil dan Analisis PORT A Sebagai Output DDRA = 0xFF Tugas I.A.2 DDRA = 0xFF PORTA = (1<<PA3) | (1<<PA2) Gambar 4-4 Screenshot Program Tugas I.2 END Gambar 4-1 Flowchart Program Tugas I.1 Pada percobaan ini program ditulis sesuai dengan yang ada pada modul.A. 4.2 Fasilitas Delay Pada AVR GCC Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Program utama 4 : Inisialisasi PORT A sebagai output 5 : Nilai output display LED senilai ‘01010101’ (hasil dari 01000000 OR 00010000 OR 00000100 OR 00000001) Hasil output display tidak sesuai dengan program yang ditulis.A.A. praktikan hanya mengetik ulang program dari modul dan menjalankannya. Kelompok : C => 0x0C => 0b00001100 Berikut dibawah ini merupakan flowchart dan screenshot source code.A. START PORTA = (1<<PA6) | (1<<PA4) | (1<<PA2) | (1<<PA0) END Gambar 4-3 Flowchart Program Tugas I.Gambar 3-3 Langkah kerja Percobaan 3 (PORT A Sebagai Output dan PORT B Sebagai Input) START 4. 4.1 Pada bagian ini.1 Halaman 3 .B. Tugas I. Berikut dibawah ini merupakan flowchart dan screenshot source code.A. PORTA = 0b00110011 _delay_ms(500) PORTA = 0b11001100 _delay_ms(500) Tugas I.B. START pengaturan fuse untuk clock DDRA = 0xFF PORTA = 0xFF Gambar 4-5 Flowchart Program Tugas I. Apabila output LED display sesuai dengan nilai PORT A.2 Pada percobaan ini. program dimodifikasi sehingga menghasilkan output sesuai dengan representasi biner nomor kelompok praktikan. Berikut dibawah ini merupakan flowchart dan screenshot source code.1 Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Program utama 4 : Inisialisasi PORT A sebagai output 5 : Nilai output display LED senilai ‘00001100’ (hasil dari 00001000 OR 00000100) Gambar 4-2 Screenshot Program Tugas I. diketahui bahwa LED yang tersambung dengan PA0 mati dan hasil output display memang benar.1 Hasil output display sesuai dengan yang diinginkan yaitu sesuai dengan nomor kelompok praktikan.

B. Setelah dilakukan pengaturan fuse.B.2 Pada percobaan ini program dimodifikasi agar manghasilkan output display LED yang menyala bergantian antara NIM praktikan dengan NIM rekan praktikan.B. Tugas I.2 Halaman 4 .2 Gambar 4-6 Screenshot Program Tugas I. NIM praktikan : 113 => 0b01110001 NIM rekan praktikan : 99 => 0b01100011 Berikut dibawah ini merupakan flowchart dan screenshot source code. LED menyala bergantian sesuai dengan delay 500ms dari frekuensi 1 MHz. Hal ini terjadi karena praktikan belum melakukan pengaturan fuse (frekuensi 1 MHz) sehingga frekuensi yang digunakan masih 8 MHz.B.START pengaturan fuse untuk clock DDRA = 0xFF PORTA = 0xFF PORTA = 0b00110011 _delay_ms(500) PORTA = 0b11001100 _delay_ms(500) Gambar 4-7 Flowchart Program Tugas I. Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Pendeklarasian internal clock 1 MHz 3 : Penggunaan library utility AVR 4 : Program utama 6 : Inisialisasi PORT A sebagai output 7 : Nilai awal output display senilai ‘11111111’ (LED menyala semua) 8 : Pengulangan terus (loop forever) 10 : Nilai PORT A ‘01100011’ (NIM rekan praktikan) 11 : Delay 500ms sebelum nilai PORT A berganti 12 : Nilai PORT A ‘01110001’ (NIM praktikan) 13 : Delay 500ms sebelum nilai PORT A berganti LED menyala bergantian sesuai representasi biner NIM praktikan dan rekan praktikan.1 Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Pendeklarasian internal clock 1 MHz 3 : Penggunaan library utility AVR 4 : Program utama 6 : Inisialisasi PORT A sebagai output 7 : Nilai awal output display senilai ‘11111111’ (LED menyala semua) 8 : Pengulangan terus (loop forever) 10 : Nilai PORT A ‘00110011’ 11 : Delay 500ms sebelum nilai PORT A berganti 12 : Nilai PORT A ‘11001100’ 13 : Delay 500ms sebelum nilai PORT A berganti LED menyala bergantian tetapi waktu pergantiannya terlalu cepat. Gambar 4-8 Screenshot Program Tugas I.

Berikut dibawah ini merupakan flowchart dan screenshot source code.4 Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Pendeklarasian internal clock 8 MHz 3 : Penggunaan library utility AVR 4 : Program utama 6 : Nilai awal variable i = ‘0b11111110’ 7 : Inisialisasi PORT A sebagai output 8 : Nilai awal output display = i 9 : Pengulangan terus (loop forever) 11 : Delay 120ms sebelum nilai PORT A berganti 11 : Nilai PORT A = i Halaman 5 .3 F_CPU 8000000UL unsigned char i = 0xFE DDRA = 0xFF PORTA = i PORTA = i _delay_ms(120) i = (i<<1) | (i>>7) YES i == 0x7F NO PORTA = I _delay_ms(120) I = (i>>1) | (i<<7) NO i != 0xFE YES Gambar 4-10 Screenshot Program Tugas I. hasil output display sesuai dengan program yaitu LED yang menyala memutar.B.B. Tugas I. START 12 : Nilai i adalah nilai i yang bitnya digeser 1 kali ke kiri OR nilai i yang bitnya digeser 7 kali ke kanan Terjadi error saat compile karena tanpa sengaja praktikan mengetik akhiran ‘.B.3 Pada percobaan ini program dituliskan sesuai dengan yang tertulis pada modul. Berikut dibawah ini merupakan flowchart dan screenshot source code.3 Gambar 4-11 Flowchart Program Tugas I.B.c’ saat mengatur Target File dalam pembuatan MakeFile. Setelah diperbaiki. START pengaturan fuse untuk clock F_CPU 8000000UL unsigned char i = 0xFE DDRA = 0xFF PORTA = i PORTA = i _delay_ms(120) i = (i<<1) | (i>>7) pengaturan fuse untuk clock Gambar 4-9 Flowchart Program Tugas I.B.Tugas I.4 Pada percobaan ini program dimodifikasi agar menghasilkan output berupa LED pingpong.

4 Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Pendeklarasian internal clock 8 MHz 3 : Penggunaan library utility AVR 4 : Program utama 6 : Nilai awal variable i = ‘0b11111110’ 7 : Inisialisasi PORT A sebagai output 8 : Nilai awal output display = i 9 : Pengulangan terus (loop forever) 12 : Nilai PORT A = i 13 : Delay 120ms sebelum nilai PORT A berganti 14 : Nilai i adalah nilai i yang bitnya digeser 1 kali ke kiri OR nilai i yang bitnya digeser 7 kali ke kanan 16 : Jika i = 0x7F. START unsigned char i DDRA = 0xFF DDRD = 0x00 SFIOR = 0<<PUD PORTA = 0xFF i = PIND PORTA = i Gambar 4-13 Flowchart Program Tugas I.C. 4.1 Gambar 4-12 Screenshot Program Tugas I.C.1 Pada percobaan ini program ditulis ulang sesuai dengan yang ada pada modul. Program dimodifikasi Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Program utama 4 : Pendeklarasian variabel i 5 : Inisialisasi PORT A sebagai output 6 : Inisialisasi PORT D sebagai input 7 : Aktivasi Pull-up (Pull-Up Disable ‘off’) 8 : Nilai awal PORT A = ‘0b11111111’ 9 : Pengulangan terus (loop forever) 12 : Nilai PORT A = i 11 : Nilai i = PIND Gambar 4-14 Screenshot Program Tugas I. maka program masuk ke bagian ini 18 : Terjadi pengulangan terus di bagian ini jika nilai i bukan 0xFE 20 : Nilai PORT A = i 21 : Delay 120ms sebelum nilai PORT A berganti 22 : Nilai i adalah nilai i yang bitnya digeser 1 kali ke kanan OR nilai i yang bitnya digeser 7 kali ke kiri LED tidak menyala bolak balik seperti pingpong tetapi tidak teratur dan hanya putaran pertama yang berhasil menyala pingpong. Berikut dibawah ini merupakan flowchart dan screenshot source code.B.kembali dengan mengganti fungsi while dengan if.C.3 PORT A Sebagai Output dan PORT D Sebagai Input Tugas I.1 Halaman 6 . LED dapat menyala bolak-balik seperti pingpong.

menghasilkan output seperti Tugas I. Berikut dibawah ini merupakan flowchart dan screenshot source code.4 jika input switch berupa biner NIM praktikan dan menghasilkan output seperti Tugas I.B. START unsigned char j DDRA = 0xFF DDRD = 0x00 SFIOR = 0<<PUD PORTA = 0xFF j = PIND PIND == 0b01100011 YES PORTA = 0b01100011 _delay_ms(500) PORTA = 0b01110001 _delay_ms(500) NO unsigned char i = 0xFE PORTA = i PIND == 0b01110001 YES NO PORTA = i _delay_ms(120) i = (i<<1) | (i>>7) PORTA = (1<<PA3) | (1<< PA2) NO i == 0x7F YES PORTA = I _delay_ms(120) I = (i>>1) | (i<<7) YES i != 0xFE NO Gambar 4-15 Flowchart Program Tugas I. Walaupun switch yang dinyalakan lebih dari satu. LED tetap dapat menyala.2 Pada percobaan ini program dimodifikasi agar menghasilkan output seperti Tugas I.C.C.2 Gambar 4-16 Screenshot Program Tugas I. Tugas I.B.2 jika input switch selain yang diatas.C.2 jika input switch berupa biner NIM rekan praktikan.2 Penjelasan source code : 1 : Penggunaan library input output AVR 2 : Penggunaan library utility AVR 3 : Program utama 5 : Inisialisasi variabel j 7 : Inisialisasi PORT D sebagai input Halaman 7 6 : Inisialisasi PORT A sebagai output .LED menyala sesuai dengan switch input yang dinyalakan.A.

2 jika switch input merupakan biner NIM 99. [1] [2] Daftar Pustaka Mervin T.com Praktikan berhasil membaca dan memahami datasheet ATMega 8535 bagian I/O Ports. output LED berjalan dengan yang diharapkan.B.4 jika switch input merupakan biner NIM 113 dan menghasilkan output display LED yang menyala sesuai dengan Tugas I.B. memahami fasilitas delay pada AVR GCC dan memahami pengaturan fuse jika mikroprosesor menggunakan sumber clock eksternal.3 menghasilkan output display LED yang menyala bergantian secara sirkular dengan penggunaan delay 120ms Halaman 8 .B.B.atmel. Bandung.C.A. STEI ITB.2 : Program pada Tugas I.4 menghasilkan output display LED yang menyala bergantian seperti pingpong dengan penggunaan delay 120ms Pada percobaan PORT A Sebagai Output dan PORT D Sebagai Input. 2012 Datasheet ATMega 8535.B.A.A.1 menghasilkan output display LED yang menyala sesuai switch input yang aktif  Tugas I.4 22 : Jika PIND = 0b01110001 (NIM 113) 47 : Jika PIND selain dari NIM 99 dan 113 49 : Program pada Tugas I. menghasilkan output display LED yang menyala sesuai dengan Tugas I. 6. diperoleh kesimpulan :  Tugas I.8 : Disable PUD pada SFIOR 9 : Nilai awal output display senilai ‘11111111’ (LED menyala semua) 10 : Pengulangan terus (loop forever) 12 : Nilai variabel j = nilai PIND 14 : Jika PIND = 0b01100011 (NIM 99) 16-19 24-39 : Program pada Tugas I.2 menghasilkan output dislay bergantian antara 0b01100011 (NIM 99) dan 0b01110001 (NIM 113) dengan delay 500ms  Tugas I. 5..2 menghasilkan output display sesuai dengan 0b00001100 (nomor kelompok praktikan : C atau 0x0C) Pada percobaan Fasilitas Delay Pada AVR GCC. output akan tetap pada keadaan NIM tersebut walaupun input telah berubah.2 menghasilkan output display LED yang menyala sesuai dengan Tugas I.2 jika switch input bukan biner NIM 99 dan NIM 113.B. diperoleh kesimpulan :  Tugas I. Kesimpulan  Tugas I. Praktikum Sistem Mikroprosesor.A. Setelah memodifikasi program dengan menghilangkan while pada output dari input NIM 99 dan mengganti syarat while pada NIM 113.B.2 Output LED sesuai dengan yang diinginkan tetapi jika input sesuai salah satu NIM. diperoleh kesimpulan :  Tugas I.B. www. Pada percobaan PORT A Sebagai Output.1 menghasilkan output display bergantian antara 0b00110011 dan 0b11001100 dengan delay 500ms  Tugas I. Hutabarat dkk.1 menghasilkan output display sesuai dengan 0b01010101  Tugas I.C.