Anda di halaman 1dari 17

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

PRAKTIKUM SISTEM MIKROKONTROLER

SEMESTER : GANJIL TAHUN : 2021/2022

BAB I

JUDUL BAB : BASIC INPUT/OUTPUT


NAMA : JASON WIJAYA
NIM : 205150307111029
TANGGAL PELAKSANAAN : 7 SEPTEMBER 2021
ASISTEN : - MUHAMMAD FATHAM MUBINA A.
- RANDY CHRISTIAN SAPUTRA

KOORDINATOR ASISTEN : RANDY CHRISTIAN SAPUTRA


DOSEN PENGAMPU : AGUNG SETIA BUDI, S.T., M.T., Ph.D.

Pengesahan
Tanggal:
Asisten
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

BAB : BASIC INPUT/OUTPUT


NAMA : JASON WIJAYA
NIM : 205150307111029
TANGGAL : 07/09/2021
ASISTEN : - MUHAMMAD FATHAM MUBINA A
- RANDY CHRISTIAN SAPUTRA
TUGAS / LAPORAN

Percobaan 1.1: Port B Sebagai Output


A. Source Code
Percobaan11.ino
1 #include <avr/io.h>
2 #include <util/delay.h>
3 #define F_CPU 1000000UL
4
5 int main(void)
6 {
7 DDRB = 0xFF;
8 while (1)
9 {
10 PORTB = 0xFF;
11 _delay_ms(5000);
12 PORTB = 0x00;
13 _delay_ms(5000);
14 }
}

B. Penjelasan Kode
Percobaan11.ino
1 Memanggil library avr untuk input output.
2 Memanggil library delay
3 Menentukan besar CPU sebesar 1000000UL
4
5 Fungsi main sebagai fungsi utama program
6
7 Set data register port B sebesar 0xFF(111) sebagai output
8 Menggunakan fungsi perulangan while
9
10 Port B bernilai 0xFF(111) atau diaktifkan
11 Delay selama 5000ms
12 Port B bernilai 0x00(000) atau dinonaktifkan
13 Delay selama 5000ms
14

C. Screenshot Hasil Simulasi


Nyala LED setelah program dijalankan
D. Analisis 1.1
- Ceritakan bagaimana nyala LED setelah setelah simulasi dijalankan!
Jawab: LED menyala secara bersamaan setelah simulasi dijalankan. Namun
semua LED tidak menyala secara terus menerus, melainkan menyala dalam
waktu tertentu.

- Jelaskan kegunaan tiap-tiap baris source code!.


Jawab:
Baris 1 : Memanggil library avr untuk input output.
Baris 2 : Memanggil library delay
Baris 3 : Menentukan besar CPU sebesar 1000000UL
Baris 5 : Fungsi main sebagai fungsi utama program
Baris 7 : Memberikan set data register port B sebesar 0xFF(111) sebagai output
Baris 8 : Menggunakan fungsi perulangan while
Baris 10 : Jika port B bernilai 0xFF(111) atau diaktifkan
Baris 11 : Memberikan delay selama 5000ms
Baris 12 : Jika port B bernilai 0x00(000) atau dinonaktifkan
Baris 13 : Memberikan delay selama 5000ms

Percobaan 1.2: Port A Sebagai Input Dan Port B Sebagai Output


A. Source Code
Percobaan12.ino
1 #include <avr/io.h>
2
3 int main(void)
4 {
5 DDRA = 0x00;
6 PORTA = 0xFF;
7 DDRB = 0xFF;
8
9 while (1)
10 {
11 if (PINA == 0b11111110)
12 {
13 PORTB = 0b00000000;
14 }
15 else if (PINA == 0b11111101)
16 {
17 PORTB = 0b11111111;
18 }
19 }
20 }

B. Penjelasan Kode
Percobaan12.ino
1 Memanggil library avr untuk input output
2
3 Fungsi main sebagai fungsi utama program
4
5 Set data register port A sebesar 0x00(000)
6 Port A sebagai input
7 Set data register port B sebesar 0xFF(111)
8
9 Fungsi perulangan while
10
11 Jika PIN A0 aktif
12
13 Maka semua port B nonaktif
14
15 Jika PIN A1 aktif
16
17 Maka semua port B aktif

C. Screenshot Hasil Simulasi

- Ketika Switch A0 ditekan maka output LED pada PORTB akan mati
- Ketika Switch A1 ditekan maka output LED pada PORTB akan nyala

D. Analisis 1.2
- Ceritakan bagaimana nyala LED setelah simulasi dijalankan!
Jawab: Ketika switch pertama ditekan, LED tidak menyala. Ketika switch
kedua ditekan, LED menyala terus menerus secara bersamaan.

- Tekan switch yang terhubung ke PIN A.0 dan ceritakan bagaimana nyala LED
pada saat switch ditekan.
Jawab: LED tidak menyala saat switch yang terhubung ke PIN A.O ditekan
- Tekan switch yang terhubung ke PIN A.1 dan ceritakan bagaimana nyala LED
padasaat switch ditekan.
Jawab: LED menyala terus menerus secara bersamaan ketika switch yang
terhubung ke PIN A.1 ditekan.

- Jelaskan kegunaan tiap-tiap baris source code!


Jawab:
Baris 1 : Memanggil library avr untuk input output.
Baris 3 : Fungsi main sebagai fungsi utama program
Baris 5 : Set data register port A sebesar 0x00(000)
Baris 6 : Port A sebagai input
Baris 7 : Set data register port B sebesar 0xFF(111)
Baris 9 : Menggunakan fungsi perulangan while
Baris 11 : Jika PIN A0 aktif
Baris 13 : Maka semua port B nonaktif
Baris 15 : Jika PIN A1 aktif
Baris 17 : Maka semua port B aktif

Kesimpulan
Percobaan 1.1 – Pada percobaan tersebut dapat disimpulkan bahwa ketika simulasi
dijalankan, semua LED yang ada akan menyala secara bersamaan dengan tempo
waktu 5000ms. Hal tersebut bisa terjadi dikarenakan kita memberikan delay selama
5000ms diantara saat LED nonaktif dan LED aktif.

Percobaan 1.2 – Pada percobaan tersebut dapat disimpulkan bahwa ketika simulasi
dijalankan, semua LED dalam keadaan nonaktif. Saat kita menekan switch yang
terhubung pada PIN A.0, LED tetap dalam keadaan nonaktif. Namun saat kita
menekan switch yang terhubung pada PIN A.1, semua LED akan menyala secara
bersamaan. Hal tersebut bisa terjadi dikarenakan kita memberikan perintah pada agar
ketika PIN A.0 aktif, maka semua PORT B akan nonaktif. Sebaliknya, ketika kita
mengaktifkan PIN A.1, maka semua PORT B akan aktif.
LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA

BAB : BASIC INPUT/OUTPUT


NAMA : JASON WIJAYA
NIM : 205150307111029
TANGGAL : 07/09/2021
ASISTEN : - MUHAMMAD FATHAM MUBINA A
- RANDY CHRISTIAN SAPUTRA

TUGAS / LAPORAN

1. Register apakah yang digunakan untuk mengatur PORT sebagai input atau
output?
Jawab: Register yang digunakan untuk mengatur PORT sebagai input atau
output adalah DDRA

2. Jika kita ingin menggunakan PORTD sebagai input dengan pull-up internal,
bagaimanakah sintax yang harus digunakan?
Jawab: DDRD = 0x00 sebagai input dan PORTD = 0xFF sebagai pull-up
internal

3. Buatlah program nyala LED yang berjalan dari bit 0 ke bit 7 dan sebaliknya.
Jawab:

Source Code
Tugas3.c
1 #include <avr/io.h>
2 #include <util/delay.h>
3 #define F_CPU 1000000UL
4
5 int main(void)
6 {
7 DDRB = 0xFF;
8 while (1)
9 {
10 PORTB = 0b00000001;
11 _delay_ms(5000);
12 PORTB = 0b00000010;
13 _delay_ms(5000);
14 PORTB = 0b00000100;
15 _delay_ms(5000);
16 PORTB = 0b00001000;
17 _delay_ms(5000);
18 PORTB = 0b00010000;
19 _delay_ms(5000);
20 PORTB = 0b00100000;
21 _delay_ms(5000);
22 PORTB = 0b01000000;
23 _delay_ms(5000);
24 PORTB = 0b10000000;
25 _delay_ms(5000);
26 PORTB = 0b01000000;
27 _delay_ms(5000);
28 PORTB = 0b00100000;
29 _delay_ms(5000);
30 PORTB = 0b00010000;
31 _delay_ms(5000);
32 PORTB = 0b00001000;
33 _delay_ms(5000);
34 PORTB = 0b00000100;
35 _delay_ms(5000);
36 PORTB = 0b00000010;
37 _delay_ms(5000);
38 PORTB = 0b00000001;
39 _delay_ms(5000);
40 }
41 }

Penjelasan Kode
Tugas3.c
1 Memanggil library avr untuk input output.
2 Memanggil library delay
3 Menentukan besar CPU sebesar 1000000UL
4
5 Fungsi main sebagai fungsi utama program
6
7 Set data register port B sebesar 0xFF(111) sebagai output
8 Menggunakan fungsi perulangan while
9
10 Mulai dari baris 10 sampai baris 39, Mengaktifkan PORT B bit 0 sampai PORT B
11 bit 7 lalu dibalik mulai dari PORT B bit 7 sampai PORT B bit 0 dengan delay
12 sebesar 5000ms
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Screenshot Hasil Simulasi
• PIN B0

• PIN B1

• PIN B2
• PIN B3

• PIN B4

• PIN B5
• PIN B6

• PIN B7

• PIN B6
• PIN B5

• PIN B4

• PIN B3
• PIN B2

• PIN B1

• PIN B0
Analisis Kode
PORTB didefinisikan sebagai output lalu dalam fungsi perulangan while
program akan menyalakan LED secara bergantian dengan delay 5000ms dalam satu
siklus dari PIN B0 sampai PIN B7, kemudian kembali ke PIN B7 sampai ke PIN B0.
Setelah itu memulai siklus perulangan kedua dan seterusnya.

4. Buatlah program dan simulasi dengan requirement sebagai berikut:


a. PORTB sebagai output dan terhubung ke LED
b. PINA.0 sebagai input dan terhubung dengan tombol aktif high
c. PINA.1 sebagai input dan terhubung dengan tombol aktif low
d. Jika tombol pada PINA.0 aktif maka LED pada PB0-PB3 menyala, jika tidak
aktif maka LED pada PB0-PB3 mati. Kondisi ini tidak dipengaruhi kondisi
tombol atau input pada PIN lainnya.
e. Jika tombol pada PINA.1 aktif maka LED pada PB4-PB7 menyala, jika tidak
aktif maka LED pada PB4-PB7 mati. Kondisi ini tidak dipengaruhi kondisi
tombol atau input pada PIN lainnya.
Jawab:

Source Code
Tugas4.c
1 #include <avr/io.h>
2 int main(void)
3 {
4 DDRA = 0x00;
5 PORTA = 0xFF;
6 DDRB = 0xFF;
7 PORTB = 0xFF;
8 while (1)
9 {
10 if(PINA == 0xFF)
11 PORTB = 0x0F;
12 else if (PINA == 0xFC)
13 PORTB =0xF0;
14 else
15 PORTB = 0x00;
16 }
}

Penjelasan Kode
Tugas4.c
1 Memanggil library avr untuk input output.
2 Fungsi main sebagai fungsi utama program.
3
4 Deklarasi input pada PORTA dengan nilai 0x00(000).
5 Deklarasi nilai awal PORTA = 1 atau 0xFF(111).
6 Deklarasi output pada PORTB dengan nilai 0XFF(111).
7 Deklarasi nilai awal PORTB = 1 atau 0xFF(111).
8 Menggunakan fungsi perulangan while.
9
10 Jika PINA=0xFF
11 LED menyala dari PIN B0-B3.
12 Jika PINA=0xFC
13 LED menyala dari PIN B4-B7.
14 Jika tidak memenuhi keduanya
15 LED mati
16

Screenshot Hasil Simulasi

• PINA0 aktif sebagai HIGH, PIN B0-B3 menyala


• PINA1 aktif sebagai LOW, PIN B4-B7 menyala

Analisis Kode
Di dalam kode yang dibuat, kita memberikan set tombol aktif high pada
PIN A.0 dan set tombol aktif low pada PIN A.1. Ketika kita mengaktifkan switch
yang terhubung pada PIN A.0, maka LED yang terhubung dengan PIN B.0 sampai
dengan PIN B.3 akan aktif/menyala dan LED yang terhubung dengan PIN B.4
sampai PIN B.7 akan nonaktif/mati. Namun sebaliknya, ketika kita mengaktifkan
switch yang terhubung pada PIN A.1, maka LED yang terhubung dengan PIN B.4
sampai B.7 akan aktif/menyala dan LED yang terhubung dengan PIN B.0 sampai
PIN B.3 akan nonaktif/mati.

Anda mungkin juga menyukai