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 Start (0),
8 bit data, 1 bit data tambahan (bit
ke 9) dan 1 bit stop (1).
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 Start (0),
8 bit data, 1 bit data tambahan (bit
ke 9) dan 1 bit stop (1).
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
communication 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
SM2=1
maka bit RI
hanya bisa menjadi 1
kalau bit ke 9 yang diterima di
RB8 adalah
1.
Dalam mode kerja 1, jika
SM2=1
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),
SM2=0
(tidak bekerja sebagai kumunikasi multi-prosesor),
REN=1
(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
TI=1,
selama bit TI=0
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 SMOD=0
K bernilai 1 dan K akan bernilai 2 kalau
SMOD=1.
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