Home|Tutorial | ElecProject | KuliahElektro | Download | Link | Rupa2 | Ide| Skema Elektronik

 
         
     
 

 

Komunikasi Seri Asinkron

Universal Asynchronous Receiver/Transmitter (UART)

 

Oleh Budhy Sutanto

 

 

Komunikasi serial asinkron ikut  populer seiring dengan makin maraknya Internet, modem yang dipakai menghubungkan komputer rumah ke Internet lewat saluran telepon menyalurkan data secara Komunikasi Seri Asinkron.

 

Microprocessor dalam komputer bekerja atas dasar prinsip data paralel, mula-mula banyak dipakai microprocessor dengan data paralel 8 bit dan kini sudah dipakai data pararel 32 bit, tapi dalam hal komunikasi data yang dipakai adalah teknik pengiriman data secara seri.

 

Alasan utama pemakaian teknik pengiriman seri karena saluran komunikasi data pararel yang panjang harganya sangat mahal dan tidak praktis. Sinyal digital dari IC TTL (Transistor Transistor Logic) paling-paling bisa dikirimkan sejauh 1 sampai 2 meter tergantung kecepatan pengiriman data. Agar bisa dikirimkan lebih jauh, sinyal TTL tadi harus di-buffer dengan rangkaian buffer khusus, beaya pengolahan sinyal ini cukup mahal. Untuk mengirim data secara paralel diperlukan satu saluran untuk setiap bit data, dengan demikian pengiriman data paralel 8 bit, membutuhkan beaya 8 kali lebih mahal dibandingkan dengan komunikasi data secara seri yang hanya perlu satu saluran saja.

 

Dengan demikian, meskipun kecepatan transmisi data dengan teknik komunikasi data secara paralel lebih cepat, teknik komunikasi data seri tetap dipilih untuk transmisi data jarak jauh.

Ada 3 hal yang harus diperhatikan dalam transmisi data seri. Pertama, cara merubah data paralel jadi seri dan mengembalikan data seri ke paralel. Kedua, jenis-jenis sinyal dan rangkaian yang dipakai untuk transmisi sinyal jarak jauh. Ketiga, bagaimana mengendalikan transmisi data tersebut agar data bisa transmisikan utuh tanpa cacat.

 

Perubahan data paralel/seri

Karena microprocessor mengolah data secara paralel, maka proses transfer data secara seri harus diawali dan diakhiri dengan bentuk data paralel. Artinya data dari microprocessor yang bentuknya paralel diubah menjadi data seri, dikirimkan, setelah diterima diubah kembali menjadi paralel.

 

Perubahan data paralel ke seri bisa dilakukan secara mudah dengan bantuan Shift Register, Gambar 1 memperlihatkan proses perubahan ini. Shift Register yang dipakai adalah jenis Shift Register input paralel/output seri, misalnya IC CMOS type MC14021, data paralel 8 bit diumpankan ke input paralel shift register, kemudian di bangkitkan 8 pulsa clock untuk mendorong keluar data di dalam shift register, data akan terdorong keluar dari shift register bit demi bit, 1 pulsa clock akan mendorong data 1 bit.

Dengan demikian pada satu saluran bisa dipakai menampung data 8 bit, saat pulsa clock yang pertama bit D0 berada di saluran selama 1 periode clock, saat pulsa clock kedua bit D1 yang berada di saluran dan seterusnya sama pulsa clock kedelapan.

 

 

Gambar 1 Perubahan data Parelel jadi Seri

 

Menerima data seri dan mengubahnya kembali ke bentuk paralel, merupakan proses kebalikan dari proses di atas. Shift Register yang dipakai adalah jenis Shift Register input seri/output paralel, misalnya IC CMOS type MC14094, data seri diumpankan ke input seri dan didorong masuk ke shift register, setelah 8 pulsa clock data kembali menjadi bentuk paralel di 8 output shift register.

 

Transmisi data seri dibedakan menjadi 2 macam, yakini komunikasi data seri sinkron dan komunikasi data asinkron, perbedaan ini tergantung pada clock pendorong data. Dalam komunikasi data seri sinkron, clock untuk shift register ikut dikirimkan bersama dengan data seri, seperti yang dijumpai di Keyboard Komputer PC, teknik I2C yang dikembangkan Philips dan juga pengiriman data dalam Ethernet. Sebaliknya dalam komunikasi data seri asinkron, clock pendorong shift register tidak ikut dikirim, rangkaian penerima data harus dilengkapi dengan rangkaian yang mampu membangkitkan clock yang diperlukan.

 

Ada IC khusus yang dibuat untuk mengubah data paralel dan menjadi data seri, dan menerima data seri yang kemudian dirubah kembali menjadi data paralel, IC tersebut dinamakan IC Universal Asynchronous Receiver/Transmitter (UART). Selain berbentuk sebagai IC mandiri, pada berbagai macam microcontroler ada yang dilengkapi UART, misalnya keluarga microcontroler MCS51 (termasuk AT89C2051), microcontroler MC68HC11 buatan Motorola dan lain sebagainya.

 

Bagian yang terpenting dari komunikasi seri asinkron adalah upaya agar penerima data bisa membangkitkan clock yang bisa dipakai untuk mendorong shift register penerima. Unuk keperluan tersebut terlebih dulu ditentukan bahwa saat tidak ada pengiriman data, keadaan saluran adalah ‘1’, saat akan mulai mengirim data 1 byte saluran dibuat menjadi ‘0’ dulu selama 1 periode clock pendorong, dalam 8 periode clock berikutnya dikirim data bit 0, bit 1 dan seterusnya sampai bit 8, dan pada periode clock yang ke 10 saluran dikembalikan menjadi ‘1’.

 

Dengan demikian data 8 bit yang dikirim di-awal-i dengan bit START yang bernilai ‘0’ dan di-akhir-i dengan bit STOP yang bernilai ‘1’, seperti terlihat dalam Gambar 2. Kemasan data ini dimaksud agar rangkaian penerima bisa membangkitkan clock yang frekuesinya sama dengan clock pengirim dan fasanya di-sinkron-kan pada awal penerimaan data 1 byte!

 

Catatan : Gambar 2 merupakan bentuk gambar yang umum dipakai menggambarkan format data seri dalam banyak buku, meskipun sebetulnya cara penggambaran ini terbalik, bit START yang pertama-tama dikirimkan malah digambarkan dibagian kiri dan bit STOP yang munculnya terakhir digambarkan dibagian kanan.

 

 

Gambar 2 Kemasan data seri asinkron

 

Saluran komunikasi data seri

Seperti yang dibicarakan di atas, sinyal digital dari IC TTL paling-paling hanya bisa ditransmisikan sejauh satu-dua meter, untuk pengiriman yang lebih jauh sinyal harus diolah dan disalurkan dengan cara khusus. Pada umumnya dikenal 3 macam saluran untuk transmisi data seri, yakni saluran yang memenuhi ketentuan standard EIA RS232, saluran yang memeuhi ketentuan standard EIA RS422/485 atau saluran arus 20 mA (20 mA current loop).

 

Standard EIA RS232 pertama kali di dipublikasikan pada tahun 1962, merupakan sebuah standard yang ‘tua’, sudah ada jauh sebelum IC TTL populer. Saluran RS232 banyak dipakai untuk menghubungkan komputer dengan alat pendukungnya, misalnya komputer dengan printer (sekarang hampir tidak ada printer seri), komputer dengan modem, pokoknya adalah hubungan antara alat yang tidak lebih jauh dari 50 feet (sekitar 15 meter).

Dalam ketentuan RS232, level logika ‘0’ dinyatakan dengan tegangan antara –3 sampai –15 Volt, dan level logika ‘1’ dinyatakan dengan tegangan antara +3 sampai +15 Volt. Mengingat komponen digital pada umumnya bekerja dengan sumber tegangan +5 Volt, dan level logika ‘0’ dinyatakan dengan tegangan antara 0,8 sampai 0 Volt dan level logika ‘1’ dinyatakan dengan tegangan 3,5 sampai 5 Volt, maka antara rangkaian digital dan saluran RS232 biasanya disisipkan IC ‘RS232-TTL Voltage Translator’, dulu yang banyak dipakai adalah IC MC1488 dan MC1489, kedua IC ini memerlukan sumber tegangan +12 Volt dan –12 Volt, kini ornag lebih senang memakai IC MAX232 yang hanya perlu catu daya +5 Volt saja.

 

Dalam saluran RS232 level logika ditransmisikan sebagai perbedaan tegangan antara saluran dan Ground, cara semacam ini dikatakan sebagai unbalanced transmission (transmisi tidak imbang), dalam perjalanan jika sinyal menerima gangguan derau listrik (electrical noise), bisa berakibat fatal pada penerima karena derau yang diterima bisa disalah tafsirkan sebagai sinyal digital.

 

 

Gambar 3 3 Macam Saluran Data Seri

 

Standard lain yang dikenalkan EIA adalah RS422, saluran ini menggunakan cara transmisi berimbang (balance transmission), sinyal  TTL disalurkan lewat IC Line Driver yang mengeluarkan sinyal diffrential pada outputnya, level logika tidak dinyatakan dengan perbedaan tegangan dengan ground, tapi dinyatakan dengan perbedaan tegangan antara kedua sinyal output itu, selanjutnya sinyal ini akan diterima oleh IC Line Receiver yang mempunyai input diffrential yang akan merubah sinyal diffrential tapi ke sinyal TTL.

 

Dengan cara semacam ini, jika dalam perjalanan sinyal menerima derau listrik, kedua utas dalam saluran akan mendapat sinyal derau yang sama besarnya, sinyal derau yang sama besar ini bagi input diffrential di IC Line Receiver tidak akan dirasakan sebagai sinyal digital, sehingga saluran ini lebih kebal gangguan dibanding dengan saluran RS232.

 

Untuk meningkatkan kekebalannya terhadap ganguan, kabel yang dipakai untuk saluran RS422 biasanya dipakai dua kabel yang dililit jadi satu, dengan maksud jika sampai mendapat gangguan maka gangguan yang diterima kedua kabel yang dililit itu benar-benar sama besarnya, sehingga selisih tegangannya derau antara dua kabel benar-benar nol dan tidak dirasakan sebagai gangguan.

 

Dengan cara balance transmission ini, RS422 bisa dipakai untuk menyalurkan informasi dengan kecepatan yang lebih tinggi, dan jarak yang bisa dijangkau pun mencapai 4000 feet! Bandingkan dengan RS232 yang hanya bisa dipakai sampai 50 feet!

 

Jenis saluran ketiga adalah 20 mA Current Loop (saluran arus 20 mA), saluran ini termasuk dikenal sebagai saluran kuno, kini tidak lagi banyak dipakai. Meskipun demikian karena sifat saluran ini yang sangat kebal terhadap gangguan, pada lingkungan pabrik yang mengandung sumber gaangguan derau listrik yang sangat besar, saluran ini tetap digunakan.

 

20 mA Current Loop berbeda prinsip dengan saluran RS232 dan RS422/485, karena informasi disalurkan sebagai ada tidaknya arus. Gambar 3(c) merupakan rangkaian saluran current loop, sinyal TTL dipakai untuk mengatur transistor, jika transistor on maka arus akan mengalir dari V+ melalui resistor dan membuat LED di dalam Opto Coupler yang ada di bagian penerima menyala, yang pada gilirannya membuat transistor on. Bisa dibayangkan, sebesar-besarnya tegangan derau yang diterima saluran, hampir tidak mungkin menimbulkan arus yang cukup besar sampai LED bisa menyala, dengan demikian menjadikan saluran ini sangat kebal terhadap gangguan.

Tidak ada standard yang mengatur saluran arus ini, makin besar tegangan V+ makin besar pula arus yang mengalir (idealnya sampai 20 mA) maka saluran makin kebal terhadap gangguan. Kecepatan saluran sangat tergantung pada mutu opto coupler yang dipakai, meskipun demikian pada umumnya saluran arus ini bisa dipakai dengan aman paling tidak sampai sejauh 1000 feet.

 

Pengendalian saluran komunikasi

Setelah 2 aspek yang menyangkut perangkat keras di atas, aspek berikutnya yang menentukan berhasilnya komunikasi data seri adalah pengendalian saluran komunikasi. Aspek ini lebih banyak mengarah ke perangkat lunak, yang akan dibahas

 

 

Universal Asynchronous Transmitter/Receiver (UART)

 

UART merupakan salah satu sarana di dalam chip AT89C2051 yang sangat berharga, sehingga IC dengan 20 kaki ini bisa melakukan komunikasi seri asinkron dengan mudah.

 

MCS51 dilengkapi dengan sarana komunikasi data seri, sebagai anggota keluarga MCS51 AT89C2051 juga mempunyai sarana itu selengkapnya. Sarana komunikasi seri tersebut bisa bekerja dalam 4 macam mode, 1 mode bekerja sebagai sarana komunkasi seri sinkron, tiga lainnya merupakan sarana komunikasi seri asinkron.

Keempat macam mode kerja tersebut adalah :

o      Mode 0 – bekerja sebagai sarana komunikasi data seri sinkron, data seri dikirim dan diterima melalui kaki

    RxD, sedangkan kaki TxD dipakai untuk menyalurkan clock yang diperlukan komunikasi data sinkron. Data

    ditransmisikan per 8 bit dengan kecepatan transmisi data (Baud rate) tetap, sebesar 1/12 frekuensi kerja

    dari AT89C2051.

o       Mode 1 – mode ini dan 2 mode berikutnya merupakan sarana komunikasi seri asinkron. Data seri dikirim

    melalui kaki TxD, dan diterima dari kaki RxD. Data ditransmisikan per 10 bit, terdiri atas 1 bit Start (‘0’), 8

    bit data dan 1 bit stop (‘1’). Kecepatan transmisi data (Baud Rate) ditentukan lewat Timer 1, bisa diatur

    untuk berbagai kecepatan.

o       Mode 2 - Data seri dikirim melalui kaki TxD, dan diterima dari kaki RxD. Data ditransmisikan per 11 bit,

   terdiri atas 1 bit Start0’), 8 bit data, 1 bit data tambahan (bit ke 9) dan 1 bit stop1’). Kecepatan

   transmisi data (Baud Rate) hanya bisa dipilih 1/32 atau 1/64 frekuensi kerja dari AT89C2051.

o       Mode 3 - Data seri dikirim melalui kaki TxD, dan diterima dari kaki RxD. Data ditransmisikan per 11 bit,

    terdiri atas 1 bit Start0’), 8 bit data, 1 bit data tambahan (bit ke 9) dan 1 bit stop). Sesungguhnya

   Mode 2 dan 3 sama persis, perbedaannya adalah kecepatan transmisi data (Baud Rate) mode 3 ditentukan

   lewat Timer 1, bisa diatur untuk berbagai kecepatan, persis sama dengan mode 1.

 

Dari keempat mode kerja yang ada, mode 1 adalah mode yang paling banyak dipakai, mode inilah yang setara dengan komunikasi seri asinkron dipakai pada PC maupun modem. Mode 3 setara dengan Mode 1, tapi mempunyai kemampuan untuk dipakai dalam komunikasi seri asinkron multiprosesor, yang lebih dikenal sebagai “multidrop communi­cation system”.

 

Mengatur UART dalam AT89C2051

AT89C2051 mempunyai register khusus untuk pengiriman/penerimaan data seri dan mengatur tata kerja sarana komunikasi. Kedua register khusus itu merupakan bagian dari kumpulan register khusus di dalam AT89C2051 yang biasanya disebut sebagai SFR (Special Function Register), register-register khusus ini menempati sebagian area memori data internal.

 

Register khusus pertama bernama register SBUF (Serial Buffer Register), register ini ditempatkan di memori data internal nomor $99. Register SBUF diisi dengan perintah MOV SBUF,A (isi akumulator A di-copy-kan ke register SBUF), dalam hal ini register SBUF setara dengan input paralel dari shift register yang berfungsi sebagai pengubah data paralel menjadi data seri. Setelah instruksi MOV SBUF,A diterima AT89C2051, isi dari register SBUF akan dikirim keluar dari chip.

 

Isi dari register SBUF diambil dengan instruksi MOV A,SBUF (isi reguster SBUF di-copy-kan ke akumulator A), dalam hal ini register SBUF setara dengan output paralel dari shift register yang berfungsi sebagai pengubah data seri menjadi data paralel. Melaksanakan instruksi MOV A,SBUF berarti AT89C2051 menerima data seri yang dikirim oleh UART lain di luar chip.

 

Register khusus kedua bernama register SCON (Serial Control Register), register ini ditempatkan di memori data internal nomor $98. Kapasitas register SBUF dan SCON sebesar 8 bit, namun data 8 bit dalam register SBUF merupakan kesatuan data yang utuh, sedangkan masing-masing bit dalam register SCON mempunyai kegunaan yang berlainan. Gambar 1 memperlihatkan susunan bit dalam register SCON

 

 

 

Gambar 1 Susunan Register SCON

 

Meskipun register ini bernama Register Kontrol, tapi tidak semua bit dalam register SCON dipakai untuk meng-kontrol kerja sarana komunikasi data seri. Bit 3 sampai 7 (SCON.3 .. SCON.7) dipakai sebagai bit pengkontrol, sedangkan bit 0 sampai 2 (SCON.0 .. SCON.2) dipakai untuk memantau kerja sarana komunikasi data seri.

·        Bit RI (SCON.0), Receive Interupt Flag, merupakan bit petanda bahwa register SBUF berisi data yang

    diterima dari sarana komunikasi data seri yang lain. Bit RI menjadi ‘1’ kalau SBUF berisi data, jadi sebelum

    mengambil isi register SBUF harus dipastikan dulu RI sudah bernilai ‘1’ dengan instruksi JNB RI,* setelah data

    di register SBUF diambil, bit RI harus di-nol-kan dengan instruksi CLR RI.

·        Bit TI (SCON.1), Transmit Interupt Flag, merupakan bit petanda bahwa data yang diisikan ke SBUF sudah

   selesai dikirim. Bit TI menjadi ‘1’ kalau SBUF sudah kosong, jadi sebelum mengirim 1 byte data harus

   dipastikan dulu TI sudah bernilai ‘1’ dengan instruksi JNB TI,* baru data diisikan ke register SBUF, bit TI

   harus di-nol-kan dengan instruksi CLR TI.

·        Bit RB8 (SCON.2), Receive Bit 8, dipakai sebagai penampung bit ke 9 yang diterima dalam mode kerja 2 dan

   3 (kapastias register SBUF hanya 8 bit, jadi harus ada tempat lain untuk menampung bit ke 9). Dalam mode

   kerja 1, RB8 berisikan bit Stop yang diterima, sehingga sehingga bisa dipakai untuk mendeteksi kesalahan

   pengiriman data (Framing Error). Dalam Mode kerja 0 RB8 tidak dipakai.

·        Bit TB8 (SCON.3), Transmit Bit 8, merupakan bit ke 9 yang dikirimkan dalam mode kerja 2 dan 3. Bit ini di-

     satu-kan dengan instruksi SETB TB8 dan di-nol-kan dengan isntruksi CLR TB8.

·        Bit REN (SCON.4), Receive Enable, dipakai untuk mengatur agar kaki RxD bisa dipakai untuk menerima data

    seri (dalam mode 0 kaki RxD dipakai untuk mengirim data dan menerima data). SETB REN menjadikan kaki

    RxD sebagai input penerima data, dan CLR REN menjadikan kaki RxD tidak bisa menerima data.

·       Bit SM2 (SCON.5), Serial Mode 2, dipakai untuk mengaktipkan fasilitas komunikasi multi-prosesor pada mode

    kerja 2 dan 3, jika SM21’ maka bit RI hanya bisa menjadi ‘1’ kalau bit ke 9 yang diterima di RB8 adalah ‘1’.

    Dalam mode kerja 1, jika SM21’ maka bit RI hanya bisa menjadi ‘1’ kalau bit Stop yang ditampung di RB8

    bernilai ‘1’. Dalam mode kerja 0 SM2 harus =’0’.

·       Bit SM0 dan SM1 (SCON.7 dan SCON.6) merupakan kombinasi dua bit yang nilainya dipakai untuk menentukan

    mode kerja dari sarana komunikasi data seri AT89C2051. Kalau SM1 diberi ‘0’ dan SM0 diberi ‘1’, maka sarana

    komunikasi data seri ini akan bekerja sebagai UART pada umumnya dengan kecapatan transmisi (Baud rate) 

   yang bisa diatur dan format data 8N1 (8 bit data, No Parity, 1 bit Stop).

 

Setelah AT89C2051 di-reset, semua bit dalam register SCON bernilai ‘0’, jadi sebelum memakai sarana komunikasi data ini, terlebih dulu harus mengatur isi register SCON, sesuai dengan tata kerja yang diharapkan. Instruksi MOV SBUF,#%01010000 mengisi SM1 dan SM0 dengan ‘01’ (mode kerja 1), SM20’ (tidak bekerja sebagai kumunikasi multi-prosesor), REN1’ (mengaktipkan kaki RxD sebagai penerima data) dan bit sisanya diisi dengan ‘0’ karena memang tidak diperlukan, instruksi ini menjadikan sarana komunikasi data seri AT89C2051 menjadi sebuah UART yang bekerja dengan format data 8N1.

 

Potongan Program 1 merupakan sub-rutin pengiriman dan penerimaan data seri menggunakan UART dalam AT89C2051. Dalam sub-rutin KirimDataSeri, sebelum data dikirim melalui SBUF di baris 4, pada baris 2 dipastikan dulu bit TI1’, selama bit TI0’ AT89C2051 akan menunggu di baris 2. Baris 3 me-nol-kan TI karena TI tidak otomatis menjadi ‘0’.

Dalam sub-rutin TerimaDataSeri, sebelum mengambil dari dari SBUF di baris 9, AT89C2051 menunggu RI menjadi ‘1’ di barus 8, setelah data diambil RI harus di-nol-kan kembali, hal ini dilakukan di baris 10.

 

Potongan Program 1 Sub-rutin kirim/terima data

01: KirimDataSeri:

02:    JNB TI,*

03:    CLR TI       

04:    MOV SBUF,#’A’

05:    RET

06: ;

07: TerimaDataSeri:

08:    JNB RI,*

09:    MOV A,SBUF

10:    CLR RI       

11:    RET

 

Mengatur kecepatan transmisi

Kecepatan transmisi (Baud Rate) merupakan suatu hal yang amat penting dalam komunikasi data seri asinkron, mengingat dalam komunikasi data seri asinkron clock tidak ikut dikirimkan, sehingga harus diusahakan bahwa kecepatan transmisi mengikuti standard yang sudah ada.

 

Dalam AT89C2051, clock untuk transmisi data dibangkitkan dengan sarana Timer 1 seperti yang digambarkan dakan diagram Gambar 2. Untuk keperluan ini, Timer 1 dioperasikan sebagai 8 bit auto reload timer (mode 2), artinya TL1 bekerja sebagai timer 8 bit menerima clock dari osilator kristal yang frekuensinya sudah dibagi 12 terlebih dulu, setiap kali pencacah (counter) nilainya menjadi 0 maka nilai yang sebelumnya sudah disimpan di TH1 secara otomatis diisikan lagi ke TL1, sehingga TL1 akan menghasilkan clock yang frekuensinya diatur oleh TH1, clock ini berikutnya dibagi lagi dengan 32 sebelum dipakai sebagai clock untuk UART. Hubungan frekuensi pada sistem tersebut dinyatakan dengan persamaan berikut :

 

 

Kalau kecepatan transmisi sudah ditentukann dan frekuensi kristal sudah dipastikan, maka nilai yang disimpan di TH1 bisa dihitung berdasarkan persamaan berikut :

 

 

Dalam persaman di atas, K adalah konstanta yang nilainya 1 atau 2, tergantung pada nilai yang tersimpan di bit SMOD dalam register PCON. Jika SMOD0’ K bernilai 1 dan K akan bernilai 2 kalau SMOD1’. Perlu dicacat, setelah AT89C2051 di-reset, SMOD akan bernilai ‘0’, artinya jika tidak diatur lebih lanjut K bernilai 1.

Untuk mendapatkan kecepatan transmisi yang umum dipakai dalam komunikasi data seri asinkron (1200 Baud, 2400 Baud, 4800 Baud, 9600 Baud dan 19200 Baud), dari persamaan di atas bisa diturunkan ternyata frekuensi kristal yang paling tepat adalah 11.059 MHz. Meskipun angka ini agak aneh, tapi karena banyak dipakai kristal dengan frekuensi ini amat mudah diperoleh dipasar.

 

Karena kristal 11.059 MHz dipilih agar bisa membangkitkan kecepatan transmisi data seri standard, dalam sistem berbasis AT89C2051 yang tidak menggunakan sarana komunikasi data seri asinkron lebih baik dipilih kristal dengan frekuensi 12 MHz, sehingga clock untuk timer bisa merupakan frekuensi bulan 1 MHz.

Potongan Program 2 merupakan sub-rutin yang dipakai untuk mengatur UART agar bekerja dengan format data 8N1 dan kecepatan transmisi 9600 Baud, frekuensi kristal yang dipasangkan ke AT89C2051 adlah 11.059 MHz.

Baris 2 sampai 4 dipakai untuk mengatur kerja dari Timer 1. Timer 1 dibuat menjadi 8 bit auto-reload (baris 2, hanya bit 4..7 yang dipakai untuk mengatur Timer1, bit 0..3 dipakai untuk mengatur Timer 0). Nilai yang dipakai untuk mengatur frekuensi clock UART disimpan di TH0 pada baris 3. Baris 4 berfungsi untuk mengaktipkan Timer1.

Baris 5 mengatur agar UART bekerja dengan format data 8N1.

 

Potongan Program 2  Mengatur UART

01: MengaturUART:

02:    MOV   TMOD,#%00100000   T1 = 8 bit auto-reload

03:    MOV   TH1,#$FD          Timer1 reload value

04:    SETB  TR1               Turn Timer 1 On

05:    MOV   SCON,#%01010010   Mode 1, REN, TXRDY, RXEMPTY

06:    RET

 

 

 

Gambar 2 Sistem pembangkit Clock untuk UART

 

 

 

 

 

 

 

 Copyright (C) anekawarna.890m.com 2007
For problems or questions regarding this web contact [admin]
Last updated: Friday October 23, 2009 16:25:29.