0% menganggap dokumen ini bermanfaat (0 suara)
1K tayangan29 halaman

Makalah USART

Makalah ini membahas tentang Universal Syncrhronous and Asyncrhronous Serial Receiver and Transmitter (USART) pada mikrokontroler. USART merupakan salah satu mode komunikasi serial yang memungkinkan transfer data antara mikrokontroler atau dengan perangkat luar melalui pin RxD dan TxD. Makalah ini menjelaskan pengertian USART, register-register yang terkait dengan komunikasi USART, serta cara inisialisasi dan simulasi USART."

Diunggah oleh

Sidik
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
1K tayangan29 halaman

Makalah USART

Makalah ini membahas tentang Universal Syncrhronous and Asyncrhronous Serial Receiver and Transmitter (USART) pada mikrokontroler. USART merupakan salah satu mode komunikasi serial yang memungkinkan transfer data antara mikrokontroler atau dengan perangkat luar melalui pin RxD dan TxD. Makalah ini menjelaskan pengertian USART, register-register yang terkait dengan komunikasi USART, serta cara inisialisasi dan simulasi USART."

Diunggah oleh

Sidik
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 29

KATA PENGANTAR

Puji dan syukurpenulis panjatkan kehadirat Allah SWT karena berkat rahmat
dan hidayah-Nya penulis dapat menyelesaikan penulisan makalah ini dengan baik
Makalah ini merupakan salah satu tugas yang kami susun untuk memenuhi
tugas di semester ganjil pada mata kuliah system mikroprosesor /EMBEDDED.
Adapun makalah ini menjelaskan tentang Universal Syncrhronous and
Asyncrhronous Serial Receiver and Transmitter (USART) . Baik dari segi definisi,
konsep , bagian bagian, prinsip kerja, dan lain lain. Yang mana didalamnya memuat
hal hal penting yang sering terjadi dalam aplikasi mikro controller, khususnya saat
kita berhubungan dengan computer.
Makalah ini mungkin jauh dari sempurna, akan tetapi dalam makalah yang
sederhana ini diharapkan dapat bermanfaat khususnya bagi kami yang menyusun
umumnya bagi pembaca sekalian.

Bandung, 17 Desember 2015

Penyusun

DAFTAR ISI
KATA PENGANTAR........................................................................................... 1
DAFTAR ISI.......................................................................................................... 2
BAB I PENDAHULUAN
A. Latar belakang.............................................................................................. 3
B. Tujuan penulisan.......................................................................................... 3
C. Rumusan masalah..........................................................................................3
D. metode penulisan ......4

BAB II PEMBAHASAN
PETA KONSEP................................................................................................ 5
A. Pengertian USART..................................................................................... 6
B. Register register dalam USART......... 6
C. Inisialisasi USART................................................................................... 16
D. Dual USART............................................................................................ 22
E. Simulasi USART .................................................................................... 25
F. Layout simulasi USART.......................................................................... 26
BAB III PENUTUP
A. Kesimpulan............................................................................................... 24
B. Saran......................................................................................................... 28
DAFTAR PUSTAKA......................................................................................... 29

BAB I
PENDAHULUAN
A. Latar Belakang
Pada saat ini, teknologi semakin berkembang dengan sangat cepat dan
semakin canggih. Perkembangan teknologi ini pastinya sangat berkaitan dengan
perkembangan teknologi komputer. Dimana teknologi komputer merupakan
pendukung bahkan penggerak kemajuan teknologi informasi pada jaman sekarang
ini. Dan tidak bisa dipungkiri bahwa ilmu elektronika sangat berpengaruh kepada
perkembangan Teknologi. Sebuah komputer mampu mengendalikan sebuah
rangkaian alat elektronika menggunakan sebuah chip IC yang dapat diisi program
dan logika yang disebut teknologi Mikroprosesor.
Salah satu teknologi dari system Mikroprosesor yang berhubungan dengan
computer adalah USART, USART merupakan salah satu mode komunikasi yang
dimiliki oleh Mikrokontroler yang dapat digunakan untuk melakukan transfer data
baik antar mikrokontroler maupun dengan modul-modul eksternal termasuk PC.
Untuk lebih jelasnya akan dibahas dalam makalah yang sederhana ini.
B.

Rumusan Masalah
Dalam perumusan masalah ini penulis akan merumuskan tentang:
A. Apa yang dimaksud dengan USART?
B. Sebutkan register register dalam USART?
C. Bagaimana Inisialisasi dari USART?
D. Apa yang di maksud dengan dual USART?
E. Bagai mana contoh simulasi dari USART?

C.

Tujuan Penulisan
Tujuan penulisan makalah ini adalah untuk:
1. Menjelaskan pengertian USART
2. Menjelaskan konsep kopnsep register USART
3.

Mesimulasikan Prinsip kerja USART

D. Metode Penulisan
Metode yang digunakan dalam penulisan makalah ini adalah
menggunakan metode pustaka yaitu penulis menggunakan media pustaka
dalam penyusunan makalah ini.

PETA KONSEP
Definisi USART

UDR (USART Data


Register)

UCSRA (USART Control


dan Status Register A)
UCSRB (USART Control

REGISTER
USART

dan Status Register B)

USART
UCSRC (USART Control
dan Status Register C)
UBRR (USART Baud Rate
Register)
Pemrograman
dengan
AVR/CVAVR
INISIALISASI USART
Penerimaan data

Penerimaan data
serial

DUAL USART

Pengiriman data
dengan string
Mengirim data
dengan interupsi

SIMULASI &
LAYOUT

Menerima data
dengan interupsi

BAB II
PEMBAHASAN
A. PENGERTIAN USART
Universal Syncrhronous and Asyncrhronous Serial Receiver and
Transmitter (USART) juga merupakan salah satu mode komunikasi serial yang
dimiliki oleh ATmega8535. USART merupakan komunikasi yang memiliki
fleksibilitas tinggi, yang dapat digunakan untuk melakukan transfer data baik antar
mikrokontroler maupun dengan modul-modul eksternal termasuk PC yang
memiliki fitur UART.
USART memungkinkan transmisi data baik secara syncrhronous maupun
asyncrhronous, sehingga dengan memiliki USART pasti kompatibel dengan
UART. Pada ATmega8535, secara umum pengaturan mode syncrhronous maupun
asyncrhronous adalah sama. Perbedaannya hanyalah terletak pada sumber clock
saja. Jika pada mode syncrhronous masing-masing peripheral memiliki sumber
clock sendiri, maka pada mode syncrhronous hanya ada satu sumber clock yang
digunakan secara bersama-sama. Dengan demikian, secara hardware untuk mode
asyncrhronous hanya membutuhkan 2 pin yaitu TXD dan RXD, sedangkan untuk
mode syncrhronous harus 3 pin yaitu TXD, RXD dan XCK.
USART merupakan salah satu mode komunikasi yang dimiliki oleh
Mikrokontroler ATMega8535. USART memiliki 2 pin (RxD dan TxD) untuk
Asynchronous dan 3 bit TxD, RxD, xCK untuk Synchronous.Untuk mengatur
komunikasi USART dilakukan melalui beberapa register.
B. REGISTER PADA USART
Komunikasi dengan menggunakan USART dapat dilakukan dengan dua
cara yaitu dengan mode sinkron dimana pengirim data mengeluarkan pulsa/clock
untuk sinkronisasi data, dan yang kedua dengan mode asinkron, dimana pengirim
data tidak mengeluarkan pulsa/clock, tetapi untuk proses sinkronisasi memerlukan
inisialisasi agar data yang diterima sama dengan data yang dikirimkan. Pada proses
inisialisasi ini setiap perangkat yang terhubung harus memiliki baud rate (laju data)
yang sama. Pada mikrokontroler AVR untuk mengaktifkan dan mengeset
6

komunikasi USART dilakukan dengan cara mengaktifkan register2 yang digunakan


untuk komunikasi USART. Register register yang dipakai antara lain:

1. UDR (USART Data Register)


UDR (USART Data Register) adalah register yang paling penting dalam
komunikasi serial ini. Sebab data yang dikirim keluar harus ditempatkan pada
register ini, sedang data yang diterima dari luar dapat dibaca pada register ini pula.
Pada intinya register UDR digunakan sebagai buffer untuk menyimpan data, baik
yang akan dikirim maupun yang akan diterima. UDR, Merupakan register 8 bit
yang terdiri dari 2 buah dengan alamat yang sama, yang digunakan sebagai tempat
untuk menyimpan data yang akan dikirimkan (TXB) atau tempat data diterima
(RXB) sebelum data tersebut dibaca.

Seperti yang dapat dilihat pada gambar, sejatinya UDR adalah terdiri dari 2
buah register terpisah, dengan alamat dan nama yang sama, yakni UDR. Saat kita
menulis data pada UDR ini, maka sebenarnya kita menulis data pada UDR (Write)
yang kemudian USART mem-frame dengan bit-bit frame dan segera akan segera
mengirimkan data tersebut secara serial. Saat kita membaca UDR, sebenarnya

adalah membaca UDR (Read). Data yang diterima secara serial akan disimpan
dalam register tersebut, setelah hadirnya stop bit, maka USART akan membuang
frame dan menyiapkan data pada UDR (Read ) sehingga dapat segera di ambil. Kita
dapat menggunakan instruksi OUT dan IN untuk menulis dan membaca register
UDR ini.
2. UCSRA (USART Control dan Status Register A)
UCSRA adalah register yang penting. Sebegian besar adalah berisi status
dari dari proses transfer komunikasi serial itu sendiri. Adapun penjelasan dari bitbit tersebut adalah:

Keterangan Per-bit:
a. Bit 7 RxC: USART Receive Complete
Bit ini menjadi tinggi jika ada data yang masih belum diambil atau dibaca
di dalam buffer penerima ( UDR-read ). Bit ini akan otomatis rendah setelah buffer
penerima telah dibaca. Jika Unit Penerima tiba-tiba dimatikan setelah diaktifkan,
maka isi dalam buffer penerima akan langsung dibuang (flushed) dan bit RxC ini
akan langsung dibuat rendah. Bit ini juga bisa mengaktifkan instrupsi Receive
Complete interrupt . Lihat penjelasan tentang bit RxCIE. Untuk mengetahui
penerimaan data jika high (1) ada data baru dan jika low (0) tidak ada data baru.

b. Bit 6 TxC: USART Transmit Complete


Bit ini akan otomatis tinggi saat semua frame dalam shift-register
pengiriman telah digeser semuanya keluar dan jika tidak ada data baru yang
berarada dalam buffer pengiriman (UDR-write). Bit TxC ini akan otomatis rendah
setelah Transmit Complete interrupt dijalankan, atau dengan meng-clearkan
secara manual dengan cara menulis bit ini dengan nilai 1s (tinggi). Bit TxC ini
pula dapat membangkitan Transmit Complete interrupt . Lihat penjelasan

tentang bit TxCIE. Untuk mengetahui pengiriman data, jika high (1) ada data
baru dan jika low (0) tidak ada data baru.

c. Bit 5 UDRE: USART Data Register Empty


Bit UDRE ini adalah untuk menjadikan tanda jika buffer pengiriman (UDRwrite) telah siap untuk diberikan data baru. Bit ini akan bernilai 1 (tinggi) , berarti
kita saat itu boleh menulis UDR. Bit ini dapat membangkitkan UDRIE atau Data
Register Empty interrupt . Lihat penjelasan tentang bit UDRIE. Bit ini setelah reset
langsung bernilai 1, yang berarti siap untuk melakukan pengiriman.

d. Bit 4 FE: Frame Error


`

Bit ini otomatis menjadi tinggi jika saat menerima data, ternyata ada

kesalahan dari frame yang diterima. Misalnya saat Unit penerima seharusnya
menunggu sebuah bit Stop, ternyata data yang ada adalah 0 (rendah). Bit ini valid
setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0 (rendah ) saat
kita sedang menulis UCSRA.
e. Bit 3 DOR: Data OverRun
Bit ini akan menjadi tinggi saat kondisi overrun terjadi. Kondisi ini terjadi
saat buffer penerima sudah penuh dan berisi 2 data karakter, dimana data karakter
terakhir tidak bisa dipindahkan ke UDR-read, karena tidak kunjung dibaca oleh
user. Bit ini valid setelah kita membaca UDR. Harap selalu menulis bit ini dengan
0 (rendah ) saat kita sedang menulis UCSRA.
f. Bit 2 PE: Parity Error
Bit ini akan menjadi tinggi saat karakter yang sedang diterima ternyata
memiliki format parity yang salah. Tentu saja hal ini terjadi jika bit parity
checking diaktifkan (UPM1 = 1). Bit ini valid setelah kita membaca UDR. Harap
selalu menulis bit ini dengan 0 (rendah ) saat kita sedang menulis UCSRA.
g. Bit 1 U2X: Double the USART Transmission Speed

Bit ini hanya berlaku untuk operasi tak sinkron (asynchronous). Jika bit ini
kita tulis dengan 1s (tinggi) maka baud rate akan menjadi lebih cepat 2 kali. Hal
itu terjadi karena pembagi baud rate yang biasanya membagi 16 kemudian menbagi
menjadi dengan 8 saja. Tulis bit ini dengan 0s (rendah) untuk oprasi sinkron
(synchronous).
h. Bit 0 MPCM: Multi-processor Communication Mode
Bit ini digunakan untuk mode komunikasi Multi-Prosesor. Saat bit PMCM
ini dibuat menjadi tinggi maka setiap data yang diterima oleh unit penerima, namun
tidak dilengkapi dengan informasi alamat, data yang benar, maka akan diabaikan.
Bit ini hanya berguna untuk penerima, dan bukan untuk pengirim.

3. UCSRB (USART Control dan Status Register B)


UCSRB (USART Control dan Status Register B) adalah register yang penting.
Sebagian besar adalah berisi status dari dari proses transfer komunikasi serial itu
sendiri. Adapun penjelasan dari bit-bit tersebut adalah:

Keterangan Per-bit:
a. Bit 7 RxCIE: RX Complete Interrupt Enable
Menulis bit ini menjadi tinggi akan mengaktifkan instrupsi yang berkaitan
dengan bit RxC. "USART Receive Complete interrupt" akan terjadi hanya jika bit
RxCIE ini dan bit I (Global Inteurpt) milik register SREG adalah 1's (Tinggi), dan
a d a
U

t i n g g i n y a
C

b i t

R x C
R

m i l i k
A

b. Bit 6 TxCIE: Tx Complete Interrupt Enable


Menulis bit ini menjadi tinggi maka akan mengaktifkan interupsi pada bit
TxC, yakni "USART Transmit Complete interrupt" yang akan menjalankan

10

interupsi setiap frame dari data pengiriman selasai dikirim atau dengan kata lain
terjadi interupsi setiap bit TxC menjadi tinggi. Interupsi hanya bisa terjadi jika
sebelumnya bit TxCIE ini di-set tinggi dan bit Global Interupt (I) milik register
UCSRA juga di-set tinggi.
c. Bit 5 UDRIE: USART Data Register Empty Interrupt Enable
Menulis bit ini menjadi tinggi maka akan mengaktifkan interupsi pada bit
UDRE, yakni "Data Register Empty interrupt" yang akan menjalankan interupsi
saat data pada buffer pengiriman sudah kosong atau dengan kata lain setiap bit
UDRE menjadi tinggi. Interupsi hanya bisa terjadi jika sebelumnya bit UDRIE ini
di-set tinggi dan bit Global Interupt (I) milik register UCSRA juga di-set tinggi.
d. Bit 4 RxEN: Receiver Enable
Agar unit penerima dari USART dapat bekerja, maka bit RxEN ini harus
dibuat tinggi sebelumnya. Begitu dibuat tinggi, pin RxD akan diputus sebagai
standar I/O dan dihubungkan dengan unit penerima USART ini. Namun jika tibatiba bit RxEN ini dibuat rendah kembali setelah tadinya tinggi, maka unit penerima
USART akan segera menghentikan kerjanya dan membatalkan proses penerimaan
data, serta membersihkan buffer penerimaan, termasuk juga bit FE, DOR, dan PE.
e. Bit 3 TxEN: Transmitter Enable
Agar unit pengirim USART dapat bekerja, maka bit TxEN ini harus dibuat
tinggi sebelumnya. Begitu dibuat tinggi, pin TxD akan diputus dari standar I/O dan
dihubungkan dengan unit pengirim USART ini. Namun jika tiba-tiba bit TxEN ini
dibuat rendah kembali setelah tadinya tinggi, maka unit pengirim USART masih
harus menyelesaikan tugasnya yang terakhir, yakni mengirim data yang tersisa.
Baru kemudian iUnit pengiriman USART akan berhenti dan mengembalikan port
TxD menjadi standar I/O kembali.
f. Bit 2 UCSZ2: Character Size
Bit ini adalah pasangan dari Bit UCSZ1 dan bit UCSZ0 milik register
UCSRC, untuk menentukan jumlah data yang hendak ditransfer.
g. Bit 1 RxB8: Receive Data Bit 8

11

Jika kita menggunakan format penerimaan data 9-bit maka bit yang terakhir
yang diterima akan ditempatkan pada bit RxB8 ini. Pabrik menyarankan untuk
membaca bit ini terlebih dahulu sebelum membaca 8-bit data lainnya di UDR.
h. Bit 0 TxB8: Transmit Data Bit 8
Jika kita menggunakan format pengiriman data 9-bit maka bit yang
terakhir yang hendak dikirim ditempatkan pada bit TxB8 ini. Pabrik menyarankan
untuk menulis bit ini terlebih dahulu sebelum menulis 8-bit data lainnya di UDR.

4. UCSRC (USART Control dan Status Register C)


regsiter ini adalah register penting, untuk melakukan kontrol pada peralatan
USART. Namuin jika tidak menggunakan fungsi USART, maka boleh
mengabaikan register ini seperti dalam keadaan resetnya. dengan nilai $96, yang
berarti bahwa sedang meggunakannya sebagai UART, Parity-none, 1 stop bit,
ukuran data 8-bit (UCSZ2 = 0).

Catatan

: Register UCSRC adalah berbagi alamat I/O yang sama dengan

register UBBRH. Lihat bagaimana mengakses UBBRH dan UCSRC pada


Accessing UBRRH/UCSRC Registers untuk mendapatkan penjelasan lebih
lengkap.
a. Bit 7 URSEL: Register Select
Saat akan menulis port $20 maka ada dua register yang akan akan diakses,
yang ditentukan dari D7 dari data yang dituliskan. Jika D7 (MSB) adalah 1 atau
datanya diatas $80 maka sedang menuliskan data pada UCSRC. Sedang jika data
yang hendak dituliskan adalah dibawah $80, maka kita sedang menulis UBRRH.
Bagaimana saat membaca UCSRC, pastikan sebelumnya bit ini dalam keadaan
tinggi sebelumnya membaca lokasi $20 ini.
b. Bit 6 UMSEL: USART Mode Select

12

Bit ini untuk memilih USART dijadikan mode Taksinkron (Asynchronous) atau
Sinkron (Synchronous).
c. Bit 5:4 UPM1:0: Parity Mode
Bit-bit ini adalah untuk menghidupkan pembangkit dan pemeriksa parity. Jika
diaktifkan maka akan otomatis membangkitkan parity pada setiap data yang
dikirimkan dan akan memeriksa validitas parity dari setiap data yang diterima. Pada
Unit penerima kita akan mendapatkan parity yang diterima, kemudian parity
tersebut akan dibandingkan dengan status dari UMP0. Jika ternyata tidak cocok,
maka bendera bit PE (Parity Error) pada UCSRA akan diaktifkan.
d. Bit 3 USBS: Stop Bit Select
Dengan membiarkan bit in menjadi 0 maka frame akan dilengkapi dengan
Stop-bit selebar 1-bit. Sedang jika bit ini ditulis tinggi, maka bit stop menjadi 2bit. Stop bit sepanjang 2-bit ini biasanya diperlukan bagi system lain yang
terhubung dengan AVR akan memiliki waktu yang cukup untuk memproses data
yang baru saja diterimanya, dan sudah berar-benar siap untuk menerima data
berikutnya. Unit penerima USART tidak menggunakan bit ini.
Tabel Jumlah Bit Sebagai Bit Stop

e. Bit 2:1 UCSZ1:0: Character Size


Menentukan karakter dari data yang hendak dikirimkan dan diterima
haruslah merujuk pada bit-bit ini. Yakni bit UCSZ1 dan bit UCSZ0 milik register
ini. Ditambah dengan bit UCSZ2 pada register UCSRB.
Tabel Jumlah Data Yang Di Transfer

13

\
f. Bit 0 UCPOL: Clock Polarity
Bit ini hanya digunakan pada mode Synchronous. Dalam mode ini akan
direlasikan antara daya yang diterima dan data yang dikirm dan disinkronkan
dengan status dari XCX (synchronous clock). Perhatikan tabel 5 untuk mendalami
bagaimana singkronikasi terjadi untuk ujung XCX (edge) yang berbeda dengan
mengatur bit UCPOL ini.

5. UBRR (USART Baud Rate Register)


Sebagaimana biasanya, baud rate antara AVR (sumber) dan device target haruslah
sama. Hal ini menjadi sangat penting agar tidak ada transfer data palsu yang
isinya diluar kemauan.

Catatan:
Register UBRRH adalah berbagi alamat I/O yang sama dengan register UBBRH.
Lihat bagaimana mengakses UBBRH dan UCSRC pada Accessing
UBRRH/UCSRC Registers untuk mendapatkan penjelasan lebih lengkap.

a. Bit 15 URSEL: Register Select


Bit ini untuk memilih dalam mengakses alamat port $20. Seperti yang kita
tahu bahwa alamat port ini dimiliki oleh 2 buah regsiter yang berbeda, yakni

14

UBRRH dan UCSRC. Saat kita hendak menulis UBBRH maka pastikan data bit
MSB atau D7 harus rendah.
b. Bit 14:12 Reserved Bits
Bit ini tidak digunakan saat ini. Mungkin akan digunakan pada produksi
berikutnya. Oleh karena itu kita disarankan untuk tidak menulisnya dengan nilai 1
pada bit-bit yang tidak digunakan.
c. Bit 11:0 UBRR11:0: USART Baud Rate
Register Ini adalah merupakan register 12-bit yang mana berisi dengan
pengatur baud rate USART. Register ini adalah pasangan dari register UBBRH dan
UBRRL, dimana UBBRL berisi 8-bit LSB (bit-bit terbawah) dan sisanya dimiliki
oleh UBRRH. Mengubah nilai dari register ini saat transmisi berlangsung, akan
menyebabkan kesalahan transmisi, karena baud rate akan langsung berubah seiring
dengan berubahnya nilai dari register ini.
Tabel UBRRH (USART Baud Rate Register High)

Keterangan:
Baud

= Baud Rate (bps)

fosc

= Frekuensi Kristal

UBRR

= Nilai UBRR

15

C. INISIALISASI USART
USART harus diinisialisasi sebelum komunikasi dilakukan. Proses inisialisasi
biasanya terdiri dari pengaturan baud rate, pengaturan format frame dan
mengaktifkan(enable) Transmitter atau Receiver/Penerima tergantung pada
penggunaan. Untuk operasi USART dgn interupsi, Global Interrupt Flag harus
diclearkan

(dan interupsi dinonaktifkan secara global) ketika melakukan

inisialisasi.
Bit Flag TXC dapat digunakan untuk memeriksa bahwa Transmitter telah
menyelesaikan semua transfer, dan bit flag RXC dapat digunakan untuk memeriksa
bahwa tidak ada data yang belum dibaca dalam buffer penerima. Perhatikan bahwa
Flag TXC harus diclearkan sebelum pengiriman (sebelum UDR ditulis) jika
digunakan untuk pengiriman.
Berikut ini contoh inisialisasi dan program penerimaan dan pengiriman dgn AVR
USART.
1. Pemrograman AVR USART dgn AVR Studio atau Pemrograman
USART dengan codevision
Pada pemrograman dgn codevision anda tdk perlu pusing menghitung nilai
register control UCSR dan register UBRR , cukup gunakan tool codewizard.
klik Tools ->Codewizard , pilih tab USART sbb:

16

Setelah

USART anda

setting sesuai

kebutuhan pd tab USART , code template dan nilai


seting register register USART otomatis akan
dibuatkan oleh codevision setelah anda mengklik
menu

generate,save

and

exit

hasilnya seperti dibawah ini :


#include <mega32.h>
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
}
// USART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif

17

// This flag is set on USART Receiver buffer overflow


unsigned char USART_Receive( void )

bit rx_buffer_overflow;

{
// USART Receiver interrupt service routine

/* Wait for data to be received(RXC=1)

interrupt [USART_RXC] void usart_rx_isr(void)

*/

while ( !(UCSRA & (1<<RXC)) )

char status,data;

status=UCSRA;

/* Get and return received data from

data=UDR;

buffer */

if ((status & (FRAMING_ERROR | PARITY_ERROR

return UDR;

| DATA_OVERRUN))==0)

2. Penerimaan Data
Fungsi Penerima pd USART diaktifkan dengan menset 1 bit RXEN di
register UCSRB . Ketika penerima diaktifkan, operasi normal pin i/o dirubah
mejadi pin receive serial(Rx) USART . Baud rate, mode operasi dan format frame
harus diatur sebelum ada penerimaan serial.
Data yang diterima serial ditampung di bufer penerima dan kita bisa
mendapatkan data tsb dgn cara membaca register UDR.

Berikut ini contoh

pembacaan data serial USART dengan polling bit RXC . bit RxC otomatis akan
bernilai 1 jika ada data di buffer penerima dan bernilai 0 jika tdk ada data di buffer
penerima. bit RXC ada bit ke7 di register UCSRA.
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<7)) )
;
/* Get and return received data from buffer */
return UDR;
}

18

atau
#define RXC 7
3. Menerima data dengan interupsi
Untuk mengaktifkan interupsi penerima dengan cara menset bit RXCIE dan
RXC (dengan cara mengaktifkan interupsi global).Ketika ada data diterima rutin
interupsi harus membaca data UDR krn hal ini akan mereset bit RXC. jika tidk
sebuah interupsi baru akan terjadi lagi.
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
}
// USART initialization
//clock xtal = 11.059200mhz
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x98;

// 10011000

UCSRC=0x86;

//10000110

RXCIE=1 , TXEN=1, RXEN=1.

UBRRH=0x00;
UBRRL=0x47;

// set baudrate 9600

19

4. Pengiriman Data Serial


Fungsi Pengiriman pd USART diaktifkan dengan menset 1 bit TXEN di
register UCSRB . Ketika fungsi pengiriman pd USRAT diaktifkan, operasi normal
pin i/o dirubah mejadi pin transmit serial(Tx) USART . Baud rate, mode operasi
dan format frame harus diatur sebelum ada pengirimn serial.
Data yang akan dikirim di simpan ke bufer pengiriman dengan cara
menyimpan data ke register . bit UDRE otomatis akan bernilai 1 jika buffer siap
mengirim data(buffer kosong) dan bernilai satu jika bufer berisi data/sedang ada
proses

pengiriman.

bit

UDRE

ada

di

bit

ke

pada

register

UCSRA. Keadaan pengiriman selain diketahui dari bit UDRE juga dari ke adaan
bit TXC.
Berikut ini contoh code pengiriman data dgn cara pooling/memeriksa bit UDRE .
void USART_kirimChar( unsigned char data )
{
/* Wait for empty transmit buffer (UDRE=1) */
while ( !( UCSRA & (1<<UDRE)) );
/* Put data into buffer, sends the data */
UDR = data;
}
5. Mengirim data string
Data string merupakan sebuah array bertype char yg diakhiri dengan karakter
NULL .
void sendString(char *s)
{
while (*s) {

20

USART_kirimChar(*s);
s++;}
}
Contoh sederhana mengirim bilangan /angka
Tiap digit angka dikirim satu persatu. sebelum dikirim angka dirubah ke ASCII
dengan menambah 48.
karna kode ASCII dari 0 adalah 0+48= 48
kode ASCII dari 1 adalah 1+48 = 49 dst..
void kirim_angka (unsigned int angka)

unsigned int digit;

// USART Transmitter buffer


#define TX_BUFFER_SIZE 16
char tx_buffer[TX_BUFFER_SIZE];

digit=angka/1000;

unsigned char tx_rd_index,;

USART_kirimChar(48+digit);

// USART Transmitter interrupt service


routine
interrupt [USART_TXC] void
usart_tx_isr(void)
{

angka%=1000;
digit=angka/100;
USART_kirimChar(48+digit);
angka%=100;

if (++tx_rd_index == TX_BUFFER_SIZE)
return;

digit=angka/10;
UDR=tx_buffer[tx_rd_index];
}

USART_kirimChar(48+digit);
angka%=10;
USART_kirimChar(48+angka);
}
6. Pengiriman dengan Interupsi

Untuk interupsi pengiriman bisa diaktifkan dengan 2 pilihan yaitu bit TXCIE dan
UDRIE.

bila yg diaktfikan bit TXCIE=1 maka interupsi akan di triger oleh bit
TXC

21

bila yg diaktifkan bit UDRIE=1 maka interupsi akan di triger oleh bit
UDRE

Contoh dibawah ini inisialisasi interupsi pengiriman dgn triger TXC


// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On

, Interupsi Receiver On

// USART Transmitter: On , interupsi Transmiter On


// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0xD8; //11011000 , RXCIE=1, TXCIE=1 , TXEN=1, RXEN=1
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
Untuk menaktifkan interupsi pengiriman kita buat TXC= 0 dengan cara
mengirim data ke buffer pengirim UDR, USART_Transmit(tx_buffer[0]); // data
pertama (tx_rd_index=0) dikirm tanpa interupsimaka bufer pengirim akan ada
isinya dan selanjutnya interupsi dijalankan. rutin interupsi akan mengirm semua
data di tx_buffer fungsi USART_Transmit() adalah sbb sebagaimana yg sudah di
bahas pada bagian diatas sebelumnya
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer (UDRE=1) */
while ( !( UCSRA & (1<<UDRE)) )
UDR = data;
}
D. DUAL USART
Beberapa type AVR mempunyai 2 buah jalur komunikasi serial (dual
USART) contoh atmega 161, atmega 162 dan atmega 128. Penggunaan kedua jalur

22

komunikasi tsb pada prinsipnya sama hanya berbeda register yg digunakan.


Register yang digunakan kedua jalur komunikasi tsb spt pada gambar dibawah ini:

Register yg digunakan USART pertama : UCSR0A, UCSR0B, UCSR0C UDR0,


UBRR0L, dan UBRR0H
Register yg digunakan USART kedua

: UCSR1A, UCSR1B, UCSR1C UDR1,

UBRR1L, dan UBRR1H

23

berikut contoh inisialisasi kedua register pada atmega128


// USART0 initialization
// Communication
Parameters: 8 Data, 1 Stop,
No Parity
// USART0 Receiver: On
// USART0 Transmitter: On
// USART0 Mode:
Asynchronous
// USART0 Baud rate: 9600
UCSR0A=0x00;
UCSR0B=0x98;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x47;
// USART1 initialization
// Communication
Parameters: 8 Data, 1 Stop,
No Parity
// USART1 Receiver: On
// USART1 Transmitter: On
// USART1 Mode:
Asynchronous
// USART1 Baud rate: 9600
UCSR1A=0x00;
UCSR1B=0x98;
UCSR1C=0x06;
UBRR1H=0x00;
UBRR1L=0x47;

24

E. SIMULASI
1. Script

25

F. LAYOUT PROGRAM

Ini adalah SS program saat pertama kali dijalankan. Jadi semua menyala
sementara karena belum ada

perintah dari user

Yang kedua setelah user menekan tombol q pada virtual terminal akan
menampilkan list program/ petunjuk penggunaan serta menampilkan suhu,
keadaan AC dan keterangan pencahayaan sekaligus

26

Kemudian saat user menekan tombol a, maka lampu akan menyala

27

BAB III
PENUTUP
A. KESIMPULAN
1. Pengertian USART
USART merupakan salah satu mode komunikasi yang dimiliki oleh
Mikrokontroler ATMega8535. USART memiliki 2 pin (RxD dan TxD)
untuk

Asynchronous

dan

bit

TxD,

RxD,

xCK

untuk

Synchronous.Untuk mengatur komunikasi USART dilakukan melalui


beberapa register.
2. Register pada USART rerdiri dari:
a.
b.
c.
d.
e.

UDR (USART Data Register)


UCSRA (USART Control dan Status Register A
UCSRB (USART Control dan Status Register B
UCSRC (USART Control dan Status Register C
UBRR (USART Baud Rate Register)

3. Inisislasisasi USART
Proses inisialisasi biasanya terdiri dari pengaturan baud rate,
pengaturan format frame dan mengaktifkan(enable) Transmitter atau
Receiver/Penerima tergantung pada penggunaan. Untuk operasi
USART dgn interupsi, Global Interrupt Flag harus diclearkan (dan
interupsi dinonaktifkan secara global) ketika melakukan inisialisasi. Bit
Flag TXC dapat digunakan untuk memeriksa bahwa Transmitter telah
menyelesaikan semua transfer, dan bit flag RXC dapat digunakan
untuk memeriksa bahwa tidak ada data yang belum dibaca dalam buffer
penerima

B. Saran
Untuk mempelajari secara teoritis tentang depresiasi dan aktiva tetap,
bisa dengan mencari sumber yang lebih relevan. Yang berhubungan dengan
mikrocontroler. Selain itui bisa dengan cara melakukan simulasi langsung
menggunakan shoftware guna mempermudah proses pemahaman materi
yang sedang di pelajari.

28

DAFTAR PUSTAKA

USART_Konsep Konsep pemrograman.pdf diunduh dari


http://www.ece.msstate.edu/~reese/EE3724/lectures/USART/USARTt.pdf
dokumen.tips_usart-codevisionavr-1-kirim-data-usart.pdf diunduh dari
http://anotherorion.com/usart-codevisionavr-1-kirim-data-usart/
http://www.scribd.com/doc/55236107/i8088
http://www.datasheetarchive.com/i8088+cpu%C2-datasheet.html

29

Anda mungkin juga menyukai