MODUL 01 MODUL I/O DASAR Tsaqif Alfatan Nugraha (13214036) Asisten: Adinda Rana T. Tanggal Percobaan: 07/02/2017 EL3124-Praktikum Sistem Mikroprosessor
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak Praktikum modul 1 praktikum sistem mikroprosesor akan membahas lebih dalam mengenai komponen input output dasar pada board ATMega 8535. Praktikan akan mempelajari bagaimana cara port untuk dijadikan sebagai input ataupun output. Aplikasi input output akan dibuat dengan menggunakan software WinAVR dalam bahasa C. Selain itu praktikum juga bertujuan untuk memahami pengesetan Ude yang berkaitan dengan penggunakan besar dan jenis kristal.
2. 2.1
STUDI PUSTAKA SKEMATIK I/O
Kata kunci: ATMega 8535, Input, Output, Fuse, WinAVR 1.
PENDAHULUAN
Praktikum terdiri dari beberapa sub percobaan. Percobaan perta ma berkaitan dengan penggunaan Port A seba gai output. Progra m akan dibuat sedemikian rupa sehingga menghasilkan konfigurasi output port A yang telah ditentukan. Kemudian port A akan dihubungkan ke LED sebagai representasi biner dari port A. Kedua, pra ktikan akan menga mati penggunaan delay pada AVR gcc. Delay bertujuan untuk mengatur seberapa cepat lampu LED hidup dan mati. Sama seperti percobaan sebelumnya, port A akan digunakan sebagai output. Nilai biner port A akan berubah dari kondisi satu ke kondisi dua dalam selang delay yang telah ditentukan. Kemudian representasi biner bisa dilihat pada nyala dan matinya LED. Ketiga, praktikan akan mulai menggunakan sebuah port s ebagai input. Port D a kan digunakan sebagai input di mana port D akan dihubungkan langsung dengan toggle/switch. Kon figurasi dari toggle yang nyala atau mati akan merepresentasikan biner dari port D. Port A akan juga digunakan kembali sebagai output dan dihubungkan ke LED untuk menga mati keluaran progra m. Program akan diatur sedemikian rupa sehingga untuk konfigurasi input tertentu akan menghasilkan konfigurasi output yang sesuai dengan apa yang telah ditentukan.
Semua register dan referensi bit pada bagian ini ditulis dalam ben tuk umum. Huruf ”x” merepresentasikan nomor untuk port dan huruf ”n” merepresentasikan nomor bit n ya. Bagaimanapun, ketika menggunakan register atau bit yang ditetapkan di program, maka bentuk tepatnya harus digunakan. Sebagai contoh, PORTB3 untuk n omor 3 di Port B, ditulis secara general sebagai PORTxn. I/O Registers dan lokasi bit secara fisik terdaftar di ”Register Description for I/O-Ports” di halaman 66. Tiga lokasi alamat memori I/O dialokasikan untuk tiap port, satu untuk tiap Data Register – PORTx, Data Direction Register – DDRx, dan Port Input Pins – PINx. I/O Port Input Pins adalah read only, sedangkan Data Register dan Data Direction Register adalah read/write. Sebagai tambahan, bit Pull-up Disable – PUD pada SFIOR menonaktifkan fungsi pull-up untuk semua pin di semua port saat diaktifkan.
2.2
KONFIGURASI PIN PORT
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
1
2.3
PUD PADA SFIOR
3.2
Buat program seperti yang tertera di modul. Atur target makefile sesuai nama file percobaan
Rekomendasi untuk inisialisasi pada pin input Jika ada pin yang tidak terpakai, direkomendasikan agar tiap pin ini terdefinisikan. Walaupun kebanyakan input digital dinonaktifkan dalam mode deep sleep seperti yang dideskripsikan diatas, input yang menga mbang harus dihindari untuk men gurangi konsumsi arus pada semua mode lain di mana input digital diaktifkan (Reset, Active mode, and Idle mode). Metode paling sederhana untuk mendefinisikan suatu pin yang tidak digunakan adalah untuk mengaktifkan pull-up internal pada kasus ini, pull-up akan dinonaktifkan saat reset. Jika konsumsi daya rendah ketika reset itu penting, maka disarankan untuk menggunakan pull-up atau pull-down eksternal. Menghubun gkan pinpin yang tidak digunakan ke Vcc atau GND langsung tidak disarankan karena dapat mengakibatkan kelebihan arus jika pin secara tidak sengaja dikonfigurasikan sebagai output.
2.4
3. 3.1
DESKRIPSI REGISTER (UNTUK PORT A)
METODOLOGI L ANGKAH UMUM PRAKTIKUM
Peng-install-an WinAVR , Driver give IO, dan Driver USBasp
Lakukan pengesetan fuse sesuai pengesetan yang ada di modul. Hubungkan port input ke toggle port ouptut ke LED. Hubungkan board ke komputer
Membuat New Project pada WinAVR dan Add program untuk masingmasing percobaan
Membuat Makefile dengan pengesetan : MCU :ATMega8535 F_CPU : 7372800 Hz AVRDUDE Programmer : USBasp Target : disesuaikan untuk tiap percobaan
PERCOBAAN 1.A PORT A SEBAGAI OUTPUT Jalankan program dan amati keluaran pada LED. Analisa kode program dan catat hasil pada BCL
Ubah kode program sehingga keluaran LED sesuai dengan representasi biner dari kelompok praktikan.
3.3
PERCOBAAN 1.B FASILITAS DELAY PADA AVR GCC
Buat program seperti yang tertera di modul. Atur target makefile sesuai nama file percobaan
Untuk tugas 1.B.3 buat kembari program seperti yang tertera di modul. Jalankan program dan amati keluaran pada LED. Analisa kode program dan catat hasil pada BCL
Jalankan program dan amati keluaran pada LED. Analisa kode program dan catat hasil pada BCL
Modifikasi kode program sehingga keluaran LED secara bergantian sesuai dengan representasi biner dari tiga angka terakhir. Catat hasil pada BCL
Modifikasi kode program 1.B.3 sehingga keluaran LED nyala dari kiri ke kanan kemudian kembali lagi ke kiri.Catat hasil keluaran pada BCL
3.4
PERCOBAAN 1.C PORT A SEBAGAI OUTPUT DAN PORT D SEBAGAI INPUT Buat program seperti yang tertera di modul. Atur target makefile sesuai nama file percobaan
Jalankan program dan amati keluaran pada LED. Analisa kode program dan catat hasil pada BCL
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
2
semua bit port A secara langsung. Misalnya sebagai berikut. Modifikasi kode program sehingga kondisi berikut terpenuhi : 1. Jika input sama dengan representasi biner tiga angka NIM Anda, maka kondisi LED sama seperti tugas 1.B.2 2. Jika input sama dengan representasi biner tiga angka NIM terakhir teman sekelompok, maka kondisi les seperti tugas 1.B.A 3. Jika input tidak sama dengan kedua representasi di atas, maka kondisi les seperti tugas 1.A.2 Catat hasil keluaran LED pada BCL.
4.
PORTA = 0b01010101 Pengesetan cara ini menunjukkan hal serupa dengan pengesetan sebelumnya di mana nilai bit ke-6, 4, 2, dan bit ke-0 dari port A bernilai satu sementara bit lainnya bernilai nol. Selanjutnya, setelah terhubung dengan board ATMega 8535 maka akan dihasilkan konfigurasi output pada LED sebagai berikut. LED
HASIL DAN ANALISIS
4.1
7
6
5
4
3
2
1
0
Kotak hitam menunjukkan LED mati dan kotak merah menunjukkan LED nyala.
TUGAS 1.A PORT A SEBGAI OUTPUT
Tugas 1.A.1 Tugas 1.A.1 akan menggunakan Port A sebagai output dari progra m yang sudah dibuat pada WinAVR. Flow chart dari program dapat dilihat sebagai berikut.
Hasil konfigurasi LED sudah sesuai dengan perintah pada progra m di mana LED yang hidup hanya LED nomor ke 6, 4, 2, dan nol.
Tugas 1.A.2 Flow chart program dapat dilihat sebagai berikut.
START
START
DDRA = 0xFF
DDRA = 0xFF
PORTA = (1<
PORTA= (1<
END
END
Port A akan di set sebagai input. Oleh karena itu kita harus men gatur register DDR pada port tersebut. Nilai DDRA harus diisi nilai untuk seluruh bitnya, artinya diisi 0xFF. Pengisian nilai ini pada register DDR sebuah port maka akan menjadikan port tersebut sebagai input. Namun, jika nilai register DDR diset nol atau 0x00 maka akan menjadikan port tersebut sebagai input. Nilai representasi bin er dari port A akan merepresentasikan keluaran pada LED. Oleh karena itu kita harus terlebih dahulu mengeset nilai masing-masing bit pada port A. Pengesetan bit bisa dilakukan dengan operasi bitwise OR. Jika port A diset sebagai berikut PORTA = (1<
Ini menunjukkan bahwa untuk bit ke -6, 4, 2, dan bit ke-0 dari port A bernilai satu semen tara bit lainnya bernilai nol. Pengesetan bit juga dapat dilakukan dengan cara memberi nilai untuk
Sama seperti sebelumnya, untuk men geset port A sebagai output maka register DDR port A akan diset bernilai satu atau 0xFF. Selanjutnya port A akan diset bernilai 0b00000110. Representasi biner ini menunjukkan angka 6 di mana merupakan nomor kelompok praktikan. Selanjutnya akan ditampilkan output sebagai berikut. LED
7
6
5
4
3
2
1
0
Keluaran LED sudah menunjukkan hal yang sesuai dengan apa yang diperintah pada progra m di mana nilai bit yang ON hanya bit ke-2 dan bit pertama LED.
4.2
TUGAS 1.B FASILITAS DELAY PADA AVR GCC
Pada percobaan ini, seluruh kode progra m memanfaatkan fasilitas delay yang ada pada ATMega8535. Pada dasarnya, di dalam
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
3
ATMega8535 sudah terdapat clock internal dengan frekuensi clock 1 MHz. Namun, pada sistem minimum yang digunakan, clock yang ingin digunakan adalah clock eksternal dengan frekuensi clock 7572800 Hz. Untuk mengubah clock yang digunakan menjadi clock eksternal, maka perlu dilakukan pengubahan pada nilai-nlai bit dari fuse ATMega8535. Secara default, ketika clock yang digunakan adalah clock internal, maka nilai high fuse dan low fuse adalah 0b11011001 (0xD9) dan 0b11100001 (0xE1). Untuk mengubah clock menjadi clock eksternal, maka nilai high fuse dan low fuse perlu diubah menjadi 0xD9 dan 0xEF. Pengubahan ini dilakukan men ggunakan avrdude melalui command prompt. Setelah nilai fuse diatur demikian, maka clock yang digunakan selama proses penggunakan sistem minimum adalah clock eksternal. Dengan demikian, semua kode progra m pada tugas-tugas di bawah ini akan selalu mendefinisikan clock sebesar 7372800 Hz, bukan lagi 1 MHz.
progra m akan mengalami delay selama 5s (5000ms) di mana lampu LED a kan mati pada saat ini. Setelah delay, port A akan diset bernilai 0b11001100. Ini akan membuat lampu LED ke 2,3,6,7 menyala. Setelah itu progra m akan delta kembali selama 5 detik dan melajutkan langkah looping seperti sebelumnya. Jadi, progra m ini akan membuat lampu LED akan menyala bergantian dari kon figurasi satu (0b00110011) ke konfigurasi dua (0b11001100) dan seterusnya sampai tak hingga looping. Selanjutnya, output yang ditampilkan LED akan nampak seperti berikut. LED 7 6 5 4 3 2 1 0 LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
Keluaran ini akan berlangsung terus menerus. Output yang dikeluarkan sudah sesuai dengan apa yang diminta pada program
Tugas 1.B.1
Tugas 1.B.2
Flowchart program dapat dilihat sebagai berikut.
Flowchart program dapat dilihat sebagai berikut. START
START
DDRA = 0xFF
DDRA = 0xFF
1
1
PORTA = 0b00100100
PORTA = 0b00110011
END
END Delay_ms(5000)
Delay_ms(5000)
PORTA = 0b00100111
PORTA = 0b11001100
Delay_ms(5000)
Delay_ms(5000)
Sama seperti sebelumnya, register DDR akan diset bernilai 0xFF sehingga port A bisa digunakan sebagai output. Kemudian program akan masuk ke looping dengan while-loop. Loop akan berlangsung selama tak hingga kali karena variabel syarat looping selalu bernilai satu. Loop akan berguna un tuk mengulangi tiap siklus nyala matinya LED. Selanjutnya, pada awal loop, port A akan bernilai 0b00110011. Ini akan membuat lampu LED ke 0,1,4,5 menyala. Setelah itu
Flowchart progra m tugas 1.B.2 menyerupai dengan tugas 1.B.1 hanya saja port A akan diset bergantian bernilai 0b00100100 dan 0b00100111. Kedua representasi biner ini bernilai 036 10 dan 03910 yang mana merupakan tiga angka terakhir dari NIM praktikan. Selanjutnya, output yang dita mpilkan LED akan nampak seperti berikut.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
4
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
Jika operasi ini men galami overflow, ma ka nilai bit port A kembali ke nilai awal bernilai 0b11111110. Proses ini akan dilakukan selama looping yang tak hingga karena syarat loop selalu bernilai satu. Jadi, progra m ini bertujuan untuk menunjukkan nyala-mati LED yang memutar dari kiri ke kanan.
Keluaran ini akan berlangsung terus menerus. Output yang dikeluarkan sudah sesuai dengan apa yang diminta pada program Tugas 1.B.3 Flowchart program dapat dilihat sebagai berikut. START
DDRA = 0xFF
i = 0xFE
1
Selanjutnya, output yang ditampilkan LED akan nampak seperti berikut. LED 7 6 5 4 3 2 1 0 LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
PORTA = i END
Keluaran ini akan berlangsung terus menerus. Output yang dikeluarkan sudah sesuai dengan apa yang diminta pada program.
Delay_ms(5000)
Tugas 1.B.4
i = (i<<1)|(i>>7)
START
(Garis merah menyimbolkan alur FALSE pada proses decission sementara garis oranye menyimbolkan alur TRUE pada proses decission) Perta ma-tama jelas bahwa kita harus mengeset nilai register DDR bernilai satu agar port A dapat digunakan sebagai output. Selanjutnya kita mengeset nilai i bernilai 0xFE atau 0b11111110. Variabel i akan berguna sebagai variabel di dalam looping yang mengubah-ubah nilai biner dari port A. Pertama diset bernilai 0b11111110 agar pada mula-mula LED yang ma ti hanya LED pada bit ke nol dan yang lainnya hidup. Kemudian masuk ke dalam looping dan terlihat bahwa nilai biner port A akan sama dengan variabel i. Selanjutnya , progra m a kan mengalami delay selama 5 detik. Kemudian variabel i akan diset dengan operasi. i = (i<<1)|(i>>7)
operasi ini bertujuan untuk menggeser bit bernilai nol dari satu posisi ke kekiri posisi bit ters ebut. Misal tadinya i bernilai 0b11111110 maka setelah dilakukan operasi ini nilai bit bernilai 0b11111101.
DDRA = 0xFF
i = 0xFE
END 1
i != 0b01111111
PORTA = i
i != 0b01111111
Delay_ms(5000) i = (i<<1)|(i>>7)
PORTA = i Delay_ms(5000) i = (i>>1)|(i<<7)
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
5
Progra m ini lebih sulit daripada tugas 1.B.3 karena nyala mata lampu tidak memutar satu arah saja namun bolak-balik.Jadi pertama la mpu yang mati ialah lampu ke-0 dan menerus kekiri hingga ke-7 setelah itu tidak kembali ke-0 namun lampu mati ialah lampu ke-6 terus ke kanan hingga kembali ke lampu ke-0. Oleh karena itu pada loop besar progra m terdapat dua sub loop di mana satu untuk mengatur nyala-mati ke kiri dan nyala-mati ke kanan. Untuk yang kekiri, loop ini akan berlangsung hingga kondisi lampu ke 7 saja mati atau di dalam represen tasi biner ialah 0b011111111 maka dari itu jika syarat ini tidak terpenuhi maka progra m masuk ke loop kedua. Untuk loop pertama pengesetan nilai i sama seperti tugas 1.B.3 yakni i = (i<<1)|(i>>7) yang berguna agar mengatur nyala mati lampu ke arah kiri. Sedangkan untuk loop kedua, looping hanya dilakukan jika kondisi lampu tidak bernilai 0b11111110 dengan kata lain jika bernilai tersebut maka program akan keluar dari loop. Selanjutnya, output yang ditampilkan LED akan nampak seperti berikut. LED 7 6 5 4 3 2 1 0 LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
4.3
TUGAS 1.C PORT A SEBAGAI OUTPUT PORT D SEBAGAI INPUT
Tugas 1.C.1 Flowchart program bisa dilihat sebagai berikut. START
DDRA = 0xFF
DDRD = 0x00
SFIOR = 0 << PUD PORTA = 0xFF
1
i = PIND END PORT A = i
PORT A akan digunakan sebagai output oleh karena itu register DDRA akan di set 0xFF. Sementara, port D akan digunakan sebagai input sehingga register DDRD akan di set 0x00. Langkah berikutnya adalah men gaktifkan resistor pull up. Resistor pull up berfun gsi untuk memaksa nilai pin selalu ‘1’ atau HIGH ketika tidak ada input yang masuk. Hal ini berkaitan dengan kondisi melayang yang telah dijelaskan pada jawaban pertanyaan sebelumnya. Cara mengaktifkan resistor pull up adalah dengan memberikan instruksi SFIOR = 0<
Keluaran ini akan berlangsung terus menerus. Output yang dikeluarkan sudah sesuai dengan apa yang diminta pada program.
Pin input h endaknya selalu diberi nilai awal (initial value) meskipun pada akhirnya belum tentu setiap bit pada port input digunakan. Ketika seluruh bit diberi nilai awal, maka ia memiliki nilai yang pasti. Bila ada beberapa bit yang tidak diberi nilai awal, maka pada saat program berjalan nilainya menjadi melayang (floating). Nilai
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
6
melayang perlu dihindari un tuk menghindari adanya konsumsi daya yang berlebihan dalam setiap keadaan.
Pada tugas 1.C.2 ada tiga konfigurasi input yang akan memiliki output yang berbeda. Hal ini dapat dinyatakan sebagai berikut.
Berikut ini hasil pengamatan yang dilakukan untuk tiap konfigurasi output yang diberikan terhadap konfigurasi input yang diberikan.
. Jika input sa ma dengan representasi biner angka 36 (0b00100100) , maka kondisi LED sama seperti tugas 1.B.2 2. Jika input sama dengan representasi bin er 39 (0b00100111), maka kondisi LED seperti tugas 1.B.A 3. Jika input tidak sama dengan kedua representasi di atas, maka kondisi LED seperti tugas 1.A.2
Kondisi 1 LED
7
6
5
4
3
2
1
0
Switch
7
6
5
4
3
2
1
0
Untuk switch, biru menyimbolkan switch yang aktif s ementara putih menyimbolkan switch yang mati.
Berikut ini output yang dihasilkan untuk tiap konfigurasi input. Kondisi 1
Kondisi 2 LED
7
6
5
4
3
2
1
0
Switch
7
6
5
4
3
2
1
0
Switch
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
Output LED memiliki konfigurasi yang sudah sesuai dengan switch yang diberikan sehingga program sudah berjalan dengan benar.
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
Tugas 1.C.2
LED
7
6
5
4
3
2
1
0
Flowchart program bisa dilihat sebagai berikut.
Keluaran ini akan berlangsung terus menerus. Output yang dikeluarkan sudah sesuai dengan apa yang diminta pada program
START
Kondisi 2
DDRA = 0xFF
Switch
7
6
5
4
3
2
1
0
DDRD = 0x00 SFIOR = 0 << PUD
PORTA = 0xFF
END
1
i = PIND
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
i= 0b00100100
Tugas 1.B.2
Tugas 1.B.2
i= 0b00100100
Tugas 1.B.2
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
7
LED
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
Kondisi 3 Switch
7
6
5
4
3
2
1
0
LED
7
6
5
4
3
2
1
0
Keluaran LED sudah menunjukkan hal yang sesuai dengan apa yang diperintah pada progra m di mana nilai bit yang ON hanya bit ke-2 dan bit pertama LED.
5.
DAFTAR PUSTAKA [1]
Jackstar H. S., Panduan Penulisan Laporan, Jacks Publishing, Bandung, 2008.
[2]
Waskita Adijarto dkk. , Petujuk Praktikum Sistem Mikroprosessor, ITB, Bandung, 2016.
KESIMPULAN ATMega 8535 memiliki 4 port (A,B,C,D) yang memiliki 8 pin tiap portnya. Keempat port pada ATMega 8535 bisa digunakan sebagai input atau output. AVR GCC memiliki syntax delay untuk membantu pemrogra man yang membutuhkan fungsi waktu.
Untuk membuat port berfungsi sebagai input dengan cara mengeset DDRx nya dengan 0x00 (semua pin jadi pin input). Switch digunakan sebagai input dari user di Port D. Untuk membuat port berfungsi sebagai output dengan cara mengeset DDRx nya den gan 0xFF (semua pin jadi pin output). LED digunakan sebagai output di Port A. Pengesetan fuse dilakukan dengan AVRdude dengan mengeset frekuensi clock sesuai dengan clock eksternal
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
8
Lampiran Kode tugas I.A.1: #include
int main (void) { DDRA = 0XFF ; //inisialisasi PORTA sebagai OUTPUT PORTA = (1 << PA6) | (1 << PA4) | (1 << PA2) | (1 << PA0); // nilai OUTPUT return 0; }
Kode tugas I.A.2: #include int main (void) { DDRA = 0XFF ; //inisialisasi PORTA sebagai OUTPUT PORTA = 0b00001100; // nilai OUTPUT return 0; }
Kode tugas I.B.1: #include #define F_CPU 7372800UL #include int main (void) { DDRA = 0XFF; PORTA = 0XFF; while (1) { PORTA = 0b00110011; _delay_ms(500); PORTA = 0b11001100; _delay_ms(500); } return 0; }
Kode tugas I.B.2: #include #define F_CPU 7372800UL #include int main (void) { DDRA = 0XFF; PORTA = 0XFF; while (1) { PORTA = 0b00100100; //representasi biner menunjukkan angka 036 _delay_ms(500); PORTA = 0b00100111; //representasi biner menunjukkan angka 039 Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
9
_delay_ms(500); } return 0; }
Kode tugas I.B.3: #include #define F_CPU 7372800UL #include int main (void) { unsigned char i=0xFE; DDRA = 0xFF; PORTA = i; while (1) { PORTA = i; _delay_ms(120); i = (i<<1) | (i>>7); } return 0; }
Kode tugas I.B.4: #include #define F_CPU 7372800UL #include int main (void) { unsigned char i=0xFE; //inisialisasi nyala LED DDRA = 0xFF; //PORT A output PORTA = i; //Inisialisasi nilai PORT A while (1) { while (i != 0b01111111) //gerakan ke kiri { PORTA = i; _delay_ms(120); i = (i<<1) | (i>>7); } while (i != 0b11111110) //gerakan ke kanan { PORTA = i; _delay_ms(120); i = (i>>1) | (i<<7); } return 0; }
Kode tugas I.C.1: #include Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
1 0
int main (void) { unsigned char i; DDRA = 0xFF;//inisialisasi PORTA sebagai output DDRD = 0x00;//inisialisasi PORTD sebagai input SFIOR = 0 << PUD; // aktivasi resistor pull-up internal PORTA = 0xFF; while (1) { i=PIND; PORTA = i; } return 0; }
Kode tugas I.C.2: #include #define F_CPU 7372800UL #include int main (void) { unsigned char masukan; //variabel penampung input dari switch unsigned char i = 0XFE;//inisialisasi i DDRA = 0xFF; DDRD = 0x00; SFIOR = 0 << PUD; PORTA = 0xFF; while (1) { masukan = PIND; if (masukan == 0b00100100) //saat input nim 036 { PORTA = 0b00100100; _delay_ms(500); PORTA = 0b00100111; _delay_ms(500); } else if (masukan == 0b00100111) //saat input nim 039 { while (i != 0b01111111 && masukan == 0b01110111) { PORTA = i; _delay_ms(120); i = (i<<1) | (i>>7); } while (i != 0b11111110 && masukan == 0b01110111) { PORTA = i; _delay_ms(120); i = (i>>1) | (i<<7); } else //saat input lainnya { PORTA = 0b00001100; } } return 0; } Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
11
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
12