oleh button# Case Study Sesi Siang — Modul 2 > Pembuat soal: **AX** ```text Nama : Ahmad Malik Prasetyo NPM : 2406416270 Anggota Kelompok : 1. David Alexander 2. Sabbia Meilandri 3. ``` --- ## Soal Mosheva, seorang mantan prajurit IDF yang merasa dikhianati, telah mengubah dirinya menjadi aktivis anti-Israel yang radikal. Dengan rasa dendam yang membara, dia memutuskan untuk menciptakan alat untuk melawan IDF, tapi ada satu masalah — dia tidak paham teknologi AVR. Berganti jadi Musyaffa, ia memandang sekeliling ruangannya, mencari solusi. Lalu, dia melihat laptopnya dan memutuskan untuk meminta bantuan kepada seorang ahli. > *"Hai, aku butuh bantuanmu,"* tulisnya di forum online. *"Aku ingin membuat sistem sederhana yang bisa mengontrol lampu merah dan hijau dengan tombol. Aku ingin mengirim sinyal darurat kepada sekutu. Ada yang bisa membantu?"* 🔴 **Apakah Anda bisa membantu Musyaffa menciptakan sistem yang dia inginkan?** --- ## Penjelasan Kriteria 1. Kode akan memiliki 1 tombol input yang terhubung ke pin PD3 2. Akan ada 2 LED dimana akan terhubung ke PD4 (anggap merah) dan PD5 (anggap hijau) masing - masing 3. Button akan bersifat pull up 4. Ketika tombol ditekan maka Lampu Merah (PD4) menyala, ketika Tidak ditekan maka lampu Hijau (PD5) yang akan menyala ## Code ```avrasm #define __SFR_OFFSET 0x00 #include "avr/io.h" .global main main: SBI DDRD, 5 SBI DDRD, 4 CBI DDRD, 3 SBI PORTD, 3 SBI PORTD, 5 CBI PORTD, 4 CLR R20 loop: SBIC PIND, 3 RJMP turn_off turn_on: SBI PORTD, 5 CBI PORTD, 4 LDI R20, 1 RJMP loop turn_off: CBI PORTD, 5 SBI PORTD, 4 CLR R20 RJMP loop d_outer: LDI R24, lo8(10000) LDI R25, hi8(10000) d_inner: SBIW R24, 1 BRNE d_inner DEC R18 BRNE d_outer RET ``` ## Foto Rangkaian ![notpressed](https://i.ibb.co.com/rRYJLjWy/Not-Pressed.jpg) ![image](https://i.ibb.co.com/S4nDCC09/Pressed.jpg) --- ## Soal Teori ### Teori **1.** Jelaskan apa yang dimaksud dengan konfigurasi *pull-up* pada pin input ATmega328P. Bagaimana cara mengaktifkan internal pull-up resistor melalui register, dan apa pengaruhnya terhadap pembacaan nilai logika pada pin tersebut saat tombol ditekan maupun tidak ditekan? Jawaban: Konfigurasi pull-up pada pin input ATmega328P cukup dapat dilakukan dengan memberikan sinyal high kepada port yang diinginkan. Pin input button akan dibaca sebagai pull-up registor dengan line `SBI PORTD, 3` dimana akan dinyalakan fungsi pull-up oleh button. --- ### Analisis **2.** Pada sistem Musyaffa, tombol dan LED menggunakan pin pada PORTD. Jelaskan bagaimana kode Assembly yang Anda buat mengonfigurasi pin PD3 sebagai **input** dengan pull-up dan pin PD4 serta PD5 sebagai **output**. Sebutkan register apa saja yang digunakan serta nilai yang di-set pada masing-masing register. Jawaban: Untuk menentukan pin PD3 sebagai input, kita dapat meng-initialize PD# dengan `CBI DDRD, 3` dimana kode ini akan menyatakan bahwa arah ke pin PD 3 adalah sebuah input (CBI). Lalu untuk pin PD4 dan PD5 cukup disamakan dengan starting init `SBI DDRD, 4/5` untuk dinyatakan sebagai output. Sebelum memulai, kita mengawali dengan memberikan input high kepada PD5 dengan `SBI PORTD, 5` dan low kepada PD4 `CBI PORTD, 4`. --- **3.** Pada sistem Musyaffa, ketika tombol ditekan, lampu merah menyala dan lampu hijau mati. Jelaskan bagaimana program Assembly membedakan kondisi tombol ditekan dan tidak ditekan menggunakan instruksi seperti `SBIC`/`SBIS`, serta bagaimana instruksi `SBI`, `CBI`, dan `RJMP` digunakan untuk mengontrol kedua LED secara bergantian. Jawaban: Dengan bagian `loop`, terdapat register `SBIC` dimana akan melompat/skip arahan berikut ketika button/pin yang terhubung dipencet/mengirim input high. Setelah loop ini, program akan lanjut ke `turn_on` dimana lampu merah akan dimatikan `CBI PORTD, 4` dan lampu hijau akan dinyalakan `SBI PORTD, 5`. Setelah itu akan di lempar kembali ke `loop`. Jika button di press, maka register `SBIC` akan melanjutkan kode ke bagian `turn_off` dimana kebalikan yang terjadi. Ini akan terus kembali ke `loop` hingga tidak ada power source.