Anda di halaman 1dari 11

Percobaan III

Komunikasi USART Dan Evaluasi Modul I-III


Iwan Panjaitan (14S16054)
Tanggal Percobaan: 05/04/2019
ELS3203 - Praktikum Sistem Mikroprosesor
Laboratorium Dasar Teknik Elektro – Teknik Elektro
Institut Teknologi Del

Abstrak— Pada praktikum Komunikasi USART ini akan Komunikasi serial data antara master dan slave pada SPI diatur
dilakukan percobaan untuk memahami bagaimana suatu melalui 4 buah pin yang terdiri dari SCLK, MOSI, MISO, dan
melakukan koneksi hubungan yang ada pada suatu SS sbb:
microprocessor ATMega 8335 berjalan. Dimana pertama- - SCLK dari master ke slave yang berfungsi sebagai clock
tama praktikan diharapkan mampu memahami datasheet - MOSI jalur data dari master dan masuk ke dalam slave
dari ATMega 8535, untuk melihat bagaimana fungsi dari - MISO jalur data keluar dari slave dan masuk ke dalam master
tiap register yang ada serta nilai bit yang dimiliki pada - SS (slave select) merupakan pin yang berfungsi untuk
timer/counter ATMega 8535. Untuk melakukan praktikum mengaktifkan slave
ini digunakan bahasa pemrograman C pada CV AVR. Poin penting yang ingin dicapai pada praktikum ini ialah agar
Konfigurasi untuk timer/counter ini juga akan diaplikasikan praktikan:
dengan membuat sebuah delay melalui register a. Praktikan memahami datasheet ATMega 8535.
timer/counter yang ada pada ATMega 8535. Delay yang b. Praktikan mampu membuat aplikasi komunikasi USART
telah dibuat akan ditampilkan pada LED Display yang akan c.Praktikan mampu membuat aplikasi External Interrupt pada
diamati dan dimodifikasi sebagai keluaran untuk delay serta AVR dengan menggunakan bahasa pemprograman C pada CV
external interrupt. Sehingga pada akhirnya praktikan AVR.
mampu membuat aplikasi External Interrupt pada AVR
dengan menggunakan bahasa pemprograman C pada CV
AVR. II. LANDASAN TEORETIS
Dasar teori yang akan digunakan pada praktikum ini ialah
Kata Kunci: Register, Baudrate, USART. sebagai berikut:

Register yang digunakan untuk mengatur komunikasi


I. PENDAHULUAN USART ialah:

U SART (Universal Syschronous Asynchronous Received


Transmitter) 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. USART adalah 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 asyncrhronous
masing-masing peripheral memiliki sumber clock sendiri, maka
1. UDR (USART Data Register) adalah register yang paling
pada mode syncrhronous hanya ada satu sumber clock yang
penting dalam komunikasi serial ini. Sebab data yang dikirim
digunakan secara bersama-sama. Dengan demikian, secara
keluar harus ditempatkan pada register ini, sedang data yang
hardware untuk mode asyncrhronous hanya membutuhkan 2 pin
diterima dari luar dapat dibaca pada register ini pula. Pada
yaitu TXD dan RXD, sedangkan untuk mode syncrhronousharus
intinya register UDR digunakan sebagai buffer untuk
3 pin yaitu TXD, RXD dan XCK.
menyimpan data, baik yang akan dikirim maupun yang akan
diterima. 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 setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0
UDR (Write) yang kemudian USART mem-frame dengan (rendah) saat kita sedang menulis UCSRA.
bit-bit frame dan segera akan segera mengirimkan data Bit 2 – PE: Parity Error
tersebut secara serial. Saat kita membaca UDR, sebenarnya Bit ini akan menjadi tinggi saat karakter yang sedang diterima
adalah membaca UDR (Read). Data yang diterima secara ternyata memiliki format parity yang salah. Tentu saja hal ini
serial akan disimpan dalam register tersebut, setelah terjadi jika bit parity checking diaktifkan (UPM1 = 1). Bit ini valid
hadirnya stop bit, maka USART akan membuang frame dan setelah kita membaca UDR. Harap selalu menulis bit ini dengan 0
menyiapkan data pada UDR (Read) sehingga dapat segera di (rendah) saat kita sedang menulis UCSRA.
ambil. Kita dapat menggunakan instruksi OUT dan IN untuk Bit 1 – U2X: Double the USART Transmission Speed
menulis dan membaca register UDR ini. Bit ini hanya berlaku untuk operasi tak sinkron (asynchronous).
Jika bit ini kita tulis dengan 1’s (tinggi) maka baud rate akan
2. UCSRA (USART Control dan Status Register A) menjadi lebih cepat 2 kali. Hal itu terjadi karena pembagi baud
adalah register yang penting. Sebegian besar adalah berisi rate yang biasanya membagi 16 kemudian menbagi menjadi
status dari dari proses transfer komunikasi serial itu sendiri. dengan 8 saja. Tulis bit ini dengan 0’s (rendah) untuk oprasi
Adapun penjelasan dari bit-bit tersebut adalah: sinkron (synchronous).
Bit 0 – MPCM: Multi-processor Communication Mode Bit ini
Keterangan Per-bit: digunakan untuk mode komunikasi Multi-Prosesor. Saat bit
Bit 7 – RxC: USART Receive Complete PMCM ini dibuat menjadi tinggi maka setiap data yang diterima
Bit ini menjadi tinggi jika ada data yang masih belum diambil oleh unit penerima, namun tidak dilengkapi dengan informasi
atau dibaca di dalam buffer penerima (UDR-read). Bit ini akan alamat, data yang benar, maka akan diabaikan. Bit ini hanya
otomatis rendah setelah buffer penerima telah dibaca. Jika Unit berguna untuk penerima, dan bukan untuk pengirim.
Penerima tiba-tiba dimatikan setelah diaktifkan, maka isi dalam
buffer penerima akan langsung dibuang (flushed) dan bit RxC ini 3. UCSRB (USART Control dan Status Register B)
akan langsung dibuat rendah. Bit ini juga bisa mengaktifkan adalah register yang penting. Sebagian besar adalah berisi
instrupsi “Receive Complete interrupt”. Lihat penjelasan tentang status dari dari proses transfer komunikasi serial itu sendiri.
bit RxCIE. Untuk mengetahui penerimaan data jika high (1) ada Adapun penjelasan dari bit-bit tersebut adalah:
data baru dan jika low (0) tidak ada data baru.
Bit 6 – TxC: USART Transmit Complete Keterangan Per-bit:
Bit ini akan otomatis tinggi saat semua frame dalam shift-register Bit 7 – RxCIE: RX Complete Interrupt Enable
pengiriman telah digeser semuanya keluar dan jika tidak ada data Menulis bit ini menjadi tinggi akan mengaktifkan instrupsi yang
baru yang berarada dalam buffer pengiriman (UDR-write). Bit berkaitan dengan bit RxC. “USART Receive Complete interrupt”
TxC ini akan otomatis rendah setelah “Transmit Complete akan terjadi hanya jika bit RxCIE ini dan bit I (Global Inteurpt)
interrupt” dijalankan, atau dengan meng-clearkan secara manual milik register SREG adalah 1’s (Tinggi), dan ada tingginya bit
dengan cara menulis bit ini dengan nilai 1’s (tinggi). Bit TxC ini RxC milik UCSRA.
pula dapat membangkitan “Transmit Complete interrupt”. Lihat Bit 6 – TxCIE: Tx Complete Interrupt Enable
penjelasan tentang bit TxCIE. Untuk mengetahui pengiriman Menulis bit ini menjadi tinggi maka akan mengaktifkan interupsi
data, jika high (1) ada data baru dan jika low (0) tidak ada data pada bit TxC, yakni “USART Transmit Complete interrupt” yang
baru. akan menjalankan interupsi setiap frame dari data pengiriman
Bit 5 – UDRE: USART Data Register Empty selasai dikirim atau dengan kata lain terjadi interupsi setiap bit
Bit UDRE ini adalah untuk menjadikan tanda jika buffer TxC menjadi tinggi. Interupsi hanya bisa terjadi jika sebelumnya
pengiriman (UDR-write) telah siap untuk diberikan data baru. Bit bit TxCIE ini di-set tinggi dan bit Global Interupt (I) milik register
ini akan bernilai 1 (tinggi), berarti kita saat itu boleh menulis UCSRA juga di-set tinggi.
UDR. Bit ini dapat membangkitkan UDRIE atau “Data Register Bit 5 – UDRIE: USART Data Register Empty Interrupt
Empty interrupt”. Lihat penjelasan tentang bit UDRIE. Bit ini Enable
setelah reset langsung bernilai 1, yang berarti siap untuk Menulis bit ini menjadi tinggi maka akan mengaktifkan interupsi
melakukan pengiriman. pada bit UDRE, yakni “Data Register Empty interrupt” yang akan
Bit 4 – FE: Frame Error menjalankan interupsi saat data pada buffer pengiriman sudah
Bit ini otomatis menjadi tinggi jika saat menerima data, ternyata kosong atau dengan kata lain setiap bit UDRE menjadi tinggi.
ada kesalahan dari frame yang diterima. Misalnya saat Unit Interupsi hanya bisa terjadi jika sebelumnya bit UDRIE ini di-set
penerima seharusnya menunggu sebuah bit Stop, ternyata data tinggi dan bit Global Interupt (I) milik register UCSRA juga di-
yang ada adalah 0 (rendah). Bit ini valid setelah kita membaca set tinggi.
UDR. Harap selalu menulis bit ini dengan 0 (rendahuu8) saat kita Bit 4 – RxEN: Receiver Enable
sedang menulis UCSRA. Agar unit penerima dari USART dapat bekerja, maka bit RxEN
Bit 3 – DOR: Data OverRun ini harus dibuat tinggi sebelumnya. Begitu dibuat tinggi, pin RxD
Bit ini akan menjadi tinggi saat kondisi overrun terjadi. Kondisi akan diputus sebagai standar I/O dan dihubungkan dengan unit
ini terjadi saat buffer penerima sudah penuh dan berisi 2 data penerima USART ini. Namun jika tiba-tiba bit RxEN ini dibuat
karakter, dimana data karakter terakhir tidak bisa dipindahkan ke rendah kembali setelah tadinya tinggi, maka unit penerima
UDR-read, karena tidak kunjung dibaca oleh user. Bit ini valid USART akan segera menghentikan kerjanya dan membatalkan
proses penerimaan data, serta membersihkan buffer penerimaan, kemudian parity tersebut akan dibandingkan dengan status dari
termasuk juga bit FE, DOR, dan PE. UMP0. Jika ternyata tidak cocok, maka bendera bit PE (Parity
Bit 3 – TxEN: Transmitter Enable Error) pada UCSRA akan diaktifkan.
Agar unit pengirim USART dapat bekerja, maka bit TxEN ini
harus dibuat tinggi sebelumnya. Begitu dibuat tinggi, pin TxD Tabel Pengaturan Parity
akan diputus dari standar I/O dan dihubungkan dengan unit Bit 3 – USBS: Stop Bit Select
pengirim USART ini. Namun jika tiba-tiba bit TxEN ini dibuat Dengan membiarkan bit in menjadi 0 maka frame akan dilengkapi
rendah kembali setelah tadinya tinggi, maka unit pengirim dengan Stop-bit selebar 1-bit. Sedang jika bit ini ditulis tinggi,
USART masih harus menyelesaikan tugasnya yang terakhir, maka bit stop menjadi 2-bit. Stop bit sepanjang 2-bit ini biasanya
yakni mengirim data yang tersisa. Baru kemudian iUnit diperlukan bagi system lain yang terhubung dengan AVR akan
pengiriman USART akan berhenti dan mengembalikan port TxD memiliki waktu yang cukup untuk memproses data yang baru saja
menjadi standar I/O kembali. diterimanya, dan sudah berar-benar siap untuk menerima data
Bit 2 – UCSZ2: Character Size berikutnya. Unit penerima USART tidak menggunakan bit ini.
Bit ini adalah pasangan dari Bit UCSZ1 dan bit UCSZ0 milik
register UCSRC, untuk menentukan jumlah data yang hendak Tabel Jumlah Bit Sebagai Bit Stop
ditransfer. Bit 2:1 – UCSZ1:0: Character Size
Bit 1 – RxB8: Receive Data Bit 8 Menentukan karakter dari data yang hendak dikirimkan dan
Jika kita menggunakan format penerimaan data 9-bit maka bit diterima haruslah merujuk pada bit-bit ini. Yakni bit UCSZ1 dan
yang terakhir yang diterima akan ditempatkan pada bit RxB8 ini. bit UCSZ0 milik register ini. Ditambah dengan bit UCSZ2 pada
Pabrik menyarankan untuk membaca bit ini terlebih dahulu register UCSRB.
sebelum membaca 8-bit data lainnya di UDR.
Bit 0 – TxB8: Transmit Data Bit 8 Tabel Jumlah Data Yang Di Transfer
Jika kita menggunakan format pengiriman data 9-bit maka bit Bit 0 – UCPOL: Clock Polarity
yang terakhir yang hendak dikirim ditempatkan pada bit TxB8 Bit ini hanya digunakan pada mode Synchronous. Dalam mode ini
ini. Pabrik menyarankan untuk menulis bit ini terlebih dahulu akan direlasikan antara daya yang diterima dan data yang dikirm
sebelum menulis 8-bit data lainnya di UDR. dan disinkronkan dengan status dari XCX (synchronous clock).
Perhatikan tabel 5 untuk mendalami bagaimana singkronikasi
4. UCSRC (USART Control dan Status Register C) terjadi untuk ujung XCX (edge) yang berbeda dengan mengatur
regsiter ini adalah register penting, untuk melakukan kontrol bit UCPOL ini.
pada peralatan USART. Namuin jika tidak menggunakan Tabel Pengaturan Polaritas Dalam Mode Synchronous
fungsi USART, maka boleh mengabaikan register ini seperti
dalam keadaan resetnya. dengan nilai $96, yang berarti UBRR (USART Baud Rate Register)
bahwa sedang meggunakannya sebagai UART, Parity-none, akhirnya kita mendapati register yang menentukan baud rate dari
1 stop bit, ukuran data 8-bit (UCSZ2 = 0). peralatan USART yang kita gunakan. Sebagaimana biasanya,
Catatan: Register UCSRC adalah berbagi alamat I/O yang baud rate antara AVR (sumber) dan device target haruslah sama.
sama dengan register UBBRH. Lihat bagaimana mengakses Hal ini menjadi sangat penting agar tidak ada transfer data palsu
UBBRH dan UCSRC pada “Accessing UBRRH/UCSRC yang isinya diluar kemauan.
Registers” untuk mendapatkan penjelasan lebih lengkap. Catatan:
Register UBRRH adalah berbagi alamat I/O yang sama dengan
Bit 7 – URSEL: Register Select register UBBRH. Lihat bagaimana mengakses UBBRH dan
Saat akan menulis port $20 maka ada dua register yang akan akan UCSRC pada “Accessing UBRRH/UCSRC Registers” untuk
diakses, yang ditentukan dari D7 dari data yang dituliskan. Jika mendapatkan penjelasan lebih lengkap.
D7 (MSB) adalah 1 atau datanya diatas $80 maka sedang Bit 15 – URSEL: Register Select
menuliskan data pada UCSRC. Sedang jika data yang hendak Bit ini untuk memilih dalam mengakses alamat port $20. Seperti
dituliskan adalah dibawah $80, maka kita sedang menulis yang kita tahu bahwa alamat port ini dimiliki oleh 2 buah regsiter
UBRRH. Bagaimana saat membaca UCSRC, pastikan yang berbeda, yakni UBRRH dan UCSRC. Saat kita hendak
sebelumnya bit ini dalam keadaan tinggi sebelumnya membaca menulis UBBRH maka pastikan data bit MSB atau D7 harus
lokasi $20 ini. rendah.
Bit 14:12 – Reserved Bits
Bit 6 – UMSEL: USART Mode Select Bit ini tidak digunakan saat ini. Mungkin akan digunakan pada
Bit ini untuk memilih USART dijadikan mode Taksinkron produksi berikutnya. Oleh karena itu kita disarankan untuk tidak
(Asynchronous) atau Sinkron (Synchronous). menulisnya dengan nilai 1 pada bit-bit yang tidak digunakan.
Bit 11:0 – UBRR11:0: USART Baud Rate Register
Bit 5:4 – UPM1:0: Parity Mode Ini adalah merupakan register 12-bit yang mana berisi dengan
Bit-bit ini adalah untuk menghidupkan pembangkit dan pengatur baud rate USART. Register ini adalah pasangan dari
pemeriksa parity. Jika diaktifkan maka akan otomatis register UBBRH dan UBRRL, dimana UBBRL berisi 8-bit LSB
membangkitkan parity pada setiap data yang dikirimkan dan akan (bit-bit terbawah) dan sisanya dimiliki oleh UBRRH. Mengubah
memeriksa validitas parity dari setiap data yang diterima. Pada nilai dari register ini saat transmisi berlangsung, akan
Unit penerima kita akan mendapatkan parity yang diterima, menyebabkan kesalahan transmisi, karena baud rate akan
langsung berubah seiring dengan berubahnya nilai dari register - Tugas III.A.1
ini. Pada bagian percobaan satu praktikan membuat program
Tabel UBRRH (USART Baud Rate Register High) untuk menghubungkan PC dengan AVR melalui
Keterangan: representasi LED, dimana data yang diterima dari
Baud = Baud Rate (bps)
Hyperterminal akan diteruskan ke AVR sehingga LED yang
fosc = Frekuensi Kristal
UBRR = Nilai UBRR ditampilkan akan bersesuaian, dengan code sebagai berikut:
#include <mega8535.h>
#include <stdio.h>
5. Register 8 bit UBRRH dan 8 bit UBRRL , menyimpan char b;
parameter baudrate 16 bit UBRR register. Rumus untuk void main()
menghitung nilai UBRR adalah sbb: {
UCSRB = 0b00010000;
UCSRC = 0b10000110;
UBRRH = 0;
UBRRL = 103;
DDRA = 0b11111111;
while(1)
{
b = getchar();
switch(b)
{
case '0': PORTA = 0b00000000;
break;
case '1': PORTA = 0b00000001;
break;
case '2': PORTA = 0b00000010;
break;
case '3': PORTA = 0b00000100;
break;
case '4': PORTA = 0b00001000;
break;
case '5': PORTA = 0b00010000;
break;
case '6': PORTA = 0b00100000;
break;
case '7': PORTA = 0b01000000;
break;
case '8': PORTA = 0b10000000;
break;
case '9': PORTA = 0b11111111;
break;
}
}
}

III. HASIL DAN ANALISIS


START

A. Tugas I : MENERIMA DATA DARI PC


Set Register UCSRB=0b00010000;
Hal yang terlebih dahulu dipersiapkan pada saat akan Set Register UCSRC=0b10000110;
melakukan percobaan ini ialah: Set UBRRL dengan BAUD 9600 bps
 Memastikan PORT USB Master Mikro AVR pada PORT DDRA = 0XFF (Set Port A Sebagai Output)
USB PC anda
 Menginstall USB Donwloader
 Hubungkan pin RX, TX, GND dari USB to TTL ke Pin RX, Atur kondisi ketika inputan bernilai “b” maka tampilkan
TX, GND dari Master Mikro AVR LED yang merepresentasikan nilai biner inputan pada
 Pastikan USB to TTL Downloader sudah terinstall variable “b”
 Hubungkan PORT A (ATMega8535) dengan PORT
OUTPUT LED
 Jalankan HyperTerminal Masuk pada kondisi break, lalu menjalankan while
kembali

END
Code akan diinput pada AVR dengan melihat fungsi dari tiap
baris code, dimana Perintah #include artinya kita menggunakan
file Header mega8535.h yang berisi perintah-perintah yang dapat
dikenali oleh compiler. Pada program ini dibuat sebuah delay
dengan memanfaatkan timer/counter yang ada pada ATMega
8535 atau dengan kata lain tidak memanfaatkan library delay UBRRH = 0;
yang ada pada AVR. Dengan mengetahui nilai clock yang akan UBRRL = 103;
diset pada Register TCNT1 untuk menghasilkan waktu tunda 1 Untuk register UBRR ini akan diatur ketika berada pada mode
detik. Serta pada mikrokontroler ATMega 8535 perlu Asynchronous, dimana nilai dari UBRR ini didapat dari
diperhatikan pemilihan sumber clock. Hal ini berhubungan perhitungan sebagai berikut:
dengan frekuensi yang kita inginkan, dengan mengatur frekuensi 𝑓𝑜𝑠𝑐
16 MHz maka mikrokontroler ini dapat mencapai 16MIPS 𝑈𝐵𝑅𝑅 = −1
16 . 𝐵𝐴𝑈𝐷
(Million Instruction per Second).
Analisis code: Dengan nilai: frekuensi oscillator = 16MHz,
UCSRB = 0b00010000; BAUD rate = 9600 bps
Pada register diatas diatur pada bit ke-4 bernilai HIGH sedangkan Maka didapat nilai untuk register UBRR = 103, yang dimasukkan
bit lainnya bernilai LOW, hal tersebut digunakan untuk pada UBRRL.
mengaktifkan penerimaan dari RX sehingga unit penerimaan
pada USART dapat bekerja. (Receiver Enable) DDRA = 0b11111111;.
Register ini untuk pengaturan PORTA sebagai Output yang
nantinya akan dihubungkan ke LED agar dapat ditampilkan hasil
percobaannya.

UCSRC = 0b10000110; - Tugas III.A.2


#include <mega8535.h>
#include <stdio.h>
char b;
void main()
Pada register UCSRC ini bit yang diaktifkan (HIGH) berada pada {
bit 7 (Register Select), 2 (Character Size 1) dan bit 1 (Character UCSRB = 0b00010000;
Size 0). Dimana character size harus disesuaikan dengan data UCSRC = 0b10000110;
UBRRH = 0;
yang diterima. Pada data yang diterima dari PC ialah 8 bit, maka UBRRL = 51;//Ketika baudrate 19200bps
digunakan nilai bit UCSZ1 UCSZ0 = 1 1. Sesuai dengan table DDRA = 0b11111111; //kes: led yang muncul akan
berikut semakin lambat ketika baudrate makin kecil
while(1)
{
b = getchar();
switch(b)
{
case '0': PORTA = 0b00000000;
break;
case '1': PORTA = 0b00000001;
break;
case '2': PORTA = 0b00000010;
break;
case '3': PORTA = 0b00000100;
break;
case '4': PORTA = 0b00001000;
break;
Sedangkan untuk nilai bit lain yang bernilai LOW seperti: case '5': PORTA = 0b00010000;
Bit-0 (UCPOL) untuk mengatur Clock Polarity yang hanya break;
digunakan ketika pada mode Synchronous. Sedangkan pemilihan case '6': PORTA = 0b00100000;
break;
Mode Synchronous atau pun Asynchronous ini diatur pada bit-6 case '7': PORTA = 0b01000000;
(UMSEL). Sehingga ketika UMSEL bernilai LOW maka break;
UCPOL juga akan bernilai LOW. Adapun teori pendukungnya case '8': PORTA = 0b10000000;
berdasarkan table dari datasheet ATMega8535 berikut: break;
case '9': PORTA = 0b11111111;
break;
}
}
}
Pada bagian kedua percobaan pertama ini, dimodifikasi
bagian pertama percobaan dengan mengganti nilai BAUD START
rate yang digunakan, yaitu: 19200 bps. Sehingga setelah
dilakukan perhitungan didapat nilai untuk Register
UBRRL = 51. Pada bagian ini tidak terdapat perbedaan Set Register UCSRB=0b00010000;
yang signifikan pada hal-hal lainnya selain hanya pada Set Register UCSRC=0b10000110;
nilai BAUD rate, yang akan mempengaruhi nilai UBRRL. Set UBRRL dengan BAUD 9200 bps

Untuk analisis code, akan sama pada bagian pertama


percobaan 1.
Atur Flow Control pada HyperTerminal
START menjadi None

Set Register UCSRB=0b00010000; Tampilkan teks “Praktikum Sistem


Set Register UCSRC=0b10000110; Mikroprosesor” pada layar HyperTerminal
Set UBRRL dengan BAUD 19200 bps
DDRA = 0XFF (Set PortA Sebagai Output)
END
Atur kondisi ketika inputan bernilai “b” maka tampilkan
LED yang merepresentasikan nilai biner inputan pada Analisis Code:
variable “b” UCSRB = 0b00001000;
Pada register diatas diatur pada bit ke-3 bernilai HIGH
sedangkan bit lainnya bernilai LOW, hal tersebut digunakan
Masuk pada kondisi break, lalu menjalankan while
untuk mengaktifkan unit pengiriman dari TX sehingga unit
kembali
pengiriman pada USART dapat bekerja. (Transmitter Enable)

END

Berdasarkan pengamatan pada saat praktikum, dengan melihat


hasil analysis report pada software progISP, didapat bahwa - Tugas III.B.2
perbedaan nilai Baudrate akan menyebabkan nilai transfer data Pada percobaan ini dimodifikasi percobaan sebelumnya, yaitu
dari PC ke AVR dipengaruhi. Semakin besar nilai Baudrate untuk menampilkan pada layar HyperTerminal nama anggota
yang digunakan akan menyebabkan waktu transfer data lebih kelompok secara bergantian setiap x detik dan terus menerus,
cepat (Terlihat dari waktu nyala LED setelah dilakukan input dengan x = (mod 9 dari nomor kelompok) + 1.
nilai). Dan sebaliknya semakin kecil nilai Baudrate, maka waktu #include <mega8535.h>
transfer data semakin lama. #include <stdio.h>
#include <delay.h>
B. Tugas III: MENGIRIM DATA KE PC
void main()
- Tugas III.B.1 {
Pada percobaan ini akan ditampilkan pada PC data UCSRB = 0b00001000;
komunikasi antara AVR dengan PC dalam bentuk teks. UCSRC = 0b10000110;
UBRRH = 0;
Output tersebut akan ditampilkan melalui software UBRRL = 103;
HyperTerminal sebagai sarana pendukung.
#include <mega8535.h> while(1){
#include <stdio.h> printf("Iwan Panjaitan \r\n");
delay_ms(4000);
void main() printf ("Eglin Situmeang \r\n");
{ delay_ms(4000);
UCSRB = 0b00001000; }
UCSRC = 0b10000110; }
UBRRH = 0;
UBRRL = 103;
Untuk membuat tampilan teks yang bergantian maka digunakan
printf("Praktikum Sistem Mikrokomputer \r\n"); fasilitas delay AVR, yaitu dengan menambahkan library delay.h.
Kemudian pada code ditambahakn fungsi delay_ms(4000).
} Digunakan delay 4 detik dikarenakan nilai x yang didapat sesuai
dengan nomor kelompok kami.
switch(b)
START {
case'0': PORTA = 0b00000000;
break;
case '1': PORTA = 0b00000001;
break;
case '2': PORTA = 0b00000010;
Set Register UCSRB=0b00010000; break;
Set Register UCSRC=0b10000110; case '3': PORTA = 0b00000100;
Set UBRRL dengan BAUD 9200 bps break;
case '4': PORTA = 0b00001000;
break;
case '5': PORTA = 0b00010000;
TRUE (1) break;
case '6': PORTA = 0b00100000;
break;
case '7': PORTA = 0b01000000;
Tampilkan nama anggota kelompok pertama break;
“Iwan Panjaitan” case '8': PORTA = 0b10000000;
break;
case '9': PORTA = 0b11111111;
break;
Delay selama 4 detik }
}
}

Tampilkan nama anggota kelompok kedua


“Eglin Situmeang”
START

Delay selama 4 detik


Set Register UCSRB=0b00011000;
Set Register UCSRC=0b10000110;
Set UBRRL dengan BAUD 9200 bps
C. Tugas III: PENERIMAAN DAN PENGIRIMAN DATA
DARI DAN KE PC

Tampilkan teks “Praktikum Sistem


- Tugas III.C.1 Mikroprosesor”
Pada percobaan ini kita melakukan penggabungan antara
percobaan 1 dengan percobaan 2, yaitu dengan melakukan
penerimaan dan pengiriman data dari dan ke PC. Diharapkan TRUE (1)
untuk menampilkan teks pada layar HyperTerminal dan
menghidupkan LED sesuai dengan inputan. Percobaan ini
akan membuktikan bahwa proses pengiriman dan penerimaan
data pada program ini berjalan dengan benar. Layar di Minta inputan bertipe CHAR
hyperterminal akan diatur pada mode Half Duplex untuk
menampilkan nilai yang dikirim dan diterima sekaligus, agar
dapat diamati bahwa nilai yang diterima sesuai dengan nilai
Nyalakan LED sesuai dengan input yang
yang telah dikirim sebelumnya.
#include <mega8535.h>
dimasukkan
#include <stdio.h>
char b;
void main() break
{
UCSRB = 0b00011000;
UCSRC = 0b10000110; Hasil yang didapat ketika praktikum ialah, ketika program di run
UBRRH = 0;
UBRRL = 103;
maka akan ditampilkan teks “Praktikum Sistem Mikroprosesor”
DDRB = 0b11111111; pada layar HyperTerminal. Kemudian ketika ditekan inputan
printf("Praktikum Sistem Mikroprosesor \r\n"); //uses angka dari PC maka LED akan menyalakan nilai LED yang
time = 14 s sesuai dengan yang telah diatur pada code. Terjadi pengiriman
while(1) dan penerimaan data dari dan ke PC. Diterima data dari PC untuk
{
dapat menampilkan LED pada AVR. Kemudian dikirim data ke
b = getchar();
PC untuk dapat menampilkan teks pada layar HyperTerminal.
Hal tersebut diatur pada konfigurasi Register ATMega8535 case '8': PORTA = 0b10000000;
yang terdapat di code yaitu: break;
case '9': PORTA = 0b11111111;
UCSRB = 0b00011000 break;
Diset pada bit ke 4 dan 3 bernilai HIGH untuk mengaktifkan }
fungsi penerimaan dan pengiriman data. RXEN dan TXEN ini }
akan membuat PC dapat menerima dan mengirimkan data. }
Sedangkan bit lainnya bernilai LOW. Dengan mengganti nilai frekuensi oscilatornya maka berdasarkan
perhitungan didapat nilai UBRRL yang digunakan = 5.
𝑓𝑜𝑠𝑐
𝑈𝐵𝑅𝑅 = −1
16 . 𝐵𝐴𝑈𝐷
Dengan baudrate=9600 bps.
- Tugas III.C.2 Dibandingkan hasil yang didapat ketika digantinya nilai
frekuensi oscillator yaitu berdasarkan pengamatan pada software
Dilakukan percobaan sebelumnya namun dengan mengganti progISP terlihat bahwa:
nilai clock yang digunakan menjadi 1MHZ - Saat frekuensi oscillator = 16 MHz maka didapat bahwa
#include <mega8535.h>
#include <stdio.h>
USES TIME = 14 second
#define F_CPU 1000000 UL - Saat frekuensi oscillator = 1 MHz maka didapat bahwa
char b; USES TIME = 15 second
void main() Hal ini menunjukkan nilai frekuensi oscillator berpengaruh pada
{ cycle per instruction-nya. Sehingga ketika fosc semakin besar
UCSRB = 0b00011000;
maka waktu ekseskusi suatu perintah akan lebih cepat
UCSRC = 0b10000110;
UBRRH = 0; debandingkan ketika nilai fosc yang lebih kecil.
UBRRL = 5; // focs=1 MHZ maka UBRRL = 5. dengan
baudrate =9600
DDRB = 0b11111111;
printf(“Praktikum Sistem Mikroprosesor\r\n”);
IV. SIMPULAN
//uses time =15 s
while(1) Setelah mengerjakan modul 3 Komunikasi USART dan Evaluasi
{ Modul I-III, kami mendapatkan dan memahami beberapa materi
b = getchar(); bahasan dalam modul ini.
switch(b)
{ 1. ATMega 8535 dapat dipergunakan untuk memproses
case'0': PORTA = 0b00000000; komunikasi serial USART, baik untuk menerima data
break; maupun pengiriman data.
case '1': PORTA = 0b00000001;
break;
2. Pada komunikasi USART terdapat parameter band rate.
case '2': PORTA = 0b00000010; Band rate merupakan jumlah data yang dikirim dan diterima
break; (termasuk start bit
case '3': PORTA = 0b00000100;
break;
case '4': PORTA = 0b00001000;
break; REFERENSI
case '5': PORTA = 0b00010000; [1] Hutabarat, Mervin T., Waskita Adijarto, dan Harry
break; Septanto, Praktikum Sistem Mikroprosesor, Sekolah Teknik
case '6': PORTA = 0b00100000;
break;
Elektro dan Informatika InstitutTeknologi Bandung,
case '7': PORTA = 0b01000000; Bandung, 2013.
break; [2] ATMega 8535 Datasheet from www.atmel.com
LAMPIRAN

1. Tugas 3.A
2. Tugas 3.B
3. Tugas 3.C