USART (Universal Syncronous Asyncronous Receiver/Transmiter) pada mikrokontroler ATMEGA16 memiliki beberapa keuntungan diantaranya ialah operasi full duplex (memiliki register receive dan transmiter yang terpisah), mendukung komunikasi multiprosesor dan kecepatan transmisi berorde Mbps.
Dalam Uji coba kali ini mikrokontroler ATMEGA16 akan berkomunikasi secara USART dengan komputer melalui port serial. berikut rangkaian uji coba lengkapnya :
Mikrokontroler akan menerjemahkan data yang dikirimkan PC dan menyalakan / mematikan LED berdasarkan data yang diterima dari PC.
Berikut merupakan aplikasi yang digunakan untuk menguji coba komunikasi serial antara mikrokontroler dan PC :
Aplikasi ini dapat di download disini
Aplikasi ini berfungsi untuk mengirimkan data ke mikrokontroler dan menerima data dari mikrokontroler. dalam uji coba ini LED akan menyala ketika dikirimkan data ‘1’ dan padam ketika dikirimkan data ‘0’. Ketika LED menyala mikrokontroler akan mengirimkan string “LED ON” kepada PC dan dalam aplikasi akan menampilkan string yang dikirimkan mikrokontroler. Program lengkap dan penjelasan uji coba ini dapat dilihat berikut ini :
#include <mega16.h>
#include <delay.h>
// Standard Input/Output functions
#include <stdio.h>
unsigned char data;
void main(void)
{
PORTC=0xff; //Pull Up internal diaktifkan
DDRC=0xff; //PORTA sebagai Output
//// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
while (1)
{
data=getchar();delay_ms(1000); //Baca data yang dikirimkan PC simpan dalam var data
if(data=='1'){PORTC=0x00;printf ("\n LED ON");} //Jika data=1 LED on, kirimkan LED ON
if(data=='0'){PORTC=0xff;printf ("\n LED OFF");} //Jika data=1 LED on, kirimkan LED ON
}
}
1 komentar:
saya ingin bertanya bang, apakah program ini sama jika kita menggunakan dua buah micro. jadi transmitternya menggunakan micro juga. dan menghidupkan led menggunakan button dari transmitternya....
mohon bantuannya bang...
Posting Komentar