• Tidak ada hasil yang ditemukan

PENJELASAN RANGKAIAN HEXADECIMAL KEYPAD

N/A
N/A
Hadi Andhika

Academic year: 2024

Membagikan "PENJELASAN RANGKAIAN HEXADECIMAL KEYPAD"

Copied!
3
0
0

Teks penuh

(1)

PENJELASAN RANGKAIAN

Rangkaian hexadecimal keypad yang terhubung dengan mikrokontroler ATmega32 ini dirancang untuk memungkinkan pengguna memasukkan angka dan karakter heksadesimal (0- 9 dan A-F) ke dalam sistem dengan menekan tombol pada keypad. Rangkaian ini menggunakan matriks keypad 4x4, yang artinya ada 4 baris dan 4 kolom yang terhubung secara langsung ke port mikrokontroler. Setiap tombol pada keypad terletak di persimpangan antara baris dan kolom tertentu, dan ketika tombol ditekan, sirkuit yang menghubungkan baris dan kolom tersebut tertutup, memungkinkan mikrokontroler mendeteksi tombol mana yang telah ditekan.

Pada rangkaian ini, baris keypad (diwakili oleh PC0-PC3) dikonfigurasi sebagai output, sedangkan kolom (PC4-PC7) dikonfigurasi sebagai input. Ketika program dimulai, port C dari mikrokontroler diatur sedemikian rupa sehingga hanya PC0-PC3 yang berfungsi sebagai output dan PC4-PC7 sebagai input. Port A (PA0-PA7) dikonfigurasi sebagai output yang terhubung ke LED, di mana setiap LED merepresentasikan sebuah bit dari nilai heksadesimal yang dihasilkan dari input keypad. Rangkaian ini juga dilengkapi dengan resistor pull-up pada kolom untuk memastikan bahwa saat tidak ada tombol yang ditekan, input dari kolom tetap berada pada level logika tinggi (1).

Setelah inisialisasi, program memulai dengan mengirimkan sinyal logika rendah secara bergantian ke setiap baris pada keypad melalui PC0-PC3. Ketika sebuah baris diberikan logika rendah, program kemudian membaca nilai pada kolom (PC4-PC7) untuk mendeteksi apakah ada perubahan nilai yang menunjukkan bahwa sebuah tombol pada baris tersebut telah ditekan.

Jika sebuah tombol pada baris tertentu ditekan, maka salah satu dari pin input kolom akan berubah menjadi rendah, dan ini menandakan kepada mikrokontroler bahwa sebuah tombol telah ditekan pada persilangan baris dan kolom tersebut.

Misalnya, ketika program memberikan sinyal logika rendah ke PC0 (baris pertama), program kemudian memeriksa apakah ada perubahan pada kolom (PC4-PC7). Jika tombol "1" pada keypad ditekan, yang menghubungkan baris pertama dengan kolom keempat, maka pin PC4 akan terdeteksi sebagai rendah oleh mikrokontroler. Ketika ini terjadi, program melompat ke instruksi yang menyalakan LED pertama (PA0) dengan mengirimkan nilai 0b00000001 ke PORTA. LED ini menyala untuk menunjukkan bahwa tombol "1" telah ditekan.

Proses ini diulang untuk setiap tombol di keypad. Program secara sistematis mengirimkan sinyal logika rendah ke setiap baris satu per satu, dan membaca kolom untuk mendeteksi tombol yang ditekan. Setiap kombinasi baris dan kolom yang terdeteksi sebagai rendah diubah menjadi nilai heksadesimal yang sesuai, yang kemudian dikirimkan ke PORTA untuk menyalakan LED yang merepresentasikan nilai tersebut. Program ini menggunakan instruksi SBIS (Skip if Bit in I/O Register is Set) untuk memeriksa status dari masing-masing pin input kolom. Jika bit pada pin tertentu dalam register port C menunjukkan logika tinggi, program melompat ke instruksi berikutnya tanpa melakukan tindakan apapun. Namun, jika bit tersebut

(2)

menunjukkan logika rendah, program melaksanakan instruksi yang sesuai, yaitu mengirimkan nilai ke PORTA untuk menyalakan LED.

Ketika semua tombol telah dipindai, program mengulangi proses tersebut tanpa henti, terus- menerus memantau input dari keypad untuk mendeteksi setiap perubahan status tombol.

Dengan demikian, mikrokontroler dapat secara terus-menerus menerima input dari pengguna melalui keypad dan menampilkan hasilnya melalui LED. Selain itu, program juga menangani tombol "clr" pada keypad, yang berfungsi untuk mengosongkan semua output pada PORTA dan mematikan semua LED, mengembalikan sistem ke kondisi awal.

Keseluruhan proses ini berjalan dalam loop tanpa henti yang dimulai dari awal dan terus memeriksa input dari keypad. Setiap kali tombol ditekan, nilai heksadesimal yang sesuai dengan tombol tersebut segera dikirimkan ke PORTA untuk ditampilkan oleh LED. Hal ini memungkinkan pengguna untuk berinteraksi dengan sistem secara real-time dan memastikan bahwa semua input dari keypad tercatat dan ditampilkan dengan benar.

PENJELASAN KODING

Program dimulai dengan dua instruksi LDI yang digunakan untuk memuat nilai ke dalam register. Instruksi LDI R16, 0xF memuat nilai heksadesimal 0x0F (yang setara dengan 00001111 dalam biner) ke dalam register R16. Nilai ini kemudian dikirim ke register data direction register (DDR) dari port C melalui instruksi OUT DDRC, R16. Instruksi ini

mengkonfigurasi bit-bit dari PC0 hingga PC3 sebagai output dan bit-bit dari PC4 hingga PC7 sebagai input. Output pada baris-baris ini diperlukan untuk mengirimkan sinyal logika rendah atau tinggi ke baris-baris keypad, sementara input pada kolom-kolom akan membaca kondisi dari tombol-tombol keypad. Selanjutnya, instruksi LDI R17, 0xFF memuat nilai

heksadesimal 0xFF (11111111 dalam biner) ke dalam register R17. Nilai ini kemudian dikirim ke register DDRA untuk mengkonfigurasi seluruh bit pada port A sebagai output, yang akan digunakan untuk mengontrol LED yang menampilkan hasil dari input keypad.

Setelah konfigurasi port selesai, program berlanjut ke loop utama, dimulai dari label PIN0. Pada tahap ini, program mengirimkan nilai 0x01 (00000001 dalam biner) ke port C, yang menandakan bahwa hanya baris pertama dari keypad yang aktif (logika rendah). Kemudian, program memeriksa apakah salah satu dari tombol-tombol pada baris pertama telah ditekan dengan menggunakan instruksi SBIS. Instruksi ini berfungsi untuk memeriksa bit spesifik dalam register PINC, yang merupakan register input dari port C. Jika bit yang diperiksa berada dalam kondisi logika tinggi (bit set), program akan melewati instruksi berikutnya dan melompat ke bagian berikutnya dari kode. Namun, jika bit tersebut dalam kondisi logika rendah (bit clear), program akan mengeksekusi instruksi yang mengikuti SBIS.

Sebagai contoh, setelah mengaktifkan baris pertama, program memeriksa apakah bit ke-4 dari register PINC (yang terhubung ke kolom pertama) berada dalam kondisi logika rendah

menggunakan instruksi SBIS PINC, 4. Jika kondisi ini terpenuhi, program mengeksekusi instruksi yang mengirimkan nilai 0b00000001 ke port A, menyalakan LED pertama yang menandakan bahwa tombol "1" telah ditekan. Jika tombol pada kolom tersebut tidak ditekan,

(3)

program akan melompat ke label DUA, dan memeriksa kolom berikutnya dengan instruksi

SBIS PINC, 5. Proses ini berlanjut untuk setiap tombol pada baris pertama, mengulangi pola pemeriksaan yang sama untuk kolom-kolom lainnya.

Setelah semua tombol pada baris pertama telah dipindai, program melompat ke label PIN1, yang mengaktifkan baris kedua pada keypad dengan mengirimkan nilai 0x02 (00000010 dalam biner) ke port C. Proses pemindaian kemudian diulangi untuk baris kedua, di mana program memeriksa setiap kolom untuk mendeteksi apakah ada tombol yang ditekan. Jika sebuah tombol terdeteksi, program mengirimkan nilai biner yang sesuai ke port A, yang kemudian akan menyalakan LED yang relevan.

Proses ini diulangi untuk semua baris pada keypad. Baris ketiga diaktifkan oleh label PIN2, dan baris keempat oleh PIN3. Setiap baris diperiksa dengan urutan yang sama, mengaktifkan baris dan kemudian memeriksa setiap kolom untuk mendeteksi tombol yang ditekan. Setiap kali sebuah tombol terdeteksi, nilai yang sesuai dikirimkan ke port A untuk menyalakan LED yang relevan.

Label CLEAR dalam program ini menangani tombol "clr" pada keypad. Jika tombol "clr"

terdeteksi (bit ke-7 pada baris keempat rendah), program akan mengeksekusi instruksi yang mengirimkan nilai 0b00000000 ke port A, yang mengakibatkan semua LED pada port A dimatikan. Ini mengosongkan tampilan LED, mengembalikan sistem ke kondisi awal

sebelum ada tombol ditekan. Setelah instruksi ini dieksekusi, program kembali ke loop utama dengan instruksi RJMP PIN0, yang mengarahkan program untuk kembali memindai keypad dari baris pertama.

Referensi

Dokumen terkait

Bila kemudian mikrokontroler mendeteksi adanya perubahan logika pada output sensor kebocoran gas, dari tinggi menjadi rendah, maka mikrokontroler akan menuliskan

Bila kemudian mikrokontroler mendeteksi adanya perubahan logika pada output sensor kebocoran gas, dari tinggi menjadi rendah, maka mikrokontroler akan menuliskan

san Nilai x pada baris dua kolom dua dan harus kita isi dengan nilai x awal yang kita. mru.kan dan diakhiri dengan menekan tombol

Bila kemudian mikrokontroler mendeteksi adanya perubahan logika pada output sensor kebocoran gas, dari tinggi menjadi rendah, maka mikrokontroler akan menuliskan

• Suatu tabel minimal memuat: judul tabel, judul kolom, judul baris, nilai pada setiap baris dan kolom, serta sumber yang menunjukkan dari mana data tersebut diperoleh....

Setelah itu komputer membaca range yang ditentukan atau sesuai nama range yang diberikan, dimulai dari kolom paling atas, yaitu baris 2 untuk mencari keberadaan data

Buka Program SPSS, pilih Variable view, isi kolom kolom pertama baris pertama dengan kata Nilai dan kolom pertama baris kedua dengan kelompok, pada kolom keenam baris

Berdasarkan tabel 5.8 persamaan regresi linear berganda, yang dibaca adalah nilai dalam kolom B, baris pertama menunjukkan konstanta (a) dan baris selanjutnya menunjukkan koefisien