SERIAL USART
-
Upload
syamsulrizal123 -
Category
Documents
-
view
382 -
download
13
description
Transcript of SERIAL USART
SERIAL USART
A. DASAR TEORISistem USART ATMega8535 memiliki beberapa keuntungan dibandingkan
dengan sistem UART, yaitu:a. Operasi full duplex.b. Mode operasi asinkron dan sinkron.c. Mendukung komunikasi multiprosesor.
1. Inisialisasi USARTBerikut register yang perlu disetting untuk mengatur komunikasi serial USART:a. UBRR (USART Baud Rate Register)
UBBR merupakan register 16 bit yang berfungsi melakukan penentuan kecepatan transmisi data yang akan digunakan. Dibagi menjadi dua, yaitu UBBRH dan UBBRL. Digunakan untuk menentukan baud rate USART.
Gambar 3.1 USART Baud Rate RegisterRumus : UBRR = (fosc/16xbaudrate)-1; untuk mode kecepatan normal asinkron
b. UCSRA (USART Control and Status Register A)
Tabel 3.1 Register UCSRARXC
TXC UDRE FE DOR PE U2X MPCM
1) RXC bernilai 1 jika ada data atau yang belum terbaca dan bernilai 0 jika tidak ada data.
2) TXC bernilai 1 jika keseluruhan data sudah terkirim.3) UDRE adalah interup yang akan aktif jika UDRIE pada UCSRB diset 1. UDRE
bernilai 1 jika buffer kosong.4) FE bernilai 1 jika terjadi error pada proses penerimaan data.5) DOR bernilai 1 jika terjadi over run data, artinya ketika register penerimaan
telah penuh dan terdapat data baru yang menunggu.6) PE bernilai 1 jika terjadi error pada parity.7) U2X berhubungan dengan mode asinkron.8) MPCM berkaitan dengan proses multiprosesor.
c. UCSRB (USART Control and Status Register B)UCSRB merupakan register 8 bit pengatur aktivasi penerima dan pengirim
USART. Digunakan untuk mengaktifkan penerimaan dan pengiriman data USART
Gambar 3.2 USART Control and Status Register B
RXEN : Jika di set 1 maka akan mengaktifkan penerimaanTXEN : Jika di set 1 maka akan mengaktifkan pengirimanRXCIE : Jika di set 1 maka akan mengaktifkan interupsi penerimaan
d. UCSRC (USART Control and Status Register C)UCSRC merupakan register 8 bit yang digunakan untuk mengatur mode
komunikasi USART.
Gambar 3.3 USART Control and Status Register C
URSEL : Jika di set 1 maka register UCSRC bisa diakses, sebab alamat register UCSRC dan UBRR samaUCSZ2..UCSZ0 : Menentukan ukuran karakter yang dikirimkan.Jika UCSZ2..UCSZ0 = 000 maka ukuran karakter 5 bitJika UCSZ2..UCSZ0 = 001 maka ukuran karakter 6 bitJika UCSZ2..UCSZ0 = 010 maka ukuran karakter 7 bitJika UCSZ2..UCSZ0 = 011 maka ukuran karakter 8 bitJika UCSZ2..UCSZ0 = 100-110 tidak digunakanJika UCSZ2..UCSZ0 = 111 maka ukuran karakter 9 bit
Contoh inisialisasi USART :.equ fclock =11059200.equ baud_rate =19200.equ ubbr_value =(fclock / (16*baud_rate)) - 1init_usart:ldi temp,high(ubbr_value)out UBRRH,templdi temp,low(ubbr_value)out UBRRL,templdi temp,(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)out UCSRB,templdi temp,(1<<URSEL)|(3<<UCSZ0)out UCSRC,temp
2. Pengiriman DataPengiriman data dilakukan per byte menunggu UDR kosong (UDR=register tempat
menyimpan data USART, menjadi satu dengan register UBRR). Jika kosong, maka bitUDRE (USART Data Register Empty) pada UCSRA akan set 1 sehingga siap menerimadata baru yang akan dikirim.
Contoh pengiriman USART:usart_tx:sbis UCSRA,UDRErjmp usart_txout UDR,txbyte
3. Penerimaan DataPenerimaan data dilakukan dengan memeriksa bit RXC (USART Receive
Complete) pada register UCSRA. RXC akan set 1 jika ada data yang siap dibaca. Data yang diterima akan disimpan pada register UDR.
Contoh penerimaan USART :usart_rx:sbis UCSRA,RXCrjmp usart_rxin rxbyte,UDR
4. Contoh Program
.include"m8535def.inc"
.def temp =r16
.def txbyte =r17
.def rxbyte =r18
.equ fclock =11059200
.equ baud_rate =19200
.equ ubbr_value =(fclock / (16*baud_rate)) - 1.org 0x0000rjmp main
main: ldi temp,low(ramend)out spl,templdi temp,high(ramend)out sph,temprcall init_usart
loop: ldi zl,low(2*msg)ldi zh,high(2*msg)
load: lpmmov txbyte,r0cpi txbyte,0breq donercall usart_txinc zlrjmp load
done: rjmp done
init_usart:ldi temp,high(ubbr_value)out UBRRH,templdi temp,low(ubbr_value)
out UBRRL,templdi temp, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)out UCSRB,templdi temp,(1<<URSEL)|(3<<UCSZ0)out UCSRC,tempret
usart_tx:sbis UCSRA,UDRErjmp usart_txout UDR,txbyteret
usart_rx:sbis UCSRA,RXCrjmp usart_rxin rxbyte,UDRret
msg:.db "******Welcome To uPCi Labz******",13,10,0
Keterangan: Angka 13,10 adalah kode ASCII untuk Enter. Jadi pesan akan ditampilkan pada baris baru di editor Hyper Terminal. Angka 0 menunjukkan akhir karakter dari pesan yang dikirim.