Kamis, 10 Maret 2011

Keunggulan frekuensi TV digital terhadap TV Analog



1.      Siaran menggunakan sistem digital memiliki ketahanan terhadap gangguan dan mudah untuk diperbaiki kode digitalnya melalui kode koreksi error. Akibatnya adalah kualitas gambar dan suara yang jauh lebih akurat dan beresolusi tinggi.
2.      Siaran televisi digital dapat menggunakan daya yang rendah.
3.      Transmisi pada TV Digital menggunakan lebar pita yang lebih efisien sehingga saluran dapat dipadatkan.
4.      Sistem penyiaran TV Digital menggunakan OFDM yang bersifat kuat dalam lalu lintas yang padat.
5.      Siaran berteknologi digital yang tidak memungkinkan adanya keterbatasan frekuensi menghasilkan saluran-saluran televisi baru
6.      Terjadi efisiensi penggunaan kanal frekuensi berupa pemakaian satu kanal frekuensi untuk 4 hingga 6 program.
7.      Siaran televisi digital terestrial dapat diterima oleh sistem penerimaan televisi analog dan sistem penerimaan televisi bergerak.
8.      TV Digital memiliki fungsi interaktif dimana pengguna dapat menggunakannya seperti internet.
9.      Siaran televisi digital terestrial dapat diterima oleh sistem penerimaan televisi tidak bergerak maupun sistem penerimaan televisi bergerak.
10.  TV Digital memungkinkan penyiaran saluran dan layanan yang lebih banyak daripada televisi analog.
11.  TV Digital memiliki hasil siaran dengan kualitas gambar dan warna yang jauh lebih baik dari yang dihasilkan televisi analog.

Perlu sedikit diketahui, memang benar banyak sebagian orang mengatakan kalau gambar yang dihasilkan TV LCD atau Plasma TV memiliki resolusi yang lebih tinggi dan kualitas gambarnya tajam. Tetapi kekurangannya adalah dimana umur TV tersebut tidak dapat berumur panjang jika kita memakainya terus-menerus, bila dibandingkan dengan TV CRT atau yang dikenal sebagai televisi biasa yang digunakan orang pada umumnya masyarakat Indonesia. Maka, pilihan ada di tangan Anda semua bagiamana memilih televisi yang sesuai kebutuhan dan keinginan Anda.

Internet Radio Streaming


Pengenalan Internet Radio Streaming
Internet radio ( juga dikenal sebagai web radio, net radio, streaming radio atau e-radio) adalah layanan siaran audio yang ditransmisikan lewat internet. Siaran audio dalam internet biasanya dihubungkan sebagai webcasting karena tidak ditransmisikan dengan tanpa kabel (wireless). Internet Radio mencampur media streaming yang ditujukan kepada pendengar dengan aliran yang kontinu.

Internet radio berbeda dari podcasting, dimana podcasting harus mendownload file terlebih dahulu sedangkan internet radio dapat mendengarkan secara langsung. Banyak stasiun Internet radio adalah anak perusahaan dari stasiun radio tradisional. Stasiun internet radio yang hanya melakukan siaran pada media internet saja, merupakan jenis stasiun independent. Pelayanan internet radio biasanya dapat diakses dimanapun di dunia ini, sebagai contoh, seseorang di Indonesia dapat mendengarkan siaran radio dari stasiun radio Amerika. Beberapa dari stasiun radio, seperti Clear Channel di Amerika dan Chrysalis di Inggris membatasi siaran di dalam negeri karena masalah lisensi music dan perbedaan jenis iklan. Internet radio sangat popular di kalangan para wisatawan dan para pendengar yang tertarik dan mereka tidak mendapatkan siaran yang cukup dari stasiun radio local (seperti music progressive rock, ambient music, music daerah, music klasik, dan komedi radio). Pelayanan internet radio mencakup berita, olahraga, pembicara (politik), dan berbagai jenis genre musik, yang dimana semua pelayanan tersebut terdapat pada stasiun radio tradisional (biasa).

Cara Kerja
Cara paling umum dalam distribusi radio internet adalah lewat teknologi streaming menggunakan lossy audio codec. Format streaming audio yang paling popular terdiri dari Mp3, Ogg Vorbis, Windows Media Audio, Real Audio dan HE-AAC (beberapa menyebutnya aac+). Bit-bit audio tersebut ditransformasi melalui network dalam TCP atau paket UDP, lalu disusun ulang dan dimainkan tak lebih dari sedetik. (Delay menyangkut waktu yang tertinggal/lag time) [3].

Konfigurasi TCP
Transmission Control Protocol (TCP) adalah suatu protokol yang berada di lapisan transpor (baik itu dalam tujuh lapis model referensi OSI atau model DARPA) yang berorientasi sambungan (connection-oriented) dan dapat diandalkan (reliable). TCP dispesifikasikan dalam RFC 793. TCP Three-way handshake Proses pembuatan koneksi (TCP Three way handshake) Proses pembuatan koneksi TCP disebut juga dengan “Three-way Handshake”. Tujuan metode ini adalah agar dapat melakukan sinkronisasi terhadap nomor urut dan nomor acknowledgement yang dikirimkan oleh kedua pihak dan saling bertukar ukuran TCP Window. Prosesnya dapat digambarkan sebagai berikut:
  • Host pertama (yang ingin membuat koneksi) akan mengirimkan sebuah segmen TCP dengan flag SYN diaktifkan kepada host kedua (yang hendak diajak untuk berkomunikasi).
  • Host kedua akan meresponsnya dengan mengirimkan segmen dengan acknowledgment dan juga SYN kepada host pertama.
  • Host pertama selanjutnya akan mulai saling bertukar data dengan host kedua. TCP menggunakan proses jabat tangan yang sama untuk mengakhiri koneksi yang dibuat.
Hal ini menjamin dua host yang sedang terkoneksi tersebut telah menyelesaikan proses transmisi data dan semua data yang ditransmisikan telah diterima dengan baik. diseb Sebuah segmen TCP dapat memiliki flag (tanda-tanda) khusus yang mengindikasikan segmen yang bersangkutan, seperti yang disebutkan dalam tabel berikut:
Struktur flag-flag TCP
Nama flag Keterangan

URG :
Mengindikasikan bahwa beberapa bagian dari segmen TCP mengandung data yang sangat penting, dan field Urgent Pointer dalam header TCP harus digunakan untuk menentukan lokasi di mana data penting tersebut berada dalam segmen.

ACK:
Mengindikasikan field Acknowledgment mengandung oktet selanjutnya yang diharapkan dalam koneksi. Flag ini selalu diset, kecuali pada segmen pertama pada pembuatan sesi koneksi TCP.

PSH :
Mengindikasikan bahwa isi dari TCP Receive buffer harus diserahkan kepada protokol lapisan aplikasi. Data dalam receive buffer harus berisi sebuah blok data yang berurutan (kontigu), dilihat dari ujung paling kiri dari buffer. Dengan kata lain, sebuah segmen yang memiliki flag PSH diset ke nilai 1, tidak bolah ada satu byte pun data yang hilang dari aliran byte segmen tersebut; data tidak dapat diberikan kepada protokol lapisan aplikasi hingga segmen yang hilang tersebut datang. Normalnya, TCP Receive buffer akan dikosongkan (dengan kata lain, isi dari buffer akan diteruskan kepada protokol lapisan aplikasi) ketika buffer tersebut berisi data yang kontigu atau ketika dalam “proses perawatan”.Flag PSH ini dapat mengubah hal seperti itu, dan membuat akan TCP segera mengosongkan TCP Receive buffer. Flag PSH umumnya digunakan dalam protokol lapisan aplikasi yang bersifat interaktif, seperti halnya Telnet, karena setiap penekanan tombol dalam sesi terminal virtual akan dikirimkan dengan sebuah flag PSH diset ke nilai 1. Contoh dari penggunaan lainnya dari flag ini adalah pada segmen terakhir dari berkas yang ditransfer dengan menggunakan protokol FTP. Segmen yang dikirimkan dengan flag PSH aktif tidak harus segera di-acknowledge oleh penerima.

RST:
Mengindikasikan bahwa koneksi yang dibuat akan digagalkan. Untuk sebuah koneksi TCP yang sedang berjalan (aktif), sebuah segmen dengan flag RST diset ke nilai 1 akan dikirimkan sebagai respons terhadap sebuah segmen TCP yang diterima yang ternyata segmen tersebut bukan yang diminta, sehingga koneksi pun menjadi gagal. Pengiriman segmen dengan flag RST diset ke nilai 1 untuk sebuah koneksi aktif akan menutup koneksi secara paksa, sehingga data yang disimpan dalam buffer akan dibuang (dihilangkan). Untuk sebuah koneksi TCP yang sedang dibuat, segmen dengan flag RST aktif akan dikirimkan sebagai respons terhadap request pembuatan koneksi untuk mencegah percobaan pembuatan koneksi.

SYN :
Mengindikasikan bahwa segmen TCP yang bersangkutan mengandung Initial Sequence Number (ISN). Selama proses pembuatan sesi koneksi TCP, TCP akan  mengirimkan sebuah segmen dengan flag SYN diset ke nilai 1. Setiap host TCP lainnya akan memberikan jawaban (acknowledgment) dari segmen dengan flag SYN tersebut dengan menganggap bahwa segmen tersebut merupakan sekumpulan byte dari data. Field Acknowledgment Number dari sebuah segmen SYN diatur ke nilai ISN + 1.

FIN :
Menandakan bahwa pengirim segmen TCP telah selesai dalam mengirimkan data dalam sebuah koneksi TCP. Ketika sebuah koneksi TCP akhirnya dihentikan (akibat sudah tidak ada data yang dikirimkan lagi), setiap host TCP akan mengirimkan sebuah segmen TCP dengan flag FIN diset ke nilai 1. Sebuah host TCP tidak akan mengirimkan segmen dengan flag FIN hingga semua data yang dikirimkannya telah diterima dengan baik (menerima paket acknowledgment) oleh penerima. Setiap host akan menganggap sebuah segmen TCP dengan flag FIN sebagai sekumpulan byte dari data. Ketika dua host TCP telah mengirimkan segmen TCP dengan flag FIN dan menerima acknowledgment dari segmen tersebut, maka koneksi TCP pun akan dihentikan.

Karakteristik TCP
TCP memiliki karakteristik sebagai berikut:
  • Berorientasi sambungan (connection-oriented): Sebelum data dapat ditransmisikan antara dua host, dua proses yang berjalan pada lapisan aplikasi harus melakukan negosiasi untuk membuat sesi koneksi terlebih dahulu. Koneksi TCP ditutup dengan menggunakan proses terminasi koneksi TCP (TCP connection termination).
  • Full-duplex: Untuk setiap host TCP, koneksi yang terjadi antara dua host terdiri atas dua buah jalur, yakni jalur keluar dan jalur masuk. Dengan menggunakan teknologi lapisan yang lebih rendah yang mendukung full-duplex, maka data pun dapat secara simultan diterima dan dikirim. Header TCP berisi nomor urut (TCP sequence number) dari data yang ditransmisikan dan sebuah acknowledgment dari data yang masuk.
  • Dapat diandalkan (reliable): Data yang dikirimkan ke sebuah koneksi TCP akan diurutkan dengan sebuah nomor urut paket dan akan mengharapkan paket positive acknowledgment dari penerima. Jika tidak ada paket Acknowledgment dari penerima, maka segmen TCP (protocol data unit dalam protokol TCP) akan ditransmisikan ulang. Pada pihak penerima, segmen-segmen duplikat akan diabaikan dan segmen-segmen yang datang tidak sesuai dengan urutannya akan diletakkan di belakang untuk mengurutkan segmen-segmen TCP. Untuk menjamin integritas setiap segmen TCP, TCP mengimplementasikan penghitungan TCP Checksum.
  • Byte stream: TCP melihat data yang dikirimkan dan diterima melalui dua jalur masuk dan jalur keluar TCP sebagai sebuah byte stream yang berdekatan (kontigu). Nomor urut TCP dan nomor acknowlegment dalam setiap header TCP didefinisikan juga dalam bentuk byte. Meski demikian, TCP tidak mengetahui batasan pesan-pesan di dalam byte stream TCP tersebut. Untuk melakukannya, hal ini diserahkan kepada protokol lapisan aplikasi (dalam DARPA Reference Model), yang harus menerjemahkan byte stream TCP ke dalam “bahasa” yang ia pahami.
  • Memiliki layanan flow control: Untuk mencegah data terlalu banyak dikirimkan pada satu waktu, yang akhirnya membuat “macet” jaringan internetwork IP, TCP mengimplementasikan layanan flow control yang dimiliki oleh pihak pengirim yang secara terus menerus memantau dan membatasi jumlah data yang dikirimkan pada satu waktu. Untuk mencegah pihak penerima untuk memperoleh data yang tidak dapat disangganya (buffer), TCP juga mengimplementasikan flow control dalam pihak penerima, yang mengindikasikan jumlah buffer yang masih tersedia dalam pihak penerima.
  • Melakukan segmentasi terhadap data yang datang dari lapisan aplikasi (dalam DARPA Reference Model)
  • Mengirimkan paket secara “one-to-one”: hal ini karena memang TCP harus membuat sebuah sirkuit logis antara dua buah protokol lapisan aplikasi agar saling dapat berkomunikasi. TCP tidak menyediakan layanan pengiriman data secara one-to-many.
TCP umumnya digunakan ketika protokol lapisan aplikasi membutuhkan layanan transfer data yang bersifat andal, yang layanan tersebut tidak dimiliki oleh protokol lapisan aplikasi tersebut. Contoh dari protokol yang menggunakan TCP adalah HTTP dan FTP [1].

Konfigurasi UDP
UDP, singkatan dari User Datagram Protocol, adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP. Protokol ini didefinisikan dalam RFC 768.

Karakteristik UDP
UDP memiliki karakteristik-karakteristik berikut:
  • Connectionless (tanpa koneksi): Pesan-pesan UDP akan dikirimkan tanpa harus dilakukan proses negosiasi koneksi antara dua host yang hendak berukar informasi.
  • Unreliable (tidak andal): Pesan-pesan UDP akan dikirimkan sebagai datagram tanpa adanya nomor urut atau pesan acknowledgment. Protokol lapisan aplikasi yang berjalan di atas UDP harus melakukan pemulihan terhadap pesan-pesan yang hilang selama transmisi. Umumnya, protokol lapisan aplikasi yang berjalan di atas UDP mengimplementasikan layanan keandalan mereka masing-masing, atau mengirim pesan secara periodik atau dengan menggunakan waktu yang telah didefinisikan.
  • UDP menyediakan mekanisme untuk mengirim pesan-pesan ke sebuah protokol lapisan aplikasi atau proses tertentu di dalam sebuah host dalam jaringan yang menggunakan TCP/IP. Header UDP berisi field Source Process Identification dan Destination Process Identification.
  • UDP menyediakan penghitungan checksum berukuran 16-bit terhadap keseluruhan pesan UDP.
UDP tidak menyediakan layanan-layanan antar-host berikut:
  • UDP tidak menyediakan mekanisme penyanggaan (buffering) dari data yang masuk ataupun data yang keluar. Tugas buffering merupakan tugas yang harus diimplementasikan oleh protokol lapisan aplikasi yang berjalan di atas UDP.
  • UDP tidak menyediakan mekanisme segmentasi data yang besar ke dalam segmen-segmen data, seperti yang terjadi dalam protokol TCP. Karena itulah, protokol lapisan aplikasi yang berjalan di atas UDP harus mengirimkan data yang berukuran kecil (tidak lebih besar dari nilai Maximum Transfer Unit/MTU) yang dimiliki oleh sebuah antarmuka di mana data tersebut dikirim. Karena, jika ukuran paket data yang dikirim lebih besar dibandingkan nilai MTU, paket data yang dikirimkan bisa saja terpecah menjadi beberapa fragmen yang akhirnya tidak jadi terkirim dengan benar.
  • UDP tidak menyediakan mekanisme flow-control, seperti yang dimiliki oleh TCP. Lapisan transpor atau transport layer adalah lapisan keempat dari model referensi jaringan OSI. Lapisan transpor bertanggung jawab untuk menyediakan layanan-layanan yang dapat diandalkan kepada protokol-protokol yang terletak di atasnya. Layanan yang dimaksud antara lain:
  • Mengatur alur (flow control) untuk menjamin bahwa perangkat yang mentransmisikan data tidak mengirimkan lebih banyak data daripada yang dapat ditangani oleh perangkat yang menerimanya.
  • Mengurutkan paket (packet sequencing), yang dilakukan untuk mengubah data yang hendak dikirimkan menjadi segmen-segmen data (proses ini disebut dengan proses segmentasi/segmentation), dan tentunya memiliki fitur untuk menyusunnya kembali.
  • Penanganan kesalahan dan fitur acknowledgment untuk menjamin bahwa data telah dikirimkan dengan benar dan akan dikirimkan lagi ketika memang data tidak sampai ke tujuan.
  • Multiplexing, yang dapat digunakan untuk menggabungkan data dari bebeberapa sumber untuk mengirimkannya melalui satu jalur data saja.
  • Pembentukan sirkuit virtual, yang dilakukan dalam rangka membuat sesi koneksi antara dua node yang hendak berkomunikasi. Contoh dari protokol yang bekerja pada lapisan transport adalah Transmission Control Protocol (TCP) dan User Datagram Protocol (UDP) yang tersedia dari kumpulan protokol TCP/IP [2].

Prinsip Kerja Dual Tone Multiple Frequency (Teknik DTMF) Dan Interfacenya dengan AT89C2051

Setelah beralih ke teknologi digital, cara meminta nomor sambungan telepon tidak lagi dengan cara memutar piringan angka tapi dengan cara memencet tombol-tombol angka. Cara ini dikenal sebagai Touch Tone Dialing, sering juga disebut sebagai DTMF (Dual Tone Multiple Frequency).

Dual Tone Multiple Frequency (DTMF) adalah teknik mengirimkan angka-angka pembentuk nomor telpon yang di-kode-kan dengan 2 nada yang dipilih dari 8 buah frekuensi yang sudah ditentukan. 8 frekuensi tersebut adalah 697 Hz, 770 Hz, 852 Hz, 941 Hz, 1209 Hz, 1336 Hz, 1477 Hz dan 1633 Hz, seperti terlihat dalam Gambar 1 angka 1 di-kode-kan dengan 697 Hz dan 1209 Hz, angka 9 di-kode-kan dengan 852 Hz dan 1477 Hz. Kombinasi dari 8 frekuensi tersebut bisa dipakai untuk meng-kode-kan 16 tanda, tapi pada pesawat telepon biasanya tombol ‘A’ ‘B’ ‘C’ dan ‘D’ tidak dipakai.


Kombinasi nada DTMF

Teknik DTMF meskipun mempunyai banyak keunggulan dibanding dengan cara memutar piringan angka, tapi secara tehnis lebih sulit diselesaikan. Alat pengirim kode DTMF merupakan 8 rangkaian oscilator yang masing-masing membangkitkan frekuensi ‘aneh’ di atas, ditambah dengan rangkaian pencampur frekuensi untuk mengirimkan 2 nada yang terpilih. Sedangkan penerima kode DTMF lebih rumit lagi, dibentuk dari 8 buah filter yang tidak sederhana dan rangkaian tambahan lainnya.
Beberapa pabrik membuat IC khusus untuk keperluan DTMF, diantaranya yang banyak dijumpai adalah MC145436 buatan Motorola, MT8870, MT8880 dan MT8888 buatan Mitel Semiconductor.

MC145436 dan MT8870 merupakan penerima DTMF, menerima sinyal dari saluran telepon kalau ternyata sinyal yang diterima tadi merupakan kombinasi nada yang sesuai dengan ketentuan DTMF, mengeluarkan kode biner sesuai dengan kombinasi nada tersebut.
MT8880 dan MT8888 merupakan penerima dan pengirim DTMF, selain bisa berfungsi sebagai penerima DTMF, bisa pula dipakai untuk membangkitkan nada DTMF sesuai dengan angka biner yang diterimanya.

Saluran data (data bus) dan sinyal-sinyal kontrol MT8880 dirancang sesuai dengan karakteristik mikrokontroler buatan Motorola (misalnya MC68HC11), sedangkan MT8888 disesuaikan dengan mikrokontroler buatan Intel (termasuk AT80C51). Tapi untuk AT89C2051 yang memang tidak punya saluran data (data bus) perbedaan kedua IC itu tidak ada artinya, mengingat saluran data dan sinyal kontrolnya disimulasikan lewat program.
 yang diterimanya.


Gambar 2. IC-IC DTMF buatan Mitel

Penerima DTMF dengan MT8870

Rangkaian penerima DTMF yang dibangun dengan AT89C2051 dan MT8870 terlihat pada Gambar 3. AT89C2051 dilengkapi Xtal Y2 (12 MHz) ditambah kapasitor C3 dan C4 membentuk rangkaian oscilator, dilengkapi pula dengan rangkaian reset yang dibentuk dengan C5 dan R4, kedua rangkaian ini merupakan rangkaian baku AT89C2051.
MT8870 dilengkapi dengan Xtal Y1 (3.579545 MHz), C2 dan R3 dipakai untuk menentukan waktu minimal untuk mengenali nada DTMF yang diterima, rangkaian penguat sinyal DTMF dibentuk dengan R1, C1 dan R2. Nilai-nilai komponen ini langsung diambil dari lembaran data (data sheet) MT8870 yang sudah disesuaikan dengan karakteristik sinyal DTMF pada umumnya.


Gambar 3. Rangkaian penerima DTMF dengan MT8870

StD (Delayed Steering - kaki 15 MT8870) merupakan output yang menandakan MT8870 mempunyai data DTMF baru yang bisa diambil. Saat tidak ada nada DTMF kaki StD=’0’, jika sinyal yang masuk MT8870 mengandung nada DTMF dan nada itu lamanya melebihi konstanta waktu yang ditentukan oleh C2 dan R3, StD akan menjadi ‘1’ memberitahu AT89C2051 bahwa ada data di D0..D3 (kaki 11 sampai dengan 14 MT8870)  yang bisa di ambil. Sinyal StD akan tetap bertahan =’1’ manakala nada DTMF  masih ada. Dalam Gambar 3 StD dipantau lewat kaki P1.7 AT89C2051.

TOE (Tristate Ouput Enable - kaki 10 MT8870) merupakan input untuk mengatur data di D0..D3, jika TOE=0 rangkaian output D0..D3 akan mengambang (high impedance state) sehingga data tidak bisa diambil. Jika D0..D3 tidak digabungkan dengan jalur data peralatan lainnya, kaki TOE bisa saja dihubungkan ke ‘1’.  Dalam Gambar 3 TOE di kendalikan dengan kaki P1.6 AT89C2051.

Program untuk membaca data DTMF melalui rangkaian Gambar 3 terlihat pada Potongan Program 1, bisa diterangkan sebagai berikut :
1.      Baris 1 dan 2 menyatakan hubungan kaki P1.6 dan P1.7 sesuai rangkaian Gambar 3.
2.      Selama sinyal NEWDATA masih ‘0’ AT89C2051 akan menunggu di baris 5
3.      Lolos dari baris 5 (berarti kaki StD MT8870 sudah ‘1’), dibuat RD=’1’ (kaki TOE MT8870) agar D0..D3 MT8870 tidak mengambang dan data MT8870 diambil melalui instruksi baris 7.
4.      Baris 8 dipakai untuk membuang bagian Akumulator A yang tidak terpakai dan hanya menyisakan A0..A3 sebagai data yang diterima dari MT8870.
5.      Baris 9 kembali me-‘nol’-kan kaki TOE MT8870 agar D0..D3 mengambang kembali.
6.      Baris 10 menunggu sampai nada DTMF bersangkut sudah tidak ada lagi.

Potongan Program 1 Membaca data MT8870
01:   RD      BIT P1.6
02:   NEWDATA BIT P1.7
03:   ;
04:   BacaMT8870:
05:   JNB   NEWDATA,*   ; Selama StD=’0’, tunggu dulu di sini
06:   SETB  RD ; Aktipkan TOE MT8870
07:   MOV   A,P1 ; Ambil data dari MT8870
08:   ANL   A,#$0F ; Yang diperlukan hanya A0..A3 saja
09:   CLR   RD ; Non-aktipkan TOE kembali
10:   JB    NEWDATA,*; Tunggu sampai nada DTMF sirna
11:   RET

Penerima/pengirim DTMF dengan MT8880
MT8880 mempunyai 2 register dengan 4 fungsi, untuk membedakan 2 register ini MT8880 dilengkapi dengan jalur alamat (address bus) RS0. Register pertama (RS0=’0’) dinamakan sebagai Register Data, angka DTMF yang diterima MT8880 didapat dengan cara membaca isi register ini (Receive Data Register), sedangkan angka DTMF yang ingin dikirim disimpan di register ini (Transmit Data Register). Register kedua (RS0=’1’) dinamakan sebagai Register Kontrol/Status, tata kerja MT8880 diatur dengan cara mengirim data ke register ini, dan keadaan MT8880 bisa dipantau dengan cara membaca isi register ini 





Gambar 4   Register-register MT8880

Diagram waktu proses pengambilan/pengiriman data dari/ke MT8880 terlihat  di Gambar 5, diagram waktu tersebut ditafsirkan sebagai berikut :
1.      selama proses berlangsung kaki CS (kaki 10) harus =’0’
2.      mula-mula ditentukan dulu nilai RS0 (kaki 11) sesuai dengan register yang dipilih
3.      kaki R/W (kaki 9) dipakai untuk menentukan arah data, R/W=’1’ menandakan proses pengambilan data dari MT8880 (bagian kiri Gambar 5)
4.      R/W=’0’ berarti pengiriman data ke MT8880 (bagian kanan Gambar 5).
5.      Perpindahan data antar mikrokontroler dan MT8880 terjadi pada saat sinyal PH2 (kaki 12) berubah dari ‘1’ menjadi ‘0’.
6.      Dalam proses pengambilan data, data bisa diambil setelah sinyal PH2 berubah dari ‘1’ ke ‘0’
7.      Dalam proses pengiriman data, data sudah dipersiapkan oleh mikrokontroler sebelum sinyal PH2 berubah dari ‘1’ ke ‘0’


Gambar 5 Diagram waktu pengambilan/pengiriman data dari/ke MT8880

Gambar 6 merupakan rangkaian penerima/pengirim DTMF dengan MT8880 yang dikendalikan AT89C2051, rangkaian ini bisa juga dipakai untuk IC DTMF MT8888, rangkaian tetap sama tapi program pengendalinya harus sedikit dirubah.

AT89C2051 dilengkapi Xtal Y2 (12 MHz) ditambah kapasitor C3 dan C4 membentuk rangkaian oscilator, dilengkapi pula rangkaian reset yang dibentuk dengan C5 dan R4.
MT8880 dilengkapi Xtal Y1 (3.579545 MHz), C2 dan R3 dipakai untuk menentukan waktu minimal untuk mengenali nada DTMF yang diterima, rangkaian penguat sinyal DTMF dibentuk dengan R1, C1 dan R2.  Nada DTMF dikeluarkan dari kaki TONE (kaki 8), C4, R6 dan C6 yang terhubung ke kaki ini membentuk rangkaian filter sederhana.

Nilai-nilai komponen ini langsung diambil dari lembaran data (data sheet) MT8880 yang sudah disesuaikan dengan karakteristik sinyal DTMF pada umumnya.
Jika dikehendaki, IRQ (Interrupt Request to MPU - kaki 13 MT8880) bisa dipakai sebagai output yang menandakan MT8880 mempunyai data DTMF baru yang bisa diambil. Dalam keadaan tidak ada nada DTMF kaki IRQ=’1’, jika sinyal yang masuk MT8870 mengandung nada DTMF dan nada itu lamanya melebihi konstanta waktu yang ditentukan oleh C2 dan R3, IRQ akan menjadi ‘0’ memberitahu mikrokontroler bahwa ada data di D0..D3 (kaki 14 sampai dengan 17 MT8870)  yang bisa di ambil. Sinyal IRQ akan tetap bertahan =’0’ manakala nada DTMF  masih ada. Sinyal IRQ ini biasa dipakai sebagai sinyal ‘interupsi’ bagi mikrokontroler.

Adanya data DTMF baru bisa pula dipantau dari Register Status. Setiap kali ada data baru bit 2 dari Register Status menjadi ‘1’, dan bit 2 akan kembali menjadi ‘0’ pada saat mikrokontroler membaca isi Register Status.

Dalam Gambar 6 kaki IRQ MT8880 tidak dipakai, dengan demikian adanya data DTMF baru akan dipantau dari bit 2 Register Status.

Kaki IRQ MT8880 bisa dipakai dengan cara menghubungkannya ke kaki INT0/P3.2 (kaki 6 AT89C2051, bisa juga dihubungkan ke kaki 7 – INT1/P3.3) yang digambarkan dengan garis putus dalam Gambar 6. Dengan cara ini adanya data DTMF baru dipantau oleh rangkaian interupsi di dalam IC AT89C2051, begitu ada data DTMF baru dari MT8880 AT89C2051 akan menjalankan program layanan interupsi yang harus diletakkan di memori program nomor 3.


Gambar 6. Rangkaian penerima/pengirim DTMF dengan MT8880

Program untuk mengendalikan MT8880 melalui rangkaian Gambar 6 terlihat pada Potongan Program 2.
1.      Baris 1 sampai 3 dipakai untuk menyatakan hubungan kaki P1.4, P1.5 dan P1.6 sesuai dengan rangkaian Gambar 6.
2.      Sesuai dengan fungsi-fungsi register di dalam IC MT8880, program pengendali MT8880 ini terdiri atas 4 buah sub-rutin yang masing-masing dinamakan sebagai KirimDTMF, AmbilDTMF, KirimKontrol dan LihatStatus, kegunaan masing-masing sub-rutin sesuai dengan nama yang diberikan.
3.      KirimDTMF dan AmbilDTMF bekerja dengan RS0=’0’ (baris 6 dan 23) sedangkan KirimKontrol dan LihatStatus bekerja dengan RS0=’1’ (baris 9 dan 27).
4.      KirimDTMF dan KirimKontrol bekerja dengan R/W=’0’ (baris 11) sedangkan AmbilDTMF dan LihatStatus bekerja dengan R/W=’1’ (baris 29).
5.      Pada semua subrutin, PH2 mula-mula dibuat =’1’ (baris 12 dan 30), dalam sub-rutin pengiriman data setelah data yang akan dikirim ke MT8880 siap, PH2 di-‘nol’-kan di baris 17. Dalam sub-rutin pengambilan data setelah data di ambil, PH2 di-‘nol’-kan di baris 34.
6.      Di bagian awal sub-rutin AmbilDTMF, sebelum mengambil data DTMF terlebih dulu menunggu bit 2 dari Register Status bernilai ‘1’ yang menandakan data di Register Data adalah data yang benar (baris 20 dan 21), selama MT8880 belum menerima data DTMF baru, AT89C2051 akan menunggu terus di kedua baris tersebut.

Potongan Program 2 Mengambil/mengirim data MT8880
01:    PH2  BIT P1.4
02:    RS0   BIT P1.5
03:    RW   BIT P1.6
04:    ;
05:    KirimDTMF:
06:    CLR   RS0 ; Register Data dipilih dengan RS=0
07:    SJMP  KirimKe8880
08:    KirimKontrol:
09:    SETB  RS0 ; Register Kontrol dipilih dengan RS=1
10:    KirimKe8880:
11:    CLR   RW ; Data dari AT89C2051 ke MT8880
12:    SETB  PH2 ; PH2 dibuat menjadi '1'
13:    ANL   P1,#$F0 ; Kirim A0..A3 tanpa mengganggu A4..A7
14:    ORL   P1,A
15:    NOP  ; Tunggu sebentar
16:    CLR   PH2 ; PH2 dari '1' menjadi '0', data diambil MT8870
17:    RET
18:    ;
19:    AmbilDTMF:
20:    ACALL LihatStatus ; Ada data DTMF baru di MT8880?
21:    JNB   A.2,AmbilDTMF ; Tidak ada, tunggu dulu
22:    BacaDTMF:
23:    CLR   RS0 ; Register Data dipilih dengan RS=0
24:    SJMP  AmbilDari8880
25:    ;
26:    LihatStatus:
27:    SETB  RS0 ; Register Status dipilih dengan RS=1
28:    AmbilDari8880:
29:    SETB  RW ; Data dari MT8880 ke AT89C2051
30:    SETB  PH2 ; PH2 dibuat menjadi '1'
31:    NOP ; Tunggu sebentar
32:    MOV   A,P1 ; Ambil data dari MT8880
33:    ANL   A,#$0F ; hanya A0..A3 saja yang diperlukan
34:    CLR   PH2 ; kembalikan PH2 kekeadaan semula (='0')
35:    RET
Penerima/pengirim DTMF dengan MT8888
Diagram waktu proses pengambilan/pengiriman data dari/ke MT8888 terlihat  di Gambar 7, diagram waktu tersebut ditafsirkan sebagai berikut :
1.      selama proses berlangsung kaki CS (kaki 10) harus =’0’
2.      mula-mula ditentukan dulu nilai RS0 (kaki 11) sesuai dengan register yang dipilih
3.      kaki RD (kaki 12) dipakai untuk mengambil data dari MT8888, dalam keadaan normal RD=’1’, selama proses pengambilan data RD menjadi ‘0’ dan data diambil dari MT8888 setelah RD berubah dari ‘0’ menjadi ‘1’ (bagian kiri Gambar 7)
4.      kaki WR (kaki 9) dipakai untuk mengirim data ke MT8888, dalam keadaan normal WR=’1’, selama proses pengiriman data WR menjadi ‘0’ dan data akan diterima oleh MT8888 pada saat WR berubah dari ‘0’ menjadi ‘1’ (bagian kanan Gambar 7)

Sinyal RD dan WR inilah yang membedakan MT8880 dan MT8888 (dalam MT8880 kedua sinyal sinyal itu diganti dengan PH2 dan R/W), perbedaan ini tidak mengakibatkan perbedaan rangkaian, tapi mengakibatkan perubahan program pengendali.
Program untuk mengendalikan MT8888 melalui rangkaian Gambar 6 terlihat pada Potongan Program 3.
1.      Program pengendali MT8888 ini serupa dengan program pengendali MT8880, perbedaannya terletak pada sub-rutin AmbilDari8888 dan KirimDTMF.
2.      Baris 1 sampai 3 dipakai untuk menyatakan hubungan kaki P1.4, P1.5 dan P1.6 sesuai dengan rangkaian Gambar 6.
3.      Sesuai dengan fungsi-fungsi register di dalam IC MT8880, program pengendali MT8880 ini terdiri atas 4 buah sub-rutin yang masing-masing dinamakan sebagai KirimDTMF, AmbilDTMF, KirimKontrol dan LihatStatus, kegunaan masing-masing sub-rutin sesuai dengan nama yang diberikan.
4.      KirimDTMF dan AmbilDTMF bekerja dengan RS0=’0’ (baris 5 dan 22) sedangkan KirimKontrol dan LihatStatus bekerja dengan RS0=’1’ (baris 9 dan 26).
5.      KirimDTMF dan KirimKontrol bekerja dengan WR=’0’ (baris 11), setelah data siap (baris 12 dan 13) WR di-‘satu’-kan di baris 15 agar data tersebut diambil oleh MT8888.
6.      AmbilDTMF dan LihatStatus bekerja dengan RD=’0’ (baris 28), setelah data MT8888 diambil (baris 30 dan 31) RD di-‘satu’-kan di baris 32.
7.      Di bagian awal sub-rutin AmbilDTMF, sebelum mengambil data DTMF terlebih dulu menunggu bit 2 dari Register Status bernilai ‘1’ yang menandakan data di Register Data adalah data yang benar (baris 20 dan 21), selama MT8888 belum menerima data DTMF baru, AT89C2051 akan menunggu terus di kedua baris tersebut.

Potongan Program 3 Mengambil/mengirim data MT8888
01:    RD    BIT P1.4
02:    RS0  BIT P1.5
03:    WR  BIT P1.6
04:    KirimDTMF:
05:    CLR   RS0 ; Register Data dipilih dengan RS=0
06:    SJMP  KirimKe8880
07:    ;
08:    KirimKontrol:
09:    SETB  RS0  ; Register Kontrol dipilih dengan RS=1
10:    KirimKe8888:
11:    CLR   WR ; Data dari AT89C2051 ke MT8880
12:    ANL   P1,#$F0 ; Kirim A0..A3 tanpa mengganggu A4..A7
13:    ORL   P1,A
14:    NOP ; Tunggu sebentar
15:    SETB  WR ; WR dari '1' menjadi '0', data diambil MT8870
16:    RET
17:    ;
18:    AmbilDTMF:
19:    ACALL LihatStatus   ; Ada data DTMF baru di MT8880?
20:    JNB   A.2,AmbilDTMF ; Tidak ada, tunggu dulu
21:    BacaDTMF:
22:    CLR   RS0  ; Register Data dipilih dengan RS=0
23:    SJMP  AmbilDari8880
24:    ;
25:    LihatStatus:
26:    SETB  RS0 ; Register Status dipilih dengan RS=1
27:    AmbilDari8888:
28:    CLR   RD ; Data dari MT8880 ke AT89C2051
29:    NOP  ; Tunggu sebentar
30:    MOV   A,P1 ; Ambil data dari MT8880
31:    ANL   A,#$0F ; hanya A0..A3 saja yang diperlukan
32:    SETB  RD ; kembalikan RD kekeadaan semula (='0')
33:    RET

Lebih jauh tentang MT8880 dan MT8888

Register Kontrol
Kapasitas Register MT8880/MT8888 hanya 4 bit,  namun ada 7 hal yang diatur melalui Register Kontrol, dengan demikian Register Kontrol dibagi menjadi dua bagian, seperti terlihat dalam Gambar 8. Saat pertama kali menyimpan data ke Register Kontrol selalu diterima oleh Bagian I Register Kontrol, jika RSEL (bit 3) = ‘1’ maka pengiriman data berikutnya akan diterima oleh Bagian II Register Kontrol.
Kegunaan dari masing-masing bit dalam Register Kontrol dibahas di bawah.



Gambar 8. Susunan bit dalam Register Kontrol

Register Status
Register Status dipakai untuk memantau keadaan dari MT8880/MT8888, kegunaan dari masing-masing bit dalam Register Kontrol dibahas di bawah.


Gambar 9. Susunan bit dalam Register Status
Pembangkit nada DTMF
MT8880/MT8888 membangkitkan nada DTMF sesuai dengan data yang diisikan ke Transmit Data Register. Selama TOUT (bit 0 di Register Kontrol bagian I) bernilai ‘1’ nada DTMF yang dibangkitkan MT8880/MT8888 disalurkan lewat kaki TONE (kaki 8).

Ada 2 cara untuk mengirimkan nada DTMF,
1.      Nada DTMF dibangkitkan dan dihentikan secara manual dengan cara berikut:
2.      Mula-mula TOUT bernilai ‘0’
3.      Transmit Data Register diisi angka yang akan dikirimkan
4.      TOUT dirubah menjadi ‘1’, menunggu beberapa saat sesuai dengan periode nada yang dikehendaki
5.      TOUT kembali di-‘nol’-kan selama periode tanpa nada yang dikehendaki
6.      Nada DTMF dibangkitkan secara mode burst seperti terlihat di Gambar 10. Pemakaian mode burst ini diatur sebagai berikut :
7.      BURST (bit 0 di Register Kontrol bagian II) dijadikan ‘1’
8.      Setelah nada DTMF burst dikirim, TDRE (bit 2 di Register Status) menjadi ‘1’. Jadi sebelum mengirim nada DTMF harus menunggu sampai nilai TDRE menjadi ‘1’.
9.      TDRE kembali menjadi ‘0’ dengan sendirinya setelah isi Register Status dibaca.


Gambar 10. Nada DTMF dalam mode burst

Meskipun tidak dipakai dalam pemakaian yang sesungguhnya, nada pada kaki TONE bisa dipilih berupa nada tunggal atau nada gabungan, hal ini diatur lewat Register Kontrol sebagai berikut :
1.      Dalam pemakaian normal S/D (bit 2 di Register Kontrol bagian II) bernilai ‘0’, nada yang dibangkitkan adalah gabungan dari 2 frekuensi standard DTMF. Kalau S/D bernilai ‘1’ maka nada yang dibangkitkan terdiri dari 1 frekuensi standard DTMF saja.
2.       Kalau S/D bernilai ‘1’, C/R (bit 3 di Register Kontrol bagian II) dipakai untuk menentukan kelompok frekuensi mana yang disalurkan ke kaki TONE. C/R=’0’ maka salah satu dari frekuensi 697 Hz, 770 Hz, 852 Hz, 941 Hz yang disalurkan, sedangkan kalau C/R=’1’ maka salah satu dari frekuensi 1209 Hz, 1336 Hz, 1477 Hz. 1633 Hz yang disalurkan

Penerima nada DTMF
Rangkaian penerima nada DTMF dalam IC MT8880/MT8888 selalu memantau sinyal yang masuk, jika sinyal tersebut mengandung nada DTMF dan nada itu lamanya melebihi konstanta waktu yang ditentukan oleh C2 dan R3 (lihat Gambar 6), maka RDRF (bit 2 di Register Status) akan menjadi ‘1’.

Keadaan di RDRF bisa diteruskan ke kaki IRQ/CP (kaki 15) sebagai sinyal permintaan interupsi ke mikrokontroler, hal ini dilakukan dengan cara men-‘satu’-kan IRQ (bit 2 di Register Kontrol bagian I). Dalam keadaan ini kaki IRQ/CP=’0’ kalau RDRF bernilai ‘1’ dan IRQ/CP=’1’ kalau RDRF bernilai ‘0’.  RDRF kembali menjadi ‘0’ dengan sendirinya setelah isi Register Status dibaca.

Selain dipakai untuk memantau nada DTMF, MT8880/MT8888 bisa dipakai untuk memantau nada panggil dan nada sibuk dari saluran telepon, hal ini diatur lewat CP/DTMF (bit 1 di Register Kontrol bagian I) sebagai berikut :
1.      CP/DTMF=’0’ MT8880/MT8888 menjadi pemantau nada DTMF, kaki IRQ/CP (kaki 15) dipakai membangkitkan sinyal interupsi ke mikrokontroler.
2.      CP/DTMF=’1’ kaki IRQ/CP (kaki 15) akan menyalurkan gelombang kotak yang diterima dari nada panggil dan nada sibuk.

Menentukan keadaan awal
Sebelum dipakai, dalam waktu 100 mili-detik setelah dihidupkan, keadan awal dari MT8880/MT8888 harus diatur dulu dengan menjalankan Potongan Program 4, yang disusun menurut petunjuk dari lembaran data MT8880/MT8888, dalam lembaran data tersebut tidak ada penjelasan mengapa harus dipersiapkan dengan cara tersebut, tapi maksud dari Potongan Program tersebut adalah me-‘nol’-kan isi semua register, termasuk Register Kontrol Bagian I dan Bagian II serta Register Status.
Setelah menjalankan Potongan Program 4, keadaan MT8880/MT8888 menjadi :
1.      Kaki TONE (kaki 8) tidak menyalurkan nada
2.      Bekerja sebagai pemantau DTMF, bukan memantau nada panggil/nada sibuk
3.      Kaki IRQ (kaki 15) tidak membangkitkan sinyal permintaan interupsi
4.      Data berikutnya yang dikirim ke Register Kontrol akan diterima oleh Bagian I, bukan oleh Bagian II
5.      Bekerja dalam mode manual, bukan mode burst
6.      Berkerja secara biasa bukan dalam keadaan TEST
7.      Membangkitkan nada DTMF biasa, yakni nada yang dibentuk dari campuran 2 frekuensi standar DTMF

Potongan Program 4 Menentukan keadaan awal MT8880/MT8888
01:   ACALL LihatStatus
02:   CLR   A
03:   ACALL KirimKontrol    ; Register Kontrol I = 0000
04:   CLR   A
05:   ACALL KirimKontrol    ; Register Kontrol I = 0000
06:   MOV   A,#%1000
07:   ACALL KirimKontrol    ; Pilih Register Kontrol II
08:   CLR   A
09:   ACALL KirimKontrol    ; Register Kontrol II = 0000
10:   ACALL LihatStatus     ; Register Status = 0000

Sub-rutin pengirim nada DTMF
Mode burst adalah mode yang dipakai dalam peralatan telepon tertentu, dalam pemakaian umum yang dipakai adalah mode manual, sub-rutin yang dianjurkan untuk pengiriman nada DTMF secara manual diperlihatkan dalam Potongan Program 5 yang bisa dijelaskan sebagai berikut :
1.      Nomor yang akan dikirimkan sebagai nada DTMF sebelumnya sudah disimpan di akumulator A, dan nada ini dibangkitkan di baris 1. Sesuai dengan keadaan awal yang diatur dengan Potongan Program 4 saat ini Kaki TONE (kaki 8) tidak menyalurkan nada.
2.      Nada disalurkan ke kaki TONE (kaki 8) di baris 3 dan 4.
3.      Kaki TONE akan menyalurkan nada selama WaktuTunda (baris 5), besarnya waktu tunda tergantung pada keperluan, bisa sekitar setengah detik.
4.      Nada di kaki TONE harus dimatikan secara manual (baris 6 dan 7)
5.      Sebelum meninggalan sub-rutin sekali lagi memanggil sub-rutin WaktuTunda, dengan maksud agar terjadi jeda waktu tanpa nada yang cukup (baris 8)

Potongan Program 5 Pengiriman nada DTMF secara manual
01:    KirimNadaDTMF:
02:    ACALL KirimDTMF    ; Bangkitkan nada DTMF sesuai isi Akumulator A
03:    MOV   A,#01         ; kalau bekerja dengan mode IRQ : MOV A,#%0101
04:    ACALL KirimKontrol  ; Saluran nada tersebut ke kaki TONE
05:    ACALL WaktuTunda   ; tunggu selama periode yang dikehendaki
06:    MOV   A,#00         ; kalau bekerja dengan mode IRQ : MOV A,#%0100
07:    ACALL KirimKontrol  ; hentikan nada di kaki TONE
08:    ACALL WaktuTunda   ; tunggu selama periode yang dikehendaki
09:    RET

Menerima data DTMF dengan mekanisme interupsi
Dalam Potongan Program 2 dan Potongan Program 3, saat mengerjakan sub-rutin AmbilDTMF (baris 19 Potongan Program 2 atau baris 18 Potongan Program 3), AT89C2051 menunggu RDRF (bit 2 Register Status) menjadi ‘1’, selama tidak ada nada DTMF AT89C2051 akan berputar terus di sini, dalam rancangan sistem tertentu keadaan ini bisa tidak menjadi masalah, tapi dalam rancangan yang lain hal ini tidak boleh terjadi. Dalam keadan kedua, penerimaan data DTMF tidak bisa dilakukan dengan sub-rutin AmbilDTMF, tapi dilakukan dengan mekanisme interupsi.

Mekanisme interupsi ini diatur dengan cara berikut :
1.      Kaki IRQ MT8880 dihubungkan ke kaki INT0/P3.2 (digambarkan dengan garis putus dalam Gambar 6).
2.      Mengaktipkan mekanisme interupsi lewat kaki INT0/P3.2 dengan instruksi SETB EX0 dan instruksi SETB EA, kedua instruksi ini dijalankan pada awal program setelah AT89C2051 di-reset.
3.      Dengan dua persiapan di atas, data DTMF baru di MT8880/MT8888 dipantau oleh rangkaian interupsi di dalam IC AT89C2051, begitu ada data DTMF baru AT89C2051 akan menjalankan program layanan interupsi yang harus diletakkan di memori program nomor 3 (baris 1 Potongan Program 6).
4.      AT89C2051 hanya menyediakan 8 byte memori program untuk melayani interupsi INT0 (memori program nomor 3 sampai 10), karena program untuk membaca data DTMF ini tidak mungkin diselesaikan hanya dengan 8 byte, maka rutin layanan interupsi INT0 dialihkan ke MelayaniINT0 (baris 2 Potongan Program 6).
5.      Rutin layanan interupsi INT0 yang sesungguhnya terlihat pada Potongan Program 7. Rutin ini bisa diletakkan dimana saja, sehingga dalam Potongan Program 7 tidak diperlukan instruksi ORG. Sebagai rutin layanan interupsi, Potongan Program 7 diakhiri dengan instruksi RETI (baris 12).
6.      Hasil pembacaan data DTMF disimpan di memori data yang dinamakan sebagai PenampungDTMF (baris 9), pemakaian memori data ini dipersiapkan di baris 2.
7.      Proses pembacaan data DTMF yang sesungguhnya, menggunakan sub-rutin BacaDTMF yang merupakan bagian dari Potongan Program 2 (baris 22) dan Potongan Program 3 (baris 21), dalam sub-rutin BacaDTMF nilai Akumulator A maupun Register Status PSW akan berubah, dengan demikian A dan PSW disimpan dulu ke stack (baris 5 dan 6) dan diambil kembali dari stack (baris 10 dan 11).

Potongan Program 6 Menghubungkan Interupsi INT0 ke Rutin Layanan INT0
01:    ORG 3 ; harus diletakan di memori program no 3!
02:    LJMP  MelayaniINT0 ; rutin layanan INT0 ada di MelayaniINT0 Potongan Program 7
         Rutin Layanan INT0
01:    .data
02:     PenampungDTMF  DS 1
03:    .code
04:    MelayaniINT0:
05:    PUSH  PSW ; Simpan dulu PSW dan A ke Stack
06:    PUSH  A
07:    LCALL LihatStatus ; me-‘nol’-kan isi Register Status
08:    LCALL BacaDTMF ; Ambil data DTMF tanpa lihat Reg Status
09:    MOV   PenampungDTMF,A ; simpan data DTMF ke PenampungDTMF
10:    POP   A ; Ambil kembali A dan PSW dari Stack
11:    POP   PSW
12:    RETI
:10 :11 ;12 ;13 :14 ;15 :16 :17 :18 :19 :20 :21 :22 :23 :24 :25 :26 :27 :28 :29 :30 :31 :32