Contoh Code untuk Komunikasi Serial (Rs232) Atmega8535
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
#include <lcd.h>
#include <string.h>
char rx_buffer[16];
unsigned char ir,ada_data;
void cek_perintah();
char *cmds[] = {“ON0”, “ON1”, “ON2″,”ON3″}; //artinya cmds[0]=”0N0″, cmds[1]=”ON1” dst…
#define ON0 0
#define ON1 1
#define ON2 2
#define ON3 3
// Alphanumeric LCD Module functions #asm .equ __lcd_port=0x15 ;PORTC #endasm
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char r_char;
r_char=UDR;
rx_buffer[ir] = r_char;
if (ir++ == 8 .) //
{
rx_buffer[ir]=0x00;
ir=0;
}
cek_perintah();
ada_data=1; //indikator status aza
}
//========================int usart============================================
// 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=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x4D;
// LCD module initializationlcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf(“komunikasi”);
// Global enable interrupts
#asm(“sei”)
while (1)
{
ir=0;
//======================================
if (ada_data == 1) cek_perintah();
//===========================================
//tampilkan data yg diterima di LCD
lcd_gotoxy(0,0);
lcd_puts(rx_buffer);
}
} //ralat tambahan.
void cek_perintah() {
int i; char cmd; char cmdStr[50];
strcpy(cmdStr, rx_buffer);
// BANDINGKAN perintah yg diterima (cmdstr) dengan array cmds[]
cmd = -1;
for (i = 0; i < 4; i++)
{ if (!strcmp(cmdStr, cmds[i]))
{ cmd = i;
break;
}
}
switch(cmd) {
case ON0:
lcd_gotoxy(0,1);
lcd_putsf(“LAMPU 0 ON”);
delay_ms(10);
break;
case ON1:
lcd_gotoxy(0,1);
lcd_putsf(“LAMPU 1 ON”);
delay_ms(10);
break;
case ON2:
lcd_gotoxy(0,1);
lcd_putsf(“LAMPU 2 ON”);
delay_ms(10);
break;
case ON3:
lcd_gotoxy(0,1);
lcd_putsf(“LAMPU 3 ON”);
delay_ms(10);
break;
}
ada_data=0;
}
Posted on 01/06/2011, in Contoh-contoh Aplikasi. Bookmark the permalink. 15 Comments.
mas saya juga coba saat saya hilangkan tanda bintang sebelum cmds eror tadinya 25 jadi 1 tapi tetep aja erornya itu jg knp y?
mas kalo koneksikan dengan matllab atau sms ada yang mudah buat belajar g
saran saya lebih baik menggunakan AVR. kalau tetap menggunakan AT89S silahkan anda coba belajar dgn simulator uvi51, disitu banyak contoh2nya termasuk serial komunikasi. di sini: https://pccontrol.wordpress.com/2011/05/20/belajar-microcontroller-dengan-simulator/
Mas..saya masih pemula nih…mau nanya dong…..Contoh Code untuk Komunikasi Serial (Rs232) menggunakan AT89S.. gimn ya..??….klu boleh c contoh programnya menggunakan assembler aja…??….buat belajar…
semua coding keluarga atmega sama,
apalagi (khususnya) coding untuk atmega8535 , atmega16 dan atmega32 alamat portnya sama ,jumlah pin nya sama, arsitekturnya sama . cuma beda kapasitas memory .
mas boleh minta tolong ga??
kalo komunikasi buat ATmega 16 codingnya gmna ya mas..??
tolong ya mas buat tugas akhir nihh
hehe
email saya muhamadandriyansyah@ymail.com
terimakasih buat bantuannya mas
sy ga nyimpan , maklum windoes sy sering di format karena sering kena virus. tapi itu mudah kok. coba aja dibuat dulu bertahap , yg ga ngerti tanya lagi :-)
boleh minta program lengkapnya ndak mas, tolong kirim ke email say dunk zays_03@yahoo.co.id
..buat belajar nih :) trims ya
ok mas, sy tunggu yah
ok , minta tolong simpan di 4share ya , biar yg lain bisa liat juga :-)
Mas bisa tolong kirim prograram lengkapnya ke email sy mas budhye@gmail.com
Tolong Mas yah
saran saya: lakukan dgn bertahap.
buat program yg sederhana dulu untuk mengecek fungsi LCD dan komunikasi , untuk memastikan fungsi komunikasi & display berjalan. kalau sudah bisa berjalan kembangkan program tsb sedikit demi sedikit sambil ditest di rangkaian dgn mengikuti contoh dari blog ini.
Udah tak coba and berhasil write to microcontroller, tapi hasilnya tidak muncul tulisan lampu ON dan , setelah aku coba kirim commmand ON1 ke micronya tampilan di LCD cuman diem aja nggak ada perubahan cuman huruf paling depan hilang satu character, untuk mengirim commandnnya aku pake program yang ada di blog ini juga yang pake C#, kenapa ya
kurang kurung tutup } sebelum void cek_perintah()
program lengkapnya sudah saya kirim ke email mas Wawan
Saya udah coba coding nya tapi ada error “must declare first in block” untuk coding yang “void cek_perintah() {” padahal kalau tak lihat semua nya udah bener, bagaimana cara perbaikinya ya ?
please reply