(oleh Iwan Setiawan) setiaone.iwan@gmail.com http://iwan.blog.undip.ac.id Salah satu jenis perangkat antar muka yang umum dijumpai pada sistem embedded (atau sistem microcontroller) adalah Keypad matrik ! atau "! . #alaupun penggunaannya sangat intensi$e% tetapi kenyataannya sangat jarang perangkat lunak pengembang yang menyediakan &ungsi standar untuk pengaksesan keypad tersebut (sejauh pengetahuan penulis). #alaupun nampaknya sepele% tetapi &ungsi pengaksesan keypad ini justru menjadi &aktor kunci kenyamanan pengguna sistem embedded yang kita rancang. 'alam tulisan singkat ini% penulis ingin berbagi pengalaman dan pengetahuan pada anda para programmer microcontroller% mahasiswa atau embedded system de$eloper dengan menyajikan " (tiga) buah &ungsi pengaksesan keypad matrik yang menurut penulis sangat (clean)% terstruktur dan menghasilkan kode mesin yang minimal. *ungsi pengaksesan keypad ini% bukanlah murni hasil coding dari penulis tetapi hasil dari modi&ikasi &ungsi pengaksesan keypad yang penulis peroleh dari sumber internet luar negeri berdasarkan hasil (perburuan) yang cukup melelahkan (sayang penulis lupa alamat url+nya% karena perburuan dilakukan sekitar tahun ,--.+an). *ungsi pengaksesan keypad disusun oleh penulis dengan bahasa / (compiler: /ode0ision102) untuk microcontroller 102. 3ika anda menggunakan microcontroller% compiler dan jenis keypad yang berbeda dengan yang penulis gunakan% maka &ungsinya tinggal anda modi&ikasi sedikit. Interkoneksi keypad dan microcontroller juga dapat disesuaikan secara mudah. 4ayout% interkoneksi serta kode &ungsi dapat anda lihat di halaman berikutnya.
Semoga bermanfaat
Gambar /ontoh layout Keypad ! dan Interkoneksi pada 5icrocontroller Kode: deklarasi dan ungsi pengaksesan keypad //simpan kode 1S/II tombol keypad pd memori &lash
const char K6781946: ;: ; < ==>?>%> >%>@>%>A>B%=>,>%>C>%>D>%>->B%=>">%>.>%>E>%>F>B%=>1>%>9>%>/>%>'>BBG /Akoneksikan keypad pada salah satu port% misal disini keypad dikoneksikan dg port 1 jika dikoneksikan dg port lain% sesuaikan K67H'I2% K67HII dan K67HJK8 Lnya% untuk bouncing anda nanti dapat sesuikan dg karakteristik keypad andaA/ Fde&ine K67H'I2 ''21 Fde&ine K67HII MII1 Fde&ine K67HJK8 MJ281 Fde&ine 9JKI/IIN ?// deklarasi+deklarasi &ungsi yang terkait dengan pengaksesan keypad !oid initkeypad()G char kbhit()G char getkeypad()G //'e&inisi &ungsi /A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ $oid initkeypad()G &ungsi inisialisasi keypad (harus dipanggil sebelum &ungsi keypad yang lain +cukup ?!) MJ28 -+" output MII +@ input dengan resistor pull up enabled ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++A/ $oid initkeypad() = K67H'I2<-!-*G //nible bawah output% nible atas input dg. Mull up enable
"