Pada postingan kali ini kita akan belajar mengenai komunikasi serial antar 2 mikrokontroller. Sebelum kita lanjut, ada baiknya kita tahu terlebih dahulu arti dari komunikasi serial. Komunikasi serial adalah metode pengiriman data dimana data yang dikirim satu per satu. Jenis komunikasi yang akan kita gunakan adalah USART (Universal Syncronous Asyncronous Receiver Transmitter). Maksud dari USART tersebut, kita bisa menggunakan 2 mode yaitu mode Syncrounous dan mode Asyncronous. Perbedaannya terletak pada sumber clocknya. Jika pada syncronous, sumber clocknya harus sama jadi diperlukan PIN yang bertindak sebagai Clock. Pin - pin tersebut adalah RXD, RXD, XCK. Sedangkan pada Asyncronous hanya diperlukan 2 Pin saja yaitu RXD & TXD.
Langsung ke bagian setting programnya. Berikut hal - hal yang harus dilakukan untuk mengaktifkan fitur USART.
Note :
1. Receiver dan Transmitter diconteng karena kita akan menerima dan mengirim data.
2. Baudrate adalah kecepatan pengiriman data. Satuannya BPS (Bit Per Second).
3. 8 Data, 1 Stop, No Parity artinya :
- 8 Data : Jumlah data yang akan dikirim dan diterima.
- 1 Stop : Setelah pengiriman data selesai dilakukan 1 kali stop.
- No Parity : Tidak ada pengecekan data.
Oia jgn lupa menggunakan LCD ya untuk melihat data yang diterima itu benar ato ga.
Berikut contoh program master dan slavenya.
Master :
- #include <mega8535.h>
- // Alphanumeric LCD Module functions
- #asm
- .equ __lcd_port=0x15 ;PORTC
- #endasm
- #include <lcd.h>
- // Standard Input/Output functions
- #include <stdio.h>
- #include <delay.h>
- char get_RX;
- char data[20];
- // Declare your global variables here
- void main(void)
- {
- // 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=0x47;
- // LCD module initialization
- lcd_init(16);
- while (1)
- {
- // Place your code here
- putchar('A');
- get_RX = getchar();
- sprintf(data,"%c", get_RX);
- lcd_gotoxy(0,0);
- lcd_puts(data);
- };
- }
Slave :
- #include <mega8535.h>
- #include <delay.h>
- // Alphanumeric LCD Module functions
- #asm
- .equ __lcd_port=0x15 ;PORTC
- #endasm
- #include <lcd.h>
- // Standard Input/Output functions
- #include <stdio.h>
- char data[16];
- char RX;
- // Declare your global variables here
- void main(void)
- {
- // 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=0x47;
- // Analog Comparator initialization
- // Analog Comparator: Off
- // Analog Comparator Input Capture by Timer/Counter 1: Off
- ACSR=0x80;
- SFIOR=0x00;
- // LCD module initialization
- lcd_init(16);
- while (1)
- {
- // Place your code here
- RX = getchar();
- sprintf(data,"%c", RX);
- lcd_gotoxy(0,0);
- lcd_puts(data);
- putchar ('B');
- };
- }
Berikut video simulasinya :
Sekian postingan kali ini, semoga bermanfaat!!
Salam Kapasitorr!!
No comments:
Post a Comment