KOMUNIKASI SERIAL PADA 8051

BAB 10

Sasaran

 

Setelah anda menamatkan bab ini , diharapkan anda dapat :

ð          Membedakan dan membandingkan komunikasi serial dan parallel

ð          Menyebutkan kelebihan komunikasi serial dibanding parallel

ð          Menjelaskan protocol komunikasi serial

ð          Menbedakan komunikasi Synchronous dan Asynchronous

ð          Membedakan transmisi half- dan full-duplex

ð          Menjelaskan proses dari pembingkaian data (framing)

ð          Membedakan data transfer rate dan bps rate

ð          Menjelaskan standar RS232

ð          Menerangkan penggunaan MAX232

ð          Menghubungkan 8051 pada konektor RS232

ð          Membahas Baud Rate pada 8051

ð          Menjelaskan peralatan komunikasi serial pada 8051

ð          Memprogram 8051 untuk komunikasi data serial

 

 

Transfer data komputer dilakukan dengan dua cara: parallel dan serial. Dalam transfer data parallel, 8 buah (atau lebih) saluran (kabel) bersama-sama digunakan untuk men-transfer data ke peralatan lain, yang jaraknya hanya beberapa centimeter. Contoh tranfer data parallel adalah printer jarum (kuno) dan harddisk (IDE/PATA) yang mana menggunakan kabel yang berisi beberapa kabel di dalamnya. Namun, hubungan parallel jenis ini walaupun dapat mentransfer data dengan cepat, jarak menjadi masalah karena tidak mungkin menggunakannya dengan jarak yang panjang atau jauh. Dan untuk mentransfer data dengan jarak yang sangat jauh, maka metode serial kemudian digunakan. Dalam komunikasi serial ini, data dikirim bit demi bit. Komunikasi serial pada 8051 adalah topik dari bab ini. 8051 memiliki kemampuan komunikasi serial yang sudah ada di dalamnnya, sehingga dapat mentranfer data dengan cepat hanya dengan menggunakan beberapa kabel saja.

Dalam bab ini kita pertama mendiskusikan dasar-dasar komunikasi serial. Pada SubBAB 10.2, menghubungkan 8051 ke konektor RS232 melalui chip driver MAX232 adalah bahasan kita. Sedang pemrograman komunikasi serial pada 8051 akan kita diskusikan pada SubBAB berikutnya.

 



 

SubBAB 10-1: DASAR-DASAR KOMUNIKASI SERIAL

 

Saat dimana komputer berkomunikasi dengan dunia luar, semua dilakukan dengan data berukuran byte. Dan hal sama, seperti printer, informasi data secara langsung dilakukan melalui BUS data 8-bit ke BUS data 8-bit milik printer. Hal ini dapat bekerja selama jarak tidak sangat jauh, mengingat jarak kabel yang panjang akan mengurangi (mengganggu) kualitas sinyal. Kabel yang buruk dan sangat panjang akan membuat logika palsu, dan data menjadi berubah tidak seperti semestinya. Disamping itu, hubungan data 8-bit menjadi sangat mahal, karena dibutuhkan kualitas kabel yang sangat baik dan jumlah lebih banyak. Untuk alasan ini, komunikasi serial digunakan untuk mentransfer data antara dua system dengan jarak yang sangat jauh mulai dari beberapa puluh meter sampai ribuan kilometer. Gambar 10-1 menampilkan bagan dari transfer data serial dan parallel.

 

Gambar 10-1: Transfer Data Serial dan Parallel

 

Komunikasi Serial dapat digunakan untuk menggantikan Komunikasi Parallel jalur data 8-bit dengan baik. Tidak saja memakan biaya yang lebih murah, namun dapat digunakan untuk menghubungkan dua peralatan yang sangat jauh. Misalnya menumpang pada kabel telpon.

Agar komunikasi serial dapat bekerja dengan baik, data byte harus diubah ke dalam bit-bit serial menggunakan peralatan yang disebut shift register parallel-in serial-out, kemudian data dikirimkan hanya dengan satu jalur data saja. Hal yang serupa dikerjakan pada penerima, dimana penerima harus mengubah bit-bit serial yang diterimanya menjadi data byte yang persis seperti data semula pada pengirim, dengan menggunakan shift register serial-in parallel-out. Tentu saja jika data serial tersebut dikirim menumpang jalur telpon, maka dibutuhkan peralatan pengubah status digital 0s atau 1s menjadi sinyal suara audio. Peralatan seperti ini kemudian disebut modem (modulator/demudulator). Modulator sebagai pengubah sinyal digital menjadi sinyal audio, sebaliknya Demodulator adalah sebagai mengubah kembali sinyal audio menjadi sinyal digital.

Pada jarak yang sangat dekat, kita dapat menggunakan komunikasi serial sederhana dan tidak perlu modulasi. Seperti yang dapat kita lihat pada hubungan komputer kita dengan keyboard atau mouse.

 

Komunikasi data serial mengenal dua buah metode, yaitu synchronous dan asynchronous. Metode sychronous mengirimkan datanya beberapa byte atau karakter (atau disebut blok data) sebelum meminta konfirmasi apakah data sudah diterima dengan baik atau tidak. Sementara metode asynchronous data dikirim satu byte setiap pengiriman. Biasanya tidak dibutuhkan konfirmasi menerimaan data. Dari kedua jenis metode tersebut dapat dipilih dan dilakukan lewat program. Tentu saja dibutuhkan program yang baik dan teliti untuk melakukannya. Namun dewasa ini proses pengiriman data serial tersebut sudah dilakukan oleh sebuah chip tersendiri (Hardware). Salah satu chip disebut UART (Universal Asynchronous Reciever Transmiter) dan satunya lagi disebut USART (Universal Synchronous Asynchronous Reciever Transmiter). Dalam protokol berbeda, sychronous memerlukan sinyal tambahan yang digunakan untuk men-sychron-isasi setiap denyut dari proses transfer. Pada chip 8051 kita, ternyata sudah dilengkapi dengan UART, yang mana akan kita diskusikan lebih jauh pada SubBAB 9-3.

 

Gambar 10-2: Transfer Data Simplex, Half-, dan Full-Duplex.

 

 

Komunikasi Half- dan Full-Duplex

 

Dalam trnasimisi data, jika data dapat dikirim dan diterima, ini dinamakan transmisi duplex. Sangat berbeda dengan transmisi simplex, misalnya pada printer, dimana printer hanya bisa menerima data. Tranmisi duplex dapat digolongkan menjadi half-duplex dan full-duplex, tergantung pada bisa tidaknya transfer data dua arah sekaligus. Jika data dikirmkan satu arah saja, maka dinamakan half-duplex. Jika data dapat menuju dua arah dalam waktu yang bersamaan, disebut full-duplex. Tentu saja, full-duplex membutuhkan penghubung dua kabel yang digunakan sebagai saluran datanya, satu kabel untuk mengirim data, satu kabel untuk menerima data, dan satu lagi untuk ground yang digunakan bersama. Lihat gambar 10-2

 

 

Komunikasi serial Asynchronous dan Data Framing

 

Setiap data yang diterima pada komunikasi serial adalah memiliki sinyal 0s dan 1s. Hal ini akan sangat sulit untuk menentukan sebuah data kecuali antara pengirim dan penerima sepakat dengan protokol, yaitu bagaimana data dikemas (packet), berapa bit yang digunakan untuk satu karakter, dan kapan data tersebut mulai dan selesai dikirim.

 

 

Bit Start dan Bit Stop

 

Komunikasi data serial Asynchronous sekarang sudah digunakan demikian luas untuk transmisi yang berorientasi karakter, sementara metode Synchronous digunakan untuk transmisi yang berorientasi blok. Pada mode Asynchronous, setiap karakter ditempatkan berada diantara bit start dan bit stop. Bit start selalu satu bit, tapi stop bit bisa satu bit atau dua bit. Start bit selalu 0 (low) dan stop bit selalu 1 (high). Contohnya, lihat pada gambar 10-3 yang dimana karakter A (01000001 biner) dikemudian dibingkai (dikurung) oleh start bit dan satu stop bit. Harap dicatat, LSB dikirim terlebih dahulu.

 

gambar 10-3: Pembingkaian ASCII “A” (41h)

 

Ingat pada gambar 10-3 saat tidak transfer, sinyal (jalur kabel) selalu dalam keadaaan 1 (high), yang disebut mark (tanda). Sedang 0 (rendah) diartikan space. Bahwa transmisi pertama dimulai dengan start bit, yang kemudian diikuti oleh D0, LSB, dan diikuti oleh bit-bit yang lain, sampai MSB(D7), dan akhirnya bit stop yang menanndakan akhir dari karakter “A”.

 

Pada komunikasi serial Asynchronous, peralatan dan modem dapat diprogram untuk menggunakan lebar data 7 atau 8-bit. Tentu saja ditambah dengan Stop bit. Dahulu, system karakter ASCII masih terbatas pada data 7-bit, namun sekarang ASCII extended sudah lazim menggunakan lebar data 8-bit. Pada peralatan kuno, dengan komponen-komponen yang lambat pula, dibutuhkan stop bit yang agak panjang, hal ini dimaksudkan untuk memeberi kesempatan peralatan untuk menangani data yang telah diterimanya, dan untuk mempersiapkan diri untuk menerima byte berikutnya. Namun sekarang modem PC kita dewasa ini biasanya hanya menggunakan satu bit stop. Jika kita hitung, dengan menggunakan satu bit stop total kita memiliki 10-bit untuk setiap karakter 8-bit. Dengan kata lain setiap karakter 8-bit dikirim bersama-sama start dan stop bit sehingga total menjadi 10-bit, yang artinya ada proses transfer lebih panjang 20% setiap karakternya.

 

Pada system yang sangat mementingkan integritas data yang disimpan, maka ditambahkanlah bit paritas kepada bingkai data tersebut. Maksudnya untuk setiap karakter 8-bit kita masih menambahkan bit paritas disamping bit start dan bit stop. Sehingga total adalah 11-bit. Adapun bit paritas adalah bit yang menunjukkan bahwa data yang dimaksud adalah memiliki jumlah bit 1s (high) ganjil atau genap. Bit paritas adalah bit di luar data yang bersangkutan atau merupakan tambahan. Chip UART khusus biasanya sudah dilengkapi dengan keperluan paritas tersebut secara hardware. Bahkan ada beberapa pilihan untuk penanganan paritas ini, misalnya odd-, even- dan no-parity.

 

 

Data tranfer rate

 

Kecepatan tranfer data pada komunikasi data serial diukur dalam satuan BPS (bits per second). Sebutan terkenal lainnya adalah baud rate. Namun Baud dan bps tidak serta merta adalah sama. Hal ini mengacu kepada fakta bahwa baud rate adalah terminology modem dan diartikan sebagai perubahan signal dalam satuan bit signal setiap detik. Sedang data tranfer rate penamaannya mengacu pada jumlah bit dari byte data yang ditransfer setiap detik.

 

Sementara itu kecepatan transfer data (data transfer rate) pada komputer tergantung pada jenis komunikasi yang diberlakukan atasnya. Seperti contoh, komputer PC-IBM model kuno dapat mentransfer data mulai dari 100 s/d 9600 bps. Namun pada saat sekarang kecepatan komunikasi serial menjadi sangat pesat. 56.000 bps kemudian menjadi standar kecepatan pada modem. Namun para perancang komputer sepakat untuk membatasi kecepatan pada komunikasi serial Asynchronous hanya setinggi 100.000 bps. Untuk kecepatan yang lebih tinggi mode Synchronous kemudian menjadi pilihan.

 

Pada 8051 kita hanya membahas tentang masalah komunikasi serial dengan mode Asynchronous yang sudah ada pada chip tersebut.

 

 

Standar RS232

 

Untuk mendapatkan keserba-cocokan (compatibility) dari beberapa peralatan komunikasi data dari berbagai pabrik, diciptakanlah standar tatap-muka (interfacing) yang dinamakan RS232. Standar ini dipublikasikan oleh EIA (Electronics Industries Association) pada 1960. Dan pada 1963 standar itu dimodifikasi dengan nama RS232A. RS232B dan RS232C ditetapkan pada tahun masing-masing 1965 dan 1969. Pada buku ini kita akan mengacu pada standar RS232 paling dasar. Sekarang Standar RS232 masih menjadi standar dunia mengenai standar tatap-muka I/O komunikasi serial. Bahkan standar ini masih dipakai dan digunakan pada komputer PC kita.

Karena standar ini sudah dupublikasikan jauh lebih lama dari standar TLL, standar yang diciptakan saat komputer masih dibuat dari tansistor, relay dan tabung hampa, sehingga standar ini sama sekali tidak kompatibel dengan standar keluarga logika TTL yang diciptakan belakangan. Pada RS232, 1s (high) direpresentasikan dengan tegangan -3 s/d -25V, dan 0s (low) direpresentasikan sebagai +3 s/d +25V. Sedang diantara -3 dan +3V dianggap sebagai status mengambang dan tidak dianggap. Atas alasan ini, untuk menghubungkan 8051 yang ber-standar TTL dengan komputer (atau alat lain) yang menggunakan RS232, kita harus menggunakan peralatan tambahan misalnya dengan chip MAX232 untuk mengkonversi level TTL ke RS232 dan level RS232 ke level TTL.

 

Walaupun RS232 sudah mulai ditinggalkan, kita masih bisa berbangga bahwa standar ini masih dijadikan standar dasar bagi standar-standar yang lebih maju, misalnya USB, SATA, Packet Data dll. Sehingga sangat bermanfaat mempelajari standar RS232 ini sebelum mempelajari standar yang lainnya.

 

Gambar 10-5: konektor RS232 DB-9

 

Table 10-2 Sinyal DB-9 pada IBM-PC

Pin   Penjelasan

1                    DCD = Data Carrier Detect

2                    RcD = Received Data

3                    TxD = Transmited Data

4                    DTR = Data Terminal Ready

5                    GND = Ground

6                    DSR = Data set Ready

7                    RTS = Request To Send

8                    CTS = Clear To Send

9                    RI  = Ring Indicator

Shield = boleh dihubungkan pada Ground atau Chassis.

Di sini adalah bahasan mengenai konektor RS232 DB-25, dimana tidak saya tulis disini karena sudah tidak relevan lagi

 

Lebih dalam dengan Sinyal-sinyal Jabat-Tangan RS232

 

Untuk menjamin terjadinya sebuah transfer data yang cepat dan Realible antara 2 peralatan, lalu lintas data harus dikoordinasi dengan baik. Tidak seperti printer yang selalu mencetak setiap karakter yang diterimanya. Namun dalam komunikasi serial, bisa saja peralatan tidak memiliki lagi tampungan data yang diterimanya. Sehingga dia harus memberitahukan PC untuk tidak lagi mengirim data. Hingga modem selesai mengerjakan semua tugasnya. Dan kembali memberitahukan PC untuk kembali mengirim data berikutnya setelah modem siap.
Bahasan di bawah ini adalah sekedar referensi, karena tidak didukung oleh UART pada 8051. Namun jika hal yang semacam itu menjadi penting, maka kita dapat menggunakan beberapa I/O port untuk digunakan dalam keperluan HnadShaking tersebut.

DTR (Data Terminal Ready)

Saat Komputer kita pertama dinyalakan dan Operating System-nya telah siap untuk melakukan tugasnya, dia kemudian mengirimkan sinyal DTR untuk memberitahukan pada peralatan yang mungkin terhubung dengannya (misalnya modem), bahwa komputer telah siap berkomunikasi. Jika terjadi masalah dengan port COM, maka sinyal ini tidak diaktifkan. Sinyal ini adalah aktif rendah.

DSR (Data Set Ready)

Seperti juga Komputer dengan DTR-nya, saat modem pertama dihidupkan, dan siap berkomunikasi dia akan menyalakan DSR ini menuju ke komputer. Sehingga  komputer dapat segera tahu bahwa saat itu ada modem yang terhubung dan siap untuk digunakan. Ini adalah sinyal dari modem ke PC, dan berjenis aktif low. Sinyal ini tidak akan dikeluarkan modem, jika modem dalam masalah atau rusak.

RTS (Request To Send)

Saat Komputer kita hendak mengirimkan data kepada device seperti modem, maka komputer akan mengirimkan RTS ini menuju modem terlebih dahulu. Hal tersebut agar modem tahu, bahwa akan ada pengiriman data dari komputer kepadanya, dan modem segera bersiap-siap untuk menerima data. RTS adalah sinyal aktif low dari komputer ke device seperti modem.

CTS (Clear To Send)

Dalam merespon RTS, ini modem menyalakan sinyal CTS. Ceritanya begini.. Saat komputer mengirimkan RTS, maka modem bersiap-siap untuk menerima data, dan jika ruang untuk menerima data tersebut sudah ada dan cukup, baru sinyal tersebut dikirimkan pada Komputer untuk segera mengirimkan datanya. Ingat untuk flowkontrol Hardware, maka komputer tidak akan mengirimkan datanya jika belum ada sinyal dari modem ini.

DCD (Data Carrier Detect)

Ini adalah sinyal yang dikeluarkan oleh modem kepada PC, untuk menginformasikan PC bahwa modem mendeteksi adanya carrier yang valid dan adanya kontak / hubungan dengan modem lain nun jauh di sana. (Biasanya sinyal ini diberikan setelah komunikasi dengan modem lain tersambung).

RI (Ring Indikator)

Sinyal ini diberikan oleh modem kepada komputer untuk menginfomasikan bahwa saluran telah dihubungi dan berbunyi. Sinyal ini muncul bersamaan saat telfon berbunyi. Sinyal ini seperti saat telfon kita sedang tidak digunakan, dan seseorang dari sana menelfon,lalu pesawat telfon kita berbunyi, meminta kita untuk segera mengangkatnya, dan berkomunikasi. Dalam modem bunyi tersebut digantikan dengan sinyal. Saat komputer kita dalam keadaan mati, setting BIOS dalam komputer memungkinkan Komputer untuk hidup sendiri saat adanya panggilan semacam ini.

Port COM pada PC-IBM dan sejenisnya

 

Komputer PC-IBM dan sejenisnya yang berbasis mikro prosesor x86 (8086, 186, 286, 386, 486, dan pentium) memiliki dua buah (setidaknya satu) port COM. Kedua port COM memiliki

konektor standar RS232. Konektor serial DB-25 sudah tidak ada lagi sekarang. Kalaupun kita menjumpai DB-25 itu adalah port printer, yang juga sudah mulai ditinggalkan karena printer terbaru lebih suka menggunakan USB. Port-port COM tersebut diberi nama dengan COM1 dan COM2. Biasanya port COM ini sekarang digunakan untuk modem (modem sekarang juga sudah banyak menggunakan USB). Kita dapat bereksperimen dengan menghubungkan 8051 pada COM tersebut.

 

Setelah sedikit banyak memahami landasan dasar dari komunikasi serial kita sudah siap untuk mengupas tuntas peralatan serial pada 8051.

 

 



 

 

SubBAB 10.2: KONEKSI 8051 PADA RS232

 

Pada sub bab ini kita akan mambahas detil wujud dari koneksi 8051 ke konektor RS232. Seperti yang kita ketahui bahwa standar RS232 tidak kompatibel dengan standar TTL. Sehingga membutuhkan peralatan lain semisal MAX232 untuk dapat menghubungkan kedua jenis standar tersebut. RS232 mengkonversi standar RS232 ke standar TTL dan begitu pula sebaliknya.

 

Pin RxD dan TxD pada 8051

 

8051 memiliki dua pin yang digunakan secara khusus untuk mengirim dan menerima data secara serial. Kedua pin tersebut dinamakan TxD (Transmit Data) dan RxD (Recieve Data) yang merupakan bagian dari port 3 (P3.0 dan P3.1). Pin 11 pada 8051 (P3.1) ditetapkan sebagai TxD, pin 10 (P3.0) digunakan sebagai RxD. Tentu saja pin-pin tersebut adalah standar TTL. Kita harus menggunakan line driver seperti MAX232 untuk menghubungkan dua standar tersebut.

 

MAX232

 

Karena RS232 sekarang tidak compatible lagi dengan microprosesor modern, kita membutuhkan line driver agar data yang dikirim MikroKontroller dengan standar TTL dapat diterima dengan baik oleh alat yang berstandar RS232. Demikian juga sebaliknya. Dengan menggunakan MAX232 pekerjaan kita akan lebih mudah karena MAX232 menggunakan satu sumber daya 5 volt, yang bisa langsung diambilkan dari sumber data 8051, dan tidak dibutuhkan dua buah sumber daya seperti pada system kuno. MAX232 memiliki dua pasang line driver, 2 untuk pemngiriman, dan 2 untuk penerimaan. MAX232 hanya membutuhkan 4 buah kapasitor dengan nilai antara 1 – 22 uF. Namun beberapa aplikasi yang telah ada, menggunakan nilai 22 uF.

 

gambar : Rangkaian Line Driver RS232 dengan chip MAX232

 

 

Line Driver RS232 sederhana

 

Kita masih dimungkinkan utuk membangun Line Driver sederhana yang dapat menghubungkan level TTL dan level RS23. Satu-satunya yang menjadi kelebihan dari line driver ini adalah dapat dibangun dengan harga yang sangat murah.

 

gambar : Rangkaian Line Driver RS232 sederhana

 

Dalam beberapa pengujian Line Driver ini memang tidak sebaik MAX232. Namun untuk operasi-operasi sederhana yang membutuhkkan komunikasi serial sesekali seperti simulator atau downloader, kita dapat menjatuhkan pilihan pada line driver jenis ini dengan unjuk kerja yang memuaskan. Namun untuk komunikasi yang terus menerus dengan kecepatan tinggi, dan dengan sangat mementingkan keakuratan data sebaiknya gunakan MAX232 karena chip tersebut memiliki ketahanan dan unjuk kerja lebih baik.

 



 

SubBAB 10.3: Pemrograman komunikasi serial 8051

 

Pada sub BAB ini kita akan membahas register-register komunikasi serial pada 8051, dan memperlihatkan bagaimana memprogramnya untuk dapat mengirimkan dan menerima data secara serial. Mengingat Komputer PC banyak digunakan untuk berhubungan secara serial dengan system berbasis 8051, kita sedikit banyak akan mempelajari cara menghubungkan 8051 pada konektor COM dari Komputer PC. Untuk menghubungkan keduanya tanpa adanya error, maka 8051 harus dapat menghasilkan baud rate yang didukung oleh BIOS Komputer PC seperti yang diperlihatkan pada tabel 11-1. Kita dapat mengatur baud rate yang digunakan komputer PC melalui program “Terminal.exe” atau Hiper Terminal atau “hypertrm.exe”. Beberapa program support dengan baud rate yang lebih tinggi dari yang ditampilkan pada tabel 10-1 tersebut.

 

Catatan dari penterjemah: Jika anda hendak membuat program serial dalam semua platform Windows(tm) menggunakan Delphi(tm), dan kebingungan menemukan modul serial, lihat Membangun komunikasi serial dengan Delphi, untuk membantu anda membuat program serial canggih dengan Delphi.

 

Contoh 10-1

 

Dengan XTAL = 11.0592 MHz, cari nilai TH1 yang dibutuhkan untuk membentuk baud rate.

(a) 9600    (b) 2400    (c) 1200

 

Jawaban:

 

Dengan XTAL = 11.0592 MHz, kita akan mendapatkan :

 

Frekuensi Siklus Mesin 8051 = 11.0592 MHz / 12 = 921.6 kHz, dan 921.6 kHz / 32 = 28.800 Hz adalah frekuensi yang dihsalikan oleh UART menuju Timer-1 untuk membentukbaud rate.

 

(a) 28.800 /  3 = 9600    dimana  -3 = FD (hex) adalah isi TH1

(b) 28.800 / 12 = 2400    dimana -12 = F4 (hex) adalah isi TH1

(c) 28.800 / 24 = 1200    dimana -24 = E8 (hex) adalah isi TH1

 

Harap dicacat pembagi (/32) oleh UART adalah pembagi asli setelah raset. Kita dapat mengubah nilai ini seperti yang dijelaskan pada akhir bab ini.

 

 

 

 

 

Baud Rate pada 8051

 

8051 mengirim dan menerima data secara serial pada berbagai baud rate yang berbeda. Baud rate pada 8051 dapat diprogram. Hal ini dapat dikerjakan dengan bantuan Timer-1 (yang sudah kita bahas). Sebelumnya kita harus merujuk hubungan antara kristal osilator dengan baud rate pada 8051.

 

Pada bab sebelumnya, 8051 membagi frekuensi osilator dengan 12 untuk mendapat frekuensi siklus mesin. Jika kita menggunakan XTAL = 11.0592 MHz, kita akan mendapat siklus mesin 921.6 kHz (11.0592 MHz / 12 = 921.6 KHz). Peralatan komunikasi serial masih membagi siklus frekuensi siklus mesin tersebut dengan 32 sebelum kemudian diberikan kepada Timer-1 untuk menghasilkan baud rate. Sehingga 921.6 kHz bagi 32 hasilnya 28.800 Hz. Dengan berdasar pada nilai baud rate dasar 28.800 Hz tersebut, kita dapat mencari nilai pada Timer-1 untuk mendapatkan baud rate yang kita inginkan. Saat digunakan sebagai penghasil baud rate, Timer-1 harus diprogram dalam mode-2, 8-bit, auto reload. Dan untuk mendapatkan baud rate yang cocok dengan baud rate yang ada pada PC maka kita harus melihat pada tabel 10-3 dan 10-4. Sedang Contoh 10-1 menunjukkan bagaimana menguji data pada tabel 10-3.

 

 

Register SBUF

 

SBUF adalah register 8-bit yang digunakan secara khusus untuk komunikasi serial. Agar data dapat dikirim memlalui pin TxD, data byte harus diberikan pada register SBUF. Hal yang serupa, SBUF berisi data byte saat 8051 menerima data dari pin RxD. SBUF dapat diakses seperti register lainnya pada 8051. Lihat contoh berikut tentang bagaimana register SBUF ini diakses.

 

      MOV SBUF,#’D’           ;isi SBUF=44h, ASCII untuk “D”

      MOV SBUF,A              ;salin/Letakkan isi Acc pada SBUF

      MOV A,SBUF              ;Salin/ambil isi SBUF ke Acc

 

Pada saat data byte dituliskan pada SBUF, data itu kemudian langsung dibingkai (framed) dengan bit start dan bit stop, dan selanjutnya dikirim secara serial melalui pin TxD. Sebaliknya, saat bit-bit diterima oleh 8051 nelalui pin RxD sampai pada bit stop, 8051 akan membuat bit-bit bingkai, dan kemudian menaruh data yang sebenarnya pada SBUF.

 

 

Register SCON (Serial Control)

 

Register SCON adalah register 8-bit yanng digunakan untuk memprogram bit start dan bit stop pada pembingkaian data, dan hal lainnya.

 

 

 

SM0    SCON.7    Pemilih mode port serial

SM1    SCON.6    Pemilih mode port serial

SM2    SCON.5    Digunakan untuk komunikasi multi prosesor

REN    SCON.4    Untuk dapat melakukan penerimaan.

TB8    SCON.3    Tidak banyak digunakan

RB8    SCON.2    Tidak banyak digunakan

TI     SCON.1    Transmit Interupt Flag. Set oleh hardware dan clear oleh software.

RI     SCON.0    Receive Interupt Flag. Set oleh hardware dan clear oleh software.

 

 

gambar 10-9 Register Serial Port Control (SCON, Bit Addresseble)

 

SM0,SM1

 

SM0 (Serial Mode 0) dan SM1 (Serial Mode 1) adalah masing-masing D7 dan D6 dari register SCON. Kedua bit tersebut menentukan pembingkaian data dengan mengatur jumlah bit per karakter, bit-bit start, dan stop.

 

      SM0   SM1  

      0     0     Serial Mode-0

      0     1     Serial Mode-1, 8-bit data, 1 stop bit, 1 start bit

      1     0     Serial Mode-2

      1     1     Serial Mode-3

 

Dari 4 mode serial, hanya mode-1 yang paling menarik perhatian kita. Penjelasan lebih lanjut tentang mode lainnya akan anda temui di Lampiran A.3. Mode-mode selain mode-1 tersebut sudah jarang sekali digunakan. Jika register SCON diatur pada mode-2, pembingkaian datanya adalah 8-bit, 1 stop bit, dan 1 start bit, yang mana hal ini masih kompatible dengan PC-IBM. Hal penting lainnya adalah, serial mode-1 ini adalah memiliki baud rate variable yang ditentukan oleh Timer-1. Pada serial Mode-1, total bit adalah 10-bit, yang terdiri dari 8-bit data, 1 stop bit, dab 1 start bit.

 

SM2

 

SM2 (Serial Mode 2) adalah D5 pada register SCON. Bit ini untuk mendukung kemampuan komunikasi serial pada system yang menggunakan lebih dari satu prosesor (multi prosesor), yang akan kita bahas nanti. Untuk sementara kita akan membuat SM2 ini selau 0’s. Hal itu karena kita hanya menggunakan satu 8051.

 

REN

 

Bit REN (Recieve Enable) adalah D4 pada register SCON. REN juga dapat dinamakan bit SCON.4 mengingat SCON adalah register yang bisa dialamati secara bit. Ketika bit REN ini tinggi, akan membuat 8051 dapat menerima data pada pin RxD. Alhasil jika kita menginginkan 8051 dapat mengirimkan data sekaligus dapat menerima data, maka bit REN ini harus dibuat tinggi. Hal itu dapat dilakukan misalnya dengan perintah “SetB SCON.4” untuk mengaktifkan penerimaan, dan “Clr SCON.4” untuk menonaktifkan. Bit REN ini sangat penting, dengan kata lain atur REN = 1 agar 8051 dapat menerima data serial.

 

TB8

 

TB8 (Transfer bit 8) adalah D3 dan register SCON. TR8 ini adalah bit ke-9 untuk mode pengiriman data 9-bit. Sebelum kita menuliskan data 8-bit SBUF, maka kita sebelumnya harus menulis bit ke-9 tersebut pada TB8. Demikian maksudnya agar bit ke-9 itu benar-benar dikirim pada rangkaian data yang seharusnya.

 

RB8

 

RB8 (Recieve bit 8) adalah D1 pada register SCON. Bit ini adalah bit ke-9 untuk mode penerimaan data 9-bit. Setelah mengambil data pada SBUF, isi RB8 ini dapat kita ambil. Bit ke-9 ini biasanya adalah informasi paritas, karena banyak melibatkan software, penanganan paritas di sini adalah juga lewat software. Namun kenyataannya mode 9-bit sekarang jarang digunakan, hal ini karena penanganan paritas sudah dapat dilakukan melalui hardware. Namun untuk selanjutnya bahasan kita, kita anggap isi TB8 dan RB8 adalah nol (rendah), dan tidak kita gunakan.

 

TI

 

TI(Transmit Interupt) adalah D1 pda register SCON. Ini adalah bit yang sangat penting pada register SCON. Saat 8051 selesai mengirimkan data karakter 8-bit bendera bit TI ini akan diset menjadi 1’s yang menandakan peralatan serial telah siap utuk mengirimkan data berikutnya. TI diterbitkan saat 8051 mengirim bit stop pada akhir pengiriman data byte. Kita akan mendikusikan lebih jauh nanti.

 

RI

 

RI (Recieve Interupt) adalah D0 pada register SCON. Ini adalah bit yang juga sangat penting. Saat 8051 menerima data secara serial memlalui pin RxD, begitu proses penerimaan selesai data byte yang diterima diletakkan pada SBUF sembari menerbitkan bendera bit RI ini, yang menandakan adanya byte yang telah diterima. Dan bersiap untuk menerima data berikutnya. Data yang sudah diterima dan sudah ada pada SBUF dengan terbitnya bendera bit RI ini harus segara kita salin ketempat yang lain. Kalau tidak, data tersebut akan hilang karena tertimpa oleh data yang baru. Bit RI ini diterbitkan, saat 8051 sedang menerima stop bit dari proses menerimaan data. Hal ini akan kita diskusikan lebih jauh nanti.

 

Pemrograman 8051 untuk mentransfer Data secara serial

 

Dalam pemrograman 8051 untuk dapat mengirim data secara serial, lagkah-langkah berikut harus dilakukan.

1.    Register TMOD diisi dengan 20h, yang berarti menggunakan Timer-1 pada mode-2 (8-bit autoreload) untuk mengatur baud rate.

2.    TH1 diisi dengan nilai yang diberikan pada tabel 10-4 untuk mengatur baud rate. (Anggaplah kita menggunakan XTAL = 11.0592 MHz.

3.    Register SCON diisi dengan  nilai 50h, yang berarti serial mode-1, 8-bit data yang dibingkai dengan start danstop bit.

4.    Jalankan Timer dengan men-set TR1

5.    Reset TI dengan perintah “Clr TI“.

6.    Letakkan data atau karakter yang hendak dikirim ke register SBUF.

7.    periksa dan tunggu bendera TI dengan menggunakan “JNB TI,xx“, sampai TI = 1 , yang berarti data sudah terkirim seluruhnya.

8.    Lompat ke langkah 5 untuk mengirim data atau karakter selanjutnya.

 

Contoh 10-2 memperklihatkan program untuk mengirimkan data secara serial pada baud rate 400 bps. Sedang contoh 10-3 memperlihatkan bagaimana mengirim karakter “YES” secara serial terus-menerus.

 

 

Contoh 10-2

 

Tulislah program pada 8051 untuk mengirimkan huruf A secara serial pada baud 4800, terus menerus.

 

Jawaban:

 

        MOV  TMOD,#20h       ;Timer-1, Mode-2 (autireload)

        MOV  TH1,#-6         ;baud rate 4800

        MOV  SCON,#50h       ;8-bit, 1-stop, ren = 1

        SetB TR1             ;jalankan Timer-1

LAGI:   MOV  SBUF,#’A’       ;kirim “A”

ULANG:  JNB  TI,ULANG        ;Tunggu sampai TI = 1

        Clr  TI              ;reset TI

        ACALL DELAY1S        ;tunggu 1 detik

        SJmp LAGI            ;Ulangi terus kirim A

 

 

 

Contoh 10-3

 

Tulislah program pada 8051 untuk mengirimkan pesan “YES” secara serial pada baud 9600, 8-bit data, 1-stop bit. Terus menerus.

 

Jawaban:

 

        MOV   TMOD,#20h      ;Timer-1, Mode-2 (autoreload)

        MOV   TH1,#-3        ;baud rate 9600

        MOV   SCON,#50h      ;8-bit, 1-stop, ren = 1

        SetB  TR1            ;jalankan Timer-1

LAGI:   MOV   A,#’Y’         ;kirim “Y”

        ACALL TRANS

        MOV   A,#’E’         ;kirim “E”

        ACALL TRANS

        MOV   A,#’S’         ;kirim “S”

        ACALL TRANS

        ACALL DELAY1S        ;tunggu 1 detik

        SJmp LAGI            ;Ulangi lagi

 

;subrutin pengiriman data serial

TRANS:  MOV  SBUF,A          ;Isikan dari A

ULANG:  JNB  TI,ULANG        ;Tunggu sampai TI = 1

        Clr  TI              ;reset TI

        RET

 

 

 

Hal yang penting pada bendera TI

 

Untuk mengerti aturan terpenting dari bendera TI lihatlah urutan dibawah ini, yang memperlihat proses 8051 dalam mengirimkan data serial

1.    Data byte yang hendak dikirim, ditulis ke register SBUF.

2.    Mengirim bit start.

3.    Ke 8 bit data dikirim satu bersatu.

4.    Stop bit dikirim. Pada saat mengirim stop bit ini, 8051 menerbitkan bendera TI (TI =1), yang berarti databyte pada SBUF tadi sudah terkirim keseluruhannya.

5.    Dengan memonitor bendera TI, kita dapat terhindar dari menulis kembali SBUF, sebelum seluruh bit data SBUF sebelumnya terkirim dnegan baik. Jika kita menulis data pada SBUF saat prosespengiriman data serial belum selesai, maka bagian bit data yang belum sempat dikirmkan akan diabaikan. Dengan kata lain TI akan terbit (tinggi), yang berarti 8051 siap mengirimkan data berikutnya.

6.    Sebelum SBUF ditulis dengan data baru, bendera TI harus dibuat rendah dengan perintah “Clr TI“, dengan demikian proses pengiriman data dapat dilakukan dengan baik.

 

Dari pembahasan di atas, kita mendapatkan kesimpulan, bahwa dengan melihat bendera bit TI, kita akan segera tahu kapan proses transmit selesai dilakukan.

 

Pemrograman 8051 untuk menerima data secara serial

 

Dalam pemrogram 8051 untuk dapat menerima data secara serial, langkah-langkah berikut harus diikuti.

1.    Register TMOD diisi dengan 20h, yang berarti menggunakan Timer-1 pada mode-2 (8-bit autoreload) untuk mengatur baud rate.

2.    TH1 di isi dengan nilai yang diberikan pada tabel 10-4 untuk mengatur baud rate. (Anggaplah kita menggunakan XTAL = 11.0592 MHz.

3.    Register SCON diisi dengan  nilai 50h, yang berarti serial mode-1, 8-bit data yang dibingkai dengan start dan stop bit.

4.    Jalankan Timer dengan men-set TR1

5.    Reset RI dengan perintah “Clr TI“.

6.    Periksa dan tunggu bendera RI dengan menggunakan “JNB RI,xx“, sampai RI = 1 , yang berarti data sudah diterima seluruhnya.

7.    Salin isi SBUF ketempat yang lain sebelum SBUF diisi dengan data baru.

8.    Lompat ke langkah 5 untuk menerima data atau karakter selanjutnya.

 

 

Contoh 10-4

 

Programlah 8051 untuk dapat menerima byte secara serial, dan tampilkan pada P1. Atur baud rate 4800, 8-bit, 1-stop bit.

 

Jawaban:

 

        MOV  TMOD,#20h       ;Timer-1, Mode-2 (autireload)

        MOV  TH1,#-6         ;baud rate 4800

        MOV  SCON,#50h       ;8-bit, 1-stop, ren = 1

        SetB TR1             ;jalankan Timer-1

ULANG:  JNB  RI,ULANG        ;Tunggu sampai RI = 1

        MOV  A,SBUF          ;simpan data yg diterima

        MOV  P1,A            ;tuliskan pada Port 1

        Clr  RI              ;reset RI

        SJmp ULANG           ;Ulangi terima data

 

 

 

Contoh 10-5

 

Anggaplah port serial dari 8051 terhubung pada port COM komputer PC kita, dan dari komputer kita mmengggunakan “terminal.exe” untuk mengirim dan menerima data secara serial. P1 dan P2 masing-masing terhubung pada LED dan switch. Tulis program 8051 (a) untuk dapat mengirim pesan “We Are Ready”, dan (b) menerima semua data yangdikirm dari PC dan mennampilkannya pada LED yang terhubung pada P1, (c) ambil data dari switch yang terhubung P2 dan kirim pada PC. Pada bagian (a) dikerjakanhanya sekali, sedang (b) dan (c) dikerjakan terus menerus. Gunakna baud rate 4800.

 

Jawaban:

 

        ORG  0

        MOV  P2,#0FFh        ;Buat P2 sebagai Port Input

        MOV  TMOD,#20h       ;Timer-1, Mode-2 (autireload)

        MOV  TH1,#0FAh       ;baud rate 4800

        MOV  SCON,#50h       ;8-bit, 1-stop, ren = 1

        SetB TR1             ;jalankan Timer-1

 

        MOV   DPTR,#MYDATA    ;Isikan pointer pada text

H_1:    CLR   A

        MOVC  A,@A+DPTR       ;Ambil karakternya

        JZ    B_1             ;Jika karakter terakhir, maka keluar

        ACALL SEND

        INC   DPTR            ;Karakter selanjutnya

        SJMP  H_1             ;Ulangi proses

B_1:    MOV   A,P2            ;Baca data pada P2

        ACALL SEND

        ACALL RECV

        MOV   P1,A            ;tampilkan pada port

        SJMP  B_1             ;Ulangi terus

;—————– Transfer data serial

SEND:   MOV  SBUF,A

H_2:    JNB  TI,H_2

        CLR  TI

        RET

;—————– Menerima data serial

RECV:   JNB  RI,RECV

        MOV  A,SBUF

        CLR  RI

        RET

;—————– Pesan

MYDATA: DB   ‘We Are Ready’,0

        END

 

 

 

 

 

Hal yang penting pada bendera bit RI

 

Saat menerima data lewat pin RxD, 8051 bekerja sebagai berikut.

1.    Saat menerima start bit , berarti bit selanjutnya adalah bit pertama dari karakter yang akan diterimanya.

2.    Karakter 8-bit diterima bit demi bit. Saat menerima bit terakhir, maka byte secara lengkap sudah bisa diletakkan pada SBUF.

3.    Saat stop bit diterima, 8051 membuat bendera RI = 1s, yang berarti seluruh bit dari karakter sudah diterima dan harus segera diambil sebelum ditimpa oleh karakter yang datang belakangan.

4.    Dengan memeriksa bendera RI , kita dapat mengetahui kapan sebuah karakter telah diterima secara lengkap, dan sudah berada pada register SBUF. Kita harus menyalin isi SBUF ke tempat yang aman pada memory yang lain, sebelum data tersebut hilang.

5.    Setelah isi SBUF di salin ke tempat yang aman, bendera RI harus di-clear menjadi 0’s dengan perintah “Clr RI“, untuk selanjutnya dapat menerima karakter baru. Kesalahan dalam melakukan hal ini dapat berakibat hilangnya data.

 

Dari diskusi di atas kita dapat menyimpulkan bahwa memeriksa bendera RI harus terlebih dahulu meng-clear bendera tersebut dengan perintah “Clr RI” dan selanjutnya menggunaakan instruksi seperti “JNB RI,xx” untuk menunggu RI menjadi 1’s (high). Atau yang lebih baik menggunakan interupsi yang akan kita bahas pada bab selanjutnya.

 

 

Meng-duakali-kan baud rate pada 8051

 

Ada dua jalan untuk meningkatkan baud rate dari komunikasi serial pada 8051.

1.    Gunakan osilator kristal dengan frekuensi yanglebih tinggi

2.    Ubah bit pada register PCON, seperti di bawah ini.

 

 

Pilihan pertama tentu membuat tidak nyaman karena osilator kristal sifatnya tetap (disolder pada PCB), tidak mudah diganti-ganti. Namun yang lebih parah lagi, kristal yang baru, belum tentu kompatibel dengan baud rate pada konektor COM komputer PC kita. Oleh karena itu kita akan membahas lebih jauh tentang pilihan ke dua. Karena ada cara software untuk men-duakali-kan baud rate 8051 tanpa perlu mengganti kristal osilator. Hal ini bisa dilakukan dengan mengubah salah satu bit pada registe PCON (Power Control). Register PCON adalah register 8-bit. Dari 8-bit tersebut beberapa diantaranya tidak digunakan, dan sebagian lain digunakan untuk pengendalian daya pada 8051. Bit dimana digunakan untuk komunikasi serial hanya D7 dari register PCON tersebut (yang juga disebut bit SMOD). Saat 8051 baru dihidupkan, isi register ini selalu 00h. Sehingga SMOD pun juga dalam keadaan 0. Kita dapat mengatur SMOD ini untuk menjadi 1’s, akibatnya frekuensi yang diterima Timer menjadi 2 kali lebih cepat. Di bawah ini adalah prosedure yang baik untuk men-set SMOD atau D7 pada PCON. Hal ini karena PCON bukanlah register yang bisa dialamati bit.

 

            MOV  A,PCON       ;Salin isi PCON pada Acc

            SetB Acc.7        ;buat D7 setara dgn SMOD = 1

            MOV  PCON,A       ;Kembalikan isi Acc ke PCON

 

Untuk melihat bagaimaa baud rate dikalikan dua dengan metode ini, kita akan membahas bit SMOD tersebut.

 

 

Baud rate saat SMOD = 0

Saat SMOD = 0, Frekunesi yang digunakan oleh peralatan Serial untuk membentuk baud dasar adalah 1/32 dari siklus mesin. Frekuensi yang sudah dibagi tersebut yang kemudian diberikan pada Timer-1 untuk dibagi lagi sesuai dengan keinginan kita. Misalnya kita menggunakan XTAL = 11.0592 MHz, kita akan mendapatkan.

 

      MC (Siklus Mesin) = 11.0592 MHz / 12 = 921.6 kHz

      Baud dasar  = 921.6 kHz / 32 = 28,800 Hz (SMOD =0)

 

Frekuensi 28,800 inilah yang digunakan Timer-1 untuk mengatur baud rate yang kita inginkan. Ini adalah dasar dari serial karena saat reset atau 8051 baru dinyalakan, SMOD selalu dalam keadaan rendah ( 0s ).

 

 

Baud rate saat SMOD = 1

 

Dengan tidak mengubah frekuensi kristal osilator, kita dapat mendua-kalikan baud rate dengan membuat SMOD menjadi = 1 . Saat bit SMOD pada register PCON ini = 1, peralatan serial beralih menggunakan frekuensi yang 1/16 dari siklus mesin ( sebelumnya 1/32 ).  Lihat contoh degan XTAL = 11.0592 Mhz

 

      MC (Siklus Mesin) = 11.0592 MHz / 12 = 921.6 kHz

      Baud dasar  = 921.6 kHz / 16 = 57,600 Hz (SMOD =1)

 

Frekuensi inilah yang digunakan oleh Timer-1 untuk membentuk baud rate yang kita inginkan. Tabel 10-5 , menunjukkan nilai yang diisikan pada TH1 adalah sama untuk kedua kasus dimana SMOD = 0 dan SMOD = 1.

 

Tabel 10-5 : perbandingan baud rate untuk SMOD = 0 dan SMOD = 1

TH1

 

SMOD = 0

 

SMOD = 1

Desimal

Hex

-3

FD

9.600

19.200

-6

FA

4.800

9.600

-12

F4

2.400

4.800

-24

E8

1.200

2.400

 

 

Contoh 10-6

 

Anggaplah kita menggunakan XTAL = 11.0592 MHz pada progrram berikut, (a) program apa itu sebenarnya (b) hitung frekuensiyng diterima Timer-1 untuk membentuk Baud rate untuk pengiriman data.

 

          MOV  A,PCON          ;A = PCON

          SETB ACC.7           ;Buat D7 = 1 (Double rate)

          MOV  PCON,A          ;Kembalikan PCON

          MOV  TMOD,#20h       ;Timer-1, Mode-2, auto-reload

          MOV  TH1,#-3          ;dengan SMOD=1 === 57600/3 = 19200

          MOV  SCON,#50h        ;8-bit data, 1 stop, RI enable         

          SETB TR1              ;Jalankan Timer-1

          MOV  A,#’B’           ;Isi dengan karakter B

A_1:      CLR  TI               ;Mulai pengiriman

          MOV  SBUF,A           ;Makak krimkan

H_1:      JNB  TI,H_1           ;tunggi sampai TI =1

          SJMP A_1

 

Jawaban:

 

(a)    Program ini adalah mengirimkan karakter “B” (01000010b) terus menerus.

(b)    Dengan XTAK = 11.0592 MHz dan SMOD =  1 , dari program di atas kita akan memperoleh.

 

11.0592 / 12 = 921,6 kHz adalah siklus kerja mesin.

921,6  / 16  = 57.600 Hz adalah frekuensi yang diterima Timer-1.

57.600  / 3  = 19.200 Hz adalah frekuensi yang dihasilkan Timer-1 sebagai baud rate.

 

 

 

Contoh 10-7

 

Cari nilai TH1 dalam desimal dan Hex, untuk mengatur nilai baud rate  (a) 9600  (b) 4800  , jika SMOD = 1 dan XTAL 11,0592 MHz.

 

Jawaban:

 

Dengan XTAL = 11,0592 MHz dan SMOD = 1, kita mendapatkan frekuensi Timer-1 = 57.600 Hz.

(a)    57.600 Hz / 9600 = 6 , sehingga TH1 diisi -6 = FAh

(b)    57.600 Hz / 4800 = 12, sehingga TH1 diisi -12 = F4h

 

 

 

 

Contoh 10-8

 

Cari BAUD rate jika TH1 = -2 , SMOD = 1, dan XTAL = 1105920 MHz. Dan apakah baud rate ini cocok dengan Komputer PC?

 

Jawaban:

 

Dengan XTAL = 11,0592 MHz dan SMOD = 1, kita akan mendapatkan frekuensi Timer1 = 57.600 Hz. Dan baud rate sendiri adalah sebesar 57.600 / 2 = 28.800. Baud rate ini tidak cocok dengan BIOS pada komputer PC. Namun beberapa modem dan program seperti HiperTerminal ternyata dapat bekerja pada baud rate ini dan baud rate yang lain.

 

 

 

Contoh 10-9

 

Cari bagaimana memprogram komunikasi serial menggunakan 8051 untuk menghubungi membunyikan nada C4 pada MIDI komputer PC kita. Menggunakan XTAL = 12 MHz.

 

Jawaban:

 

MIDI adalah standar komunikasi musik digital yang sekarang masih digunakan. Di bawah ini adalah langkah-langkah untuk melakukan pengauran-pengaturan pada peralatan serial untuk MIDI.

1.       selalu bekerja pada baud rate 31.250 Hz

2.       menghubungkan pin 11 (TxD) pada 8051 ke pin 15 (MIDI input) konektor MIDI pada PC.

3.       frekuensi 12 MHz adalah ideal, karena dari Siklus Mesin = 12 MHz / 12 = 1 uS, kita akan mendapatkan frekuensi 1 MHz. Anggap kita menggunakan SMOD = 0 maka frekuensi untuk Timer-1 adalah 1 MHz / 32 = 31.250 Hz. Karena 31.250 Hz adalah tepat baud rate MIDI maka frekuensi ini tidak perlu dibagi lagi, sehingga nilai untuk TH1 adalah -1.

4.       Setelah setting serial sudah ditetapkan, kirim ke MIDI-message dengan serangkaian data dengan format 3-byte. Yaitu (Status,Param,Value = NoteOn, C4, Volume) == 80h, 38h, 7Fh. Buka buku tentang format MIDI-message.

5.       programnya adalah sbb

 

          MOV  TMOD,#20h        ;Timer-1, Mode-2, auto-reload

          MOV  TH1,#-1          ;dengan SMOD=1 === 31250/1 = 31250

          MOV  SCON,#50h        ;8-bit data, 1 stop, REN enable

          SETB TR1              ;Jalankan Timer-1

 

          MOV  SBUF,#80h        ;kirim Midi Status = Note-On

          JNB  TI,$             ;Tunggu sampai TI = 1

          Clr  TI               ;reset TI

          MOV  SBUF,#38h        ;kirim Midi Param  = Note C4 (38h)

          JNB  TI,$             ;Tunggu sampai TI = 1

          Clr  TI               ;reset TI

          MOV  SBUF,#64h        ;kirim Midi Status = Volume 100

          JNB  TI,$             ;Tunggu sampai TI = 1

          Clr  TI               ;reset TI

 

 

 

Transfer data berbasis Interupsi

 

Boleh jadi sekarang anda bertanya-tanya bukankah sangat membuang-buang waktu untuk menunggu status TI dan RI sekaligus. Pada BAB 11, kita akan bahas bagaimana menggunakan interupsi untuk memprogram port komunikasi serial pada 8051.

 

 



 

RINGKASAN

 

BAB ini dimulai dengan perkenalan mendasar tentang komunikasi serial. Komunikasi serial, di mana data dikirim bit-demi-bit, digunakan terutama pada jarak yang panjang, dibandigkan dengan komunikasi parallel. Mengirim data byte secara parallel pada jarak yang sangat jauh akan menimbulkan distorsi pada kabel serta sinyal, dan dimungkinkan adanya logika palsu. Komunikasi serial sekarang sudah sangat maju dengan menumpang pada kabel telpon. Komunikasi serial menggunakan dua metode, yaitu metode Asynchronos dan Synchronos. Pada komunikasi Synchronos, data dikirm blok-byte per blok-byte (dan kadang disinkronkan dengan sinyal tambahan), sedang pada Asynchronos, data dikirim byte demi byte. Komunikasi serial dapat berupa simplex (bisa mengirim tapi tidak bisa menerima), half duplex (bisa mengirim dan menerima, namun tidak bisa bersamaan), dan full-duplex ( bisa mengirim dan menerima dalam waktu yang bersamaan). RS232 adalah standar konektor untuk komunikasi serial.

 

UART pada 8051 adalah yang telah kita diskusikan. Kita tahu bagaimana menghubungkan 8051 dengan konektor RS232 dan mengubah baud rate pada 8051. Ditambah lagi kita dapat menjelaskan fungsi-fungsi lain dari komuniasi serial 8051, dan memrogramnya sebagai komunikasi data serial.


—————————————-

|o-o| Diterjemahkan oleh Dhanny Dhuzell

—————————————-

2 Comments

Leave a Reply