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 <at89×51.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=0×20; //timer 1 mode 2 (autoreload)
PCON=0×0 ; // 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=0×01;
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=0×80;
char i;
for(i=0;i<8;i++)
{
P1=dLed;
dLed=((dLed>>1) | (dLed<<7));
tunda(1000);
}
}
void LedKedip4()
{
volatile unsigned char dLed=0×0f;
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.