• Tidak ada hasil yang ditemukan

PENULISAN KARAKTER DENGAN MENGGUNAKAN TEKNIK PENULISAN PADA KEYPAD HANDPHONE OLEH MODUL DST-51, KEYPAD 4X3 DAN M1632 LCD

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENULISAN KARAKTER DENGAN MENGGUNAKAN TEKNIK PENULISAN PADA KEYPAD HANDPHONE OLEH MODUL DST-51, KEYPAD 4X3 DAN M1632 LCD"

Copied!
11
0
0

Teks penuh

(1)

PENULISAN KARAKTER DENGAN MENGGUNAKAN

TEKNIK PENULISAN PADA KEYPAD HANDPHONE

OLEH MODUL DST-51, KEYPAD 4X3 DAN M1632 LCD

Keypad 4x3 adalah merupakan keypad dengan konfigurasi 4 baris dan 3 kolom

dan terdiri dari 12 tombol. Penggunaan 12 tombol pada proses input data numeric

tentunya dapat dilakukan dengan mudah, namun pada proses input data alphabet dan

karakter-karakter tanda bacanya, maka diperlukan sebuah teknik yang biasa digunakan

pada keypad handphone.

Pada teknik ini, setiap tombol tidak hanya mewakili satu alphabet atau tanda baca

saja, melainkan untuk beberapa alphabet atau tanda baca sekaligus. Untuk membedakan

alphabet atau tanda baca yang diinginkan dilakukan dengan mendeteksi jumlah

penekanan tombol dalam satu waktu tertentu.

2

A B C 2 Penekanan 1 Penekanan 2 Penekanan 3 Penekanan 4 Gambar 1

Contoh penekanan tombol 2

Tombol-tombol numeric juga dapat dilakukan dengan menekan dan menahan

tombol tersebut agak lama sehingga untuk memberikan angka 2 tidak harus dilakukan

dengan menekan tombol 2 sebanyak 4 kali.

Untuk penerapan teknik tersebut dalam Modul DST-51 dilakukan dengan proses

yang tampak pada diagram alir di gambar 2. Diagram alir ini menggambarkan proses

yang terjadi pada subroutine program listing 2, program ambil_keypad. Dalam proses ini

terdapat timer yang bekerja untuk mendeteksi time out selama tombol ditekan dan time

out selama tombol dilepas. Timer mulai menghitung pada saat terjadi penekanan tombol

dan berhenti saat program keluar dari subroutine. Time out pada bagian pertama (time out

karena tombol tidak ditekan) mengakibatkan program keluar dari subroutine ini dengan

variable nilai berisi data hasil konversi table sesuai jumlah penekanan tombol. Sedangkan

pada time out bagian kedua (time out karena tombol ditekan terus) mengakibatkan

program akan keluar dari subroutine dengan variable nilai berisi data numeric yang

terletak pada bagian akhir data pada setiap tombol (lihat table 1).

Pada teknik penulisan keypad handphone, setelah terjadi penekanan tombol dan

karakter tampil pada LCD maka karakter berikutnya hanya dapat diinputkan dengan

penekanan tombol sesudah waktu tertentu yaitu saat cursor mulai blinking, kecuali

tombol tersebut berbeda dengan tombol sebelumnya. Apabila tombol tersebut berbeda

penekanan tersebut tidak perlu menunggu waktu tertentu. Contoh, pada saat penulisan

kata ‘AAA’, tombol 2 ditekan untuk pertama kali dan layar LCD akan menampilkan

karakter “A”, karakter “A” yang kedua hanya dapat dituliskan setelah waktu tertentu

(2)

yaitu saat cursor di LCD mulai blinking. Namun pada penulisan kata ‘ADA’ di mana

huruf pertama, kedua dan ketiga dituliskan dengan tombol yang berlainan, maka proses

penekanan tidak perlu menunggu waktu tertentu.

Untuk itu pada sistem ini, program dapat memeriksa perbedaan antara penekanan

tombol saat ini dengan sebelumnya dengan membandingkan nilai dari input keypad dan

nilai pada variable keypad buffer. Apabila kedua nilai tersebut tidak sama, maka program

akan langsung keluar dari subroutine dengan variable nilai berisi data keypad yang lama,

namun bila kedua nilai tersebut sama, maka program kembali melakukan konversi table

dengan mengambil data kedua dari tombol yang ditekan.

Total Tekan = 0 Reset Timer Keypad Timer 0 16 bit counter

Keypad

ditekan? Time Out?

Total Tekan = 0? Keypad Buffer <= Keypad Konversi Tabel Keypad Akhir Data tombol? Total Tekan + 1 Tampilkan buffer ke LCD Delay Bouncing Reset Timer Keypad

Start Timer Keypad Nilai<=Hasil Konversi Tabel

Keypad

dilepas? Tidak Time Out?

Ambil data terakhir tombol Nilai = Hasil Konversi Tabel

Ya Ya KeypadBuffer = Keypad? Ya Ya Stop Timer Keluar dari subroutine

Ya Total Tekan = 0

(3)

Diagram Alir Subroutine Ambil Keypad

Penekanan tombol yang sama yang dilakukan berulang-ulang hingga data terakhir

dari tombol (00h) akan mengakibatkan karakter kembali ke bentuk pertama, yaitu

misalkan “A” untuk tombol 2. Hal ini dilakukan dengan mereset nilai variable Total

Tekan.

Reset LCD CharCounter=0 Akses Keypad Tampilkan di LCD Char Counter = Char Counter + 1 Char Counter = 16? Char Counter = 32? LCD Pindah baris 2 Ya Ya Gambar 2

Diagram Alir Program Utama

Gambar 2 menunjukkan diagram alir dari program utama yaitu program yang

menggunakan subroutine ambil_keypad. LCD M1632 adalah LCD dengan susunan 16

karakter dan 2 baris oleh karena itu program harus memindah tampilan LCD ke baris 2

saat karakter ke 16 ditampilkan dan LCD akan pindah layar saat karakter ke 32. Untuk

mengetahui jumlah karakter yang ditampilkan dilakukan dengan menggunakan variable

character counter yang selalu bertambah setiap kali adanya penampilan karakter pada

LCD.

(4)

Tabel 1. Tabel Kode Tombol dg alamat awal table di 2200h

Alamat Tombol Tekan 1x Tekan 2x Tekan 3x Tekan 4x Tekan 5x Tekan 6x Tekan 7x Tekan 8x Tekan 9x Tekan 10x

2200h 0 Spasi 0 00h

220Ah 1 Titik Koma ? ! - & 1 00h

2214h 2 A B C 2 00h 221Eh 3 D E F 3 00h 2228h 4 G H I 4 00h 2232h 5 J K L 5 00h 223Ch 6 M N O 6 00h 2246h 7 P Q R S 7 00h 2250h 8 T U V 8 00h 225Ah 9 W X Y Z 9 00h 226Eh # # 00h 2278h * * 00h

(5)

Tabel 1 menunjukkan table data yang berisi kode-kode untuk setiap tombol

keypad dengan konfigurasi tertentu. Kode 00h adalah merupakan tanda akhir dari

data-data setiap tombol. Pada table di atas setiap data-data-data-data setiap tombol disimpan di lokasi

memori dengan jarak 10 byte (0Ah).

Dengan jarak sebesar 10 byte lokasi memori untuk tiap data-data tombol, maka

tampak beberapa lokasi kosong yang tampak di table 1 sebagai kotak-kotak ber arsir.

Lokasi-lokasi tersebut dapat digunakan untuk menambah kode-kode lain pada setiap

tombol, contohnya kode “{“ ingin ditambahkan di tombol 2 urutan keempat, maka data

konfigurasi di baris Alamat 2214h harus diganti menjadi ‘A B C { 2 00h’.

Listing 1 KonversiTabel: Movc A,@A+DPTR Mov B,#10 Mul AB Push DPH Push DPL Mov DPTR,#TabelKodeTombol Mov B,TotalTekan Add A,B Movc A,@A+DPTR Pop DPL Pop DPH Ret

Listing 1 adalah subroutine proses konversi dari data yang diperoleh dari keypad

ke kode dari tombol. Karena setiap tombol dipisahkan dengan lokasi sebesar 10 byte,

maka data dari keypad tersebut dikali dengan 10. Sedangkan untuk mengambil data

sesuai dengan jumlah penekanan, maka selanjutnya data yang telah dikali 10 tadi

dijumlahkan dengan variable total tekan yang berisi jumlah penekanan yang telah terjadi.

Listing 2

Subroutine Ambil_Keypad

DSEG

TimeOutKeypad: Ds 1

TotalTekan: Ds 1 ;Jumlah penekanan keypad Nilai: Ds 1 KeypadBuffer: Ds 1 CSEG Keypad EQU 90H Org $ Ambil_Keypad: Mov Keypad,#0FFH ;

Acall RSTTimeKeypad ;Reset Timer Keypad

Mov A,TMOD ;Timer 0 mode 16 bit counter

Anl A,#0F0H ;

Orl A,#01H ;

Mov TMOD,A ;

Clr TR0 ResetTotalTekan:

(6)

Tunggu_Ditekan: Mov A,Keypad ; Cjne A,#0FFH,KeypadDitekan ; Jnb TF0,Tunggu_Ditekan Clr TF0 Inc TimeOutKeypad Mov R7,TimeOutKeypad Cjne R7,#010,Tunggu_Ditekan Clr TR0 Ret KeypadDitekan:

Jb P,Tunggu_Ditekan ;Periksa apakah baris dan kolom ;telah terhubung Mov R7,TotalTekan ; Cjne R7,#0,TidakSkip Ajmp Skip TidakSkip: Mov B,KeypadBuffer Clr C Subb A,B Jnz GantiTombol Mov A,Keypad skip: Mov Keypadbuffer,Keypad Acall KonversiTabel

Jz ResetTotalTekan ;Akhir data tombol? Inc TotalTekan Mov Nilai,A Lcall Kirim_Karakter Mov A,#04H Lcall Kirim_Perintah Mov A,#' ' Lcall Kirim_Karakter Mov A,#06H Lcall Kirim_Perintah Lcall DelayBouncing3 Acall RSTTimeKeypad TungguLepas: Mov A,Keypad Setb TR0 Cjne A,#0FFH,PeriksaTimer Setb TR0 Ajmp Tunggu_Ditekan PeriksaTimer: Jnb TF0,TungguLepas Clr TF0 Inc TimeOutKeypad Mov R7,TimeOutKeypad Cjne R7,#010,TungguLepas Mov DPTR,#TabelKeypad CariAkhirDataTombol:

(7)

Acall KonversiTabel ; Inc TotalTekan ;

Jnz CariAkhirDataTombol ; Dec TotalTekan ;

Dec TotalTekan ;

Mov A,KeypadBuffer ;Ambil data terakhir tombol Acall KonversiTabel ;

Mov Nilai,A ;Simpan di Nilai

Lcall Kirim_Karakter Mov A,#04H Lcall Kirim_Perintah Mov A,#' ' Lcall Kirim_Karakter Mov A,#06H Lcall Kirim_Perintah BelumLepas: Mov A,Keypad Cjne A,#0FFH,BelumLepas GantiTombol: Clr TR0 ;Stop Timer Ret KonversiTabel: Movc A,@A+DPTR Mov B,#10 Mul AB Push DPH Push DPL Mov DPTR,#TabelKodeTombol Mov B,TotalTekan Add A,B Movc A,@A+DPTR Pop DPL Pop DPH Ret Reset: Mov TotalTekan,#00 Ajmp Tunggu_Ditekan DelayBouncing3: Push B Mov B,#01 Loop2DelayBounce: Acall DelayBouncing2 Djnz B,Loop2DelayBounce Pop B Ret DelayBouncing2: Push B Mov B,#0FFH Loop1Delaybounce: Acall DelayBouncing1 Djnz B,Loop1Delaybounce Pop B

(8)

Ret DelayBouncing1: Push B Mov B,#0FFH Djnz B,$ Pop B Ret RSTTimeKeypad: Mov TH0,#00H Mov TL0,#00H Mov TimeOutKeypad,#00 Ret Listing 3 Program Utama $MOD51 ;*********

; PROGRAM PENULISAN KARAKTER DENGAN MENGGUNAKAN TEKNIK PENULISAN PADA KEYPAD

; HANDPHONE OLEH MODUL DST-51, KEYPAD 4X3 & M1632 LCD DSEG

CharCounter: Ds 1 Org 50H

CSEG

Delay_500mS EQU 0099H ;Menunda waktu selama 500 mS (timer 0 digunakan)

KirimPesan_LCD EQU 160DH

;Mengirim data di alamat yang ditunjuk oleh DPTR ke LCD hingga data 0F ;- DPTR diisi dengan alamat awal data yang dikirim

;- Akhir data adalah 0FH

Init_LCD EQU 1619H ;Inisialisasi LCD

Kirim_Perintah EQU 1658H ;Mengirim data ke register perintah LCD

;- Data diisi di akumulator

Kirim_Karakter EQU 1677H ;Mengirim data ke register data LCD

;- Data diisi di akumulator

Baris2 EQU 1681H

;Memindah posisi cursor ke baris 2

ROM EQU 2000H

Org ROM ;Reset Vector

Ajmp Start ;

(9)

Reti ;

Org ROM+0BH ;Timer 0 Interrupt Vector

Reti ;

Org ROM+13H ;External Interrupt 1 Vector

Reti ;

Org ROM+1BH ;Timer 1 Interrupt Vector

Reti ;

Org ROM+23H ;Serial Interrupt Vector

Reti ;

Start:

Lcall Init_LCD ;Inisial LCD

Mov CharCounter,#00 ;

Loop:

Mov DPTR,#TabelKeypad ;Akses Keypad

Lcall Ambil_keypad ;

Mov A,Nilai ;Hasil dari penekanan keypad

;tersimpan di variabel nilai Lcall Kirim_Karakter ;Kirim hasil ke LCD Inc CharCounter ;Char Counter + 1

Mov R7,CharCounter ;

Cjne R7,#16,Cek32 ;Char Counter = 16, pindah

Lcall Baris2 ;ke baris 2 LCD

Ajmp Loop ;

Cek32:

Cjne R7,#32,Loop ;Char Counter = 32, kembali

Ajmp Start ;ke baris 1

$include (keypad2.asm) TabelKodeTombol: DB ' 0',0 Org TabelKodeTombol+10 DB '.,?!-&1',0 Org TabelKodeTombol+20 DB 'ABC2',0 Org TabelKodeTombol+30 DB 'DEF3',0 Org TabelKodeTombol+40 DB 'GHI4',0 Org TabelKodeTombol+50 DB 'JKL5',0 Org TabelKodeTombol+60 DB 'MNO6',0 Org TabelKodeTombol+70 DB 'PQRS7',0 Org TabelKodeTombol+80 DB 'TUV8',0 Org TabelKodeTombol+90 DB 'WXYZ9',0 Org TabelKodeTombol+110 DB '#',0 Org TabelKodeTombol+120 DB '*',0 CSEG Org ROM+0F00H

(10)

Kpd1 EQU 0B7H Kpd2 EQU 0D7H Kpd3 EQU 0E7H Kpd4 EQU 0BBH Kpd5 EQU 0DBH Kpd6 EQU 0EBH Kpd7 EQU 0BDH Kpd8 EQU 0DDH Kpd9 EQU 0EDH

Kpdstar EQU 0BEH Kpd0 EQU 0DEH Kpdpgr EQU 0EEH TabelKeypad: Org TabelKeypad+Kpd1 DB 1 Org TabelKeypad+Kpd4 DB 4 Org TabelKeypad+Kpd7 DB 7 Org TabelKeypad+Kpdstar DB 0BH Org TabelKeypad+Kpd2 DB 2 Org TabelKeypad+Kpd5 DB 5 Org TabelKeypad+Kpd8 DB 8 Org TabelKeypad+Kpd0 DB 0 Org TabelKeypad+Kpd3 DB 3 Org TabelKeypad+Kpd6 DB 6 Org TabelKeypad+Kpd9 DB 9 Org TabelKeypad+Kpdpgr DB 0CH END

(11)

Gambar

Diagram Alir Subroutine Ambil Keypad
Tabel 1. Tabel Kode Tombol dg alamat awal table di 2200h

Referensi

Dokumen terkait

Pada ovarium tampak kista-kista biru kecil sampai kista besar berisi darah tua menyerupai coklat (disebut kista coklat atau endometrioma). Darah tua dapat keluar

Landasan hukum yang berkaitan dengan pelaksanaan penelitian dan pengabdian kepada masyarakat didasarkan atas: (1) Undang-Undang Dasar 1945 pasal 31 ayat 5

micrantha dengan konsentrasi 0.33 g mL -1 memiliki rata-rata panjang gulma yang 15 % lebih pendek dibandingkan dengan kontrol, sedangkan rata-rata panjang gulma yang

a. Accuracy ini merupakan aspek terpenting dari forecast, karena perbedaan antara aktual dan forecast berarti biaya. Stability vs Responsiveness. Artinya forecast harus

Pencukuran pada daerah operasi bertujuan untuk menghindari terjadinya infeksi pada daerah yang akan dilakukan pembedahan karena rambut yang tidak dicukur dapat menjadi

Kepemimpinan kepala puskesmas, pendidikan terakhir, pelatihan dan motivasi petugas merupakan variable yang berhubungan secara statistic dengan kinerja petugas gizi puskesmas..

Berdasarkan teori di atas perananan kepala sekolah sebagai manajer pendidikan dapat dijabarkan sebagai berikut: 1) mengadakan prediksi (membuat rencana); 2)

Dalam hal penjualan kembali Unit Penyertaan REKSA DANA SYARIAH BNP PARIBAS CAKRA SYARIAH USD dilakukan oleh Pemegang Unit Penyertaan melalui media elektronik, maka Formulir