jump to navigation

Seriall With C April 15, 2007

Posted by kwoksundip in interface.
trackback

o, y niy gw kasih sedikit tutorial buat interface terutama buat interface secara serial.niy listingnya

#include <at89x51.h>
void init_intser()
{
EA=1;
ES=1;
PS=1; //prioritas tinggi
}
volatile char terima;
volatile bit status=0;
void IntSerial ()interrupt 4 using 1 //interupsi serial
{
ES=0;
RI=0; //flag interupt dinolkan
status=1;
terima=SBUF;
ES=1;
}
void Init_Serial(char baud )
{
TMOD=0x20; //timer 1 mode 2 (autoreload)
PCON=0x0 ; // SMOD =0
SM0=0;
SM1=1; //mode 1
REN=1; //terima dibolehkan
TH1=baud; //kecepatan 9600 bps (nilai reload)
TL1=baud; //nilai awal timer
TR1=1; // timer dijalankan
}
void KirimChar(char datanya)
{
ES=0;
SBUF=datanya; // kirim melalui port serial
while(!TI) // tunggu sampai semua bit
{;} // terkirim
TI=0;
ES=1;
}
void KirimTeks(char *teks) //Fungsi untuk mengirim teks ke
{
char i=0; //port serial pada mode 1.
while(teks[i]!=0) //dari pada menggunakan fungsi printf()
{
KirimChar(teks[i]); // atau printf_small standard lebih baik
i++;
}
}

/* fungsi tunda 1 milidetik (kira-kira) */
void tunda1ms()
{
int i;
for(i=0;i<100;i++)
;
}
/* fungsi tunda n milidetik */
void tunda(int n)
{
int i;
for (i=0; i<n;i++)
tunda1ms();
}
void LedPutKir( )
{
volatile unsigned char dLed=0x01;
char i;
for(i=0;i<8;i++)
{
P1=dLed;
dLed=((dLed<<1) | (dLed>>7)); //putar kiri 1 bit
tunda(1000);
}

}
void LedPutKan( )
{
volatile unsigned char dLed=0x80;
char i;
for(i=0;i<8;i++)
{
P1=dLed;
dLed=((dLed>>1) | (dLed<<7));
tunda(1000);
}
}
void LedKedip4()
{
volatile unsigned char dLed=0x0f;
char i;
for(i=0;i<8;i++)
{
P1=dLed;
dLed=((dLed >>4) | (dLed<<4));
tunda(1000);
}
}
void main()
{
init_intser();
Init_Serial(0xfd); // inisialisasi port serial
while(1)
{
KirimTeks(“Pilihan: \n”);
KirimTeks(” 1. Putar Kiri \n”);
KirimTeks(” 2. Putar Kanan \n”);
KirimTeks(” 3. Putar Kedip4 \n”);
KirimTeks(“Tekan angka didepan pilihan: \n”);
while (!status);
status=0;
KirimTeks(“Pilihan Anda: “);
KirimChar(terima);KirimChar(‘\n’);
switch(terima)
{
default:
case ‘1’: LedPutKir();break;
case ‘2’: LedPutKan();break;
case ‘3’: LedKedip4();break;
}

}
}

waa banyak banget ya,. ni program untuk kirim n terima data pada led. Jadi user dikasih pilihan untuk ngejalanin led biar bisa putar kiri,putar kanan,putar kedip. LO tinggal milih doank.

Program ini bs pake hyperterminal atoyg lain. Klo gw siy lbh cenderung peke hyperterminal,lbh gampang siy……..

plajari tuh yakhan gampang to?Nek gak phm tanya ama yg bs.Ok Coy

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: