Register-register MT8888 MT8888 mempunyai 3 buah register yaitu Register Kontrol untuk mengatur kerja IC MT8888, Register Status untuk melihat status IC MT8888 dan Register Data untuk mengirim dan menerima data ke atau dari sinyal DTMF. Register Kontrol Register Kontrol diakses dengan menuliskan data ke alamat IC MT8888 dengan kondisi RS = 1. MT8888 mempunyai dua buah register kontrol yaitu Register Kontrol A dan Register Kontrol B Register Kontrol A Register Kontrol B (diambil dari data sheet Mitel MT8888C) TOUT: Bit untuk mengatur keaktifkan Tone Output. Logika 1 berarti Tone Output aktif dan Logika 0 berarti Tone Output non aktif CP/DTMF: Bit untuk mengatur mode IC MT8888 sebagai Mode Detektor Nada Panggil (Call Progress Detector) atau Mode DTMF IRQ: Bit untuk mengatur keaktifan pin IRQ sebagai interrupt. Logika 1 berarti interrupt aktif dan logika 0 berarti interrupt non aktif RSEL: Logika 1 berarti penulisan register kontrol berikutnya akan meng-akses Register Kontrol B dan logika 0 berarti penulisan register kontrol berikutnya tidak mengakses Register Kontrol B (tetap Register Kontrol A) BURST: Bit untuk mengatur keaktifan mode burst. Logika 1 berarti mode burst non aktif dan logika 0 berarti mode burst aktif. Pada saat mode burst aktif maka durasi sinyal DTMF yang dikeluarkan oleh MT8888 adalah 51 ms hingga 102 ms, namun bila mode burst non aktif maka durasi sinyal DTMF dari MT8888 tergantung dengan bit TOUT di Register Kontrol A TEST: Logika 1 untuk mengaktifkan Mode Test dan Logika 0 untuk menon aktifkan Mode Test S/D: Bit untuk mengatur pembangkitan satu atau dua buah nada tone. Logika 0 untuk membangkitkan dua buah nada tone (DTMF) dan logika 1 untuk membangkitkan 1 buah nada tone C/R: Bit untuk mengatur kelompok frekwensi yang dikirimkan adalah kelompok baris atau kelompok kolom (Lihat Tabel Frekwensi DTMF) Potongan Program Assembly MCS51 untuk menulis data ke Register Kontrol Register_Kontrol EQU 8100H ;CS MT8888 di alamat 8000H dan RS di TulisRegister_Kontrol: Mov DPTR,#Register_Kontrol menunjuk alamat Register ;Kontrol Movx @DPTR,A ;Tulis Isi Acc A ke alamat yg ;ditunjuk DPTR
Register Status Register Status diakses dengan membaca data dari alamat IC MT8888 dengan kondisi RS = 1 Potongan Program Assembly MCS51 untuk membaca data dari Register Status Register_Status EQU 8100H ;CS MT8888 di alamat 8000H dan RS di BacaRegister_Status: Mov DPTR,#Register_Status menunjuk alamat Register ;Status Movx A,@DPTR ;Baca isi alamat yang ditunjuk Terlihat di atas bahwa Register Status memiliki alamat yang sama dengan Register Kontrol, sehingga deklarasi Register Status dapat dituliskan: Register_Status EQU Register_Kontrol Oleh karena itu alamat 8100H mempunyai dua buah fungsi yaitu, sebagai alamat Register Kontrol apabila mikrokontroler menuliskan data ke IC MT8888 atau sebagai Register Status apabila mikrokontroler membaca data dari IC MT8888. Register Data Register Data diakses dengan membaca atau menulis dari atau ke alamat IC MT8888 dengan kondisi RS = 0. Apabila mikrokontroler mengirimkan data ke register ini, maka MT8888 yang sudah di inisial melalui register-register kontrolnya sebagai Mode DTMF dengan bit TOUT aktif akan langsung mengirimkan sinyal DTMF berdasarkan data-data biner yang dikirimkan oleh mikrokontroler. Sebaliknya, apabila IC MT8888 mendeteksi sinyal DTMF pada inputnya, maka IC MT8888 akan mengubahnya menjadi data biner dan tersimpan dalam register ini. Data akan dikirimkan ke mikrokontroler setelah ada perintah membaca dari mikrokontroler. Dengan mengaktifkan bit IRQ pada Register Kontrol, MT8888 akan selalu mengirimkan sinyal interrupt berlogika 0 ke mikrokontroler setiap kali sinyal DTMF terdeteksi dan data dari sinyal tersebut telah siap di Register Data.
Potongan Program Assembly MCS51 untuk membaca dan menulis Register Data Register_Data BacaRegister_Data: Mov DPTR,#Register_Data EQU 8000H ;CS MT8888 di alamat 8000H dan RS di menunjuk alamat Register ;Data ;Baca isi alamat yang ditunjuk Movx A,@DPTR Anl A,#0FH ;Hapus Bit ke 4 hingga 7 TulisRegister_Data: Mov DPTR,#Register_Data Movx @DPTR,A menunjuk alamat Register ;Data ;Isi data ke alamat yang ditunjuk Inisial IC MT8888 Sebelum dioperasikan, proses inisialisasi awal terlebih dahulu harus dilakukan pada 100 ms atau lebih setelah Power Supply aktif. Urutan dari proses tersebut adalah sebagai berikut: - Baca Status Register - Tulis Kontrol Register dengan data 08H - Baca Status Register Setelah proses inisialisasi awal dilakukan, selanjutnya dapat diteruskan dengan pengisian register kontrol dengan data-data sesuai dengan mode operasi yang diinginkan. Contoh Program Program mengambil sinyal DTMF dan mengirimkan ke port serial MCS51.CODE Alamat_DF88 EQU 8000H Register_Data EQU Alamat_DF88 Register_Kontrol EQU Alamat_DF88+100H Register_Status EQU Register_Kontrol ROM EQU 2000H ;Alamat Memori Program DST-51, gunakan ;0000H untuk Single Chip AT89C51 Org ROM ;Reset Vector Ajmp Start ; Org ROM+03H ;External Interrupt 0 Vector i ; Org ROM+0BH ;Timer 0 Interrupt Vector i ; Org ROM+13H ;External Interrupt 1 Vector i ; Org ROM+1BH ;Timer 1 Interrupt Vector i ; Org ROM+23H ;Serial Interrupt Vector i ;
Start: Lcall Init_Serial ;Inisial Serial 9600 Bps Mov DPTR,#Alamat_DF88 ;Inisial IC MT8888 Lcall Init_MT8888 ; Mov A,#0DH ;Mode DTMF, IRQ aktif, TOUT aktif, ;Tunjuk ke register berikutnya Mov A,#00H ;Mode Burst, Mode Test non aktif, ;dua buah nada tone Loop: Jb INT0,* ;Tunggu sinyal DTMF Acall BacaRegister_Data ;Baca sinyal DTMF Cjne A,#10,TidakKonversi_Nol ;Bila ditekan 0, konversi ke 0 Mov A,#00H ; TidakKonversi_Nol: Clr C ;Tampilkan dalam ASCII Add A,#30H ; Lcall Serial_Out ; Acall BacaRegister_Status ;Baca Register status untuk membuat ;IRQ dan flag-flag Register Status ;clear Jnb INT0,* ;Tunggu IRQ High Ajmp Loop ;Kembali deteksi DTMF ***** AKHIR MAIN PROGRAM ******* Serial_Out: Mov SBUF,A Jnb TI,* ; Clr TI ;Kirim ke Port Serial ****** AKSES REGISTER-REGISTER MT8888 ******* BacaRegister_Data: Mov DPTR,#Alamat_DF88 ;Ambil dari Register Data MT8888 Movx A,@DPTR ; Anl A,#0FH ;Hapus Bit ke 4... 7 BacaRegister_Status: Mov DPTR,#Register_Status ;Ambil data dari Register Status Movx A,@DPTR ; ; TulisRegister_Kontrol: Mov DPTR,#Register_Kontrol ;Tulis data ke Register Kontrol Movx @DPTR,A ; ; ****** INISIAL AWAL MT8888 ******** Init_MT8888: Acall BacaRegister_Status Clr A Mov A,#08H
Clr A Acall BacaRegister_Status RET ****** INISIAL PORT SERIAL MCS51 ******* Init_Serial: Mov SCON,#50H ; Mov TMOD,#20H ;Timer1 Mode 2 Mov TH1,#0FDH ;9600 Baudrate Setb TR1 ;Timer 1 aktif Mov PCON,#00H RET