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 ;P2.0
TulisRegister_Kontrol: Mov DPTR,#Register_Kontrol Movx Ret
@DPTR,A
DELTA ELECTRONIC http://www.delta-electronic.com
;DPTR menunjuk alamat Register ;Kontrol ;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 ;P2.0
BacaRegister_Status: Mov DPTR,#Register_Status Movx Ret
A,@DPTR
;DPTR menunjuk alamat Register ;Status ;Baca isi alamat yang ditunjuk ;DPTR
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.
DELTA ELECTRONIC http://www.delta-electronic.com
Potongan Program Assembly MCS51 untuk membaca dan menulis Register Data Register_Data
EQU
8000H ;CS MT8888 di alamat 8000H dan RS di ;P2.0
BacaRegister_Data: Mov DPTR,#Register_Data Movx Anl Ret
A,@DPTR A,#0FH
TulisRegister_Data: Mov DPTR,#Register_Data Movx Ret
@DPTR,A
;DPTR menunjuk alamat Register ;Data ;Baca isi alamat yang ditunjuk ;Hapus Bit ke 4 hingga 7 ;DPTR
;DPTR menunjuk alamat Register ;Data ;Isi data ke alamat yang ditunjuk ;DPTR
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 00H - Tulis Kontrol Register dengan data 00H - Tulis Kontrol Register dengan data 08H - Tulis Kontrol Register dengan data 00H - 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 Register_Data Register_Kontrol Register_Status ROM
Org Ajmp Org Reti Org Reti Org Reti Org Reti Org Reti
EQU EQU EQU EQU EQU
8000H Alamat_DF88 Alamat_DF88+100H Register_Kontrol 2000H ;Alamat Memori Program DST-51, gunakan ;0000H untuk Single Chip AT89C51
ROM Start ROM+03H ROM+0BH ROM+13H ROM+1BH ROM+23H
DELTA ELECTRONIC http://www.delta-electronic.com
;Reset Vector ; ;External Interrupt 0 Vector ; ;Timer 0 Interrupt Vector ; ;External Interrupt 1 Vector ; ;Timer 1 Interrupt Vector ; ;Serial Interrupt Vector ;
Start: Lcall Mov Lcall Mov
Init_Serial ;Inisial Serial 9600 Bps DPTR,#Alamat_DF88 ;Inisial IC MT8888 Init_MT8888 ; A,#0DH ;Mode DTMF, IRQ aktif, TOUT
aktif, Acall TulisRegister_Kontrol Mov A,#00H Acall TulisRegister_Kontrol
;Tunjuk ke register berikutnya ;Mode Burst, Mode Test non aktif, ;dua buah nada tone
Jb Acall Cjne Mov
;Tunggu sinyal DTMF sinyal DTMF ;Bila ditekan 0, konversi ke 0 ;
Loop: INT0,* BacaRegister_Data ;Baca A,#10,TidakKonversi_Nol 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 Ret
;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 Ret BacaRegister_Status: Mov DPTR,#Register_Status Movx A,@DPTR Ret ;
;Ambil data dari Register Status ;
TulisRegister_Kontrol: Mov DPTR,#Register_Kontrol Movx @DPTR,A Ret ;
;Tulis data ke Register Kontrol ;
****** INISIAL AWAL MT8888 ******** Init_MT8888: Acall BacaRegister_Status Clr A Acall TulisRegister_Kontrol Acall TulisRegister_Kontrol Mov A,#08H Acall TulisRegister_Kontrol
DELTA ELECTRONIC http://www.delta-electronic.com
Clr A Acall TulisRegister_Kontrol 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
DELTA ELECTRONIC http://www.delta-electronic.com