Minggu, 01 Mei 2011

DASAR 8 : UART - RS232

#include <at89x51.h>
#include <STRING.H>

int dly_stone;

//-----------------------------------------------

void InitTimer0(void)
{
TL0  = 0xFF;  // 10 ms 
TH0  = 0xDB;
TMOD = 0x01;  // mode 1
TR0=1;    // timer-0 On
}
//------------------------------------------------

int dly_stone;

//-----------------------------------------------

void InitTimer1(void)
{
TL1  = 0xFD;  // 10 ms 
TH1  = 0xFD;
TMOD |= 0x20;  // mode 1
TR1=1;    // timer-0 On
}
//------------------------------------------------

void Init_UART9600(void)
{
PCON  = 0x00;  
SCON  = 0x50; // 8 bit serial mode 1 untuk baud rate serial data transfer
}
//------------------------------------------------

void SendData(unsigned char sdata)
{
SCON &= 0xFD;  /* SCON.TI reset/clear by software */
SBUF = sdata;
while((SCON & 0x02) == 0x00);
}
//----------------------------------------------

char ReceiveData(unsigned char rdata)
{
ACC = SCON;
if((ACC & 0x01)==0x00)
 {
 return 0;  /* SCON.RI indikator receive data baru */
 }
rdata=SBUF;
SCON &= 0xFE;
return 1;
}
//------------------------------------------
unsigned char sbyte;

void main(void)
{
InitTimer1();
InitTimer0();
Init_UART9600();
SendData('T');
SendData('E');
SendData('D');
SendData('C');
ReceiveData(sbyte);

}

DASAR 7 ; Port 1 sbg KEYPAD port

* =================================================================
Nama : Praktek4
Fungsi :-Mengenal manipulasi outport, shif register pass parameter. 
 -Memanfaatkan sistem Timer untuk time delay
 -Memanfaat sistem interupt timer untuk time delay
 -Memanfaatkan Port1 sebagai input port 
 -Port1 sebagai input bilangan desimal 2 digit
===================================================================*/

#include <at89x52.h>
#include <STRING.H>

int dly_stone;

//-----------------------------------------------

void InitTimer0(void)
{
TL0  = 0xFF;  // 10 ms 
TH0  = 0xDB;
TMOD = 0x01;  // mode 1
TR0=1;    // timer-0 On
}
//------------------------------------------------

void delay2(int mul)
{
while(dly_stone< (500*mul));
}

//------------------------------------------------

void delay1(int mul)
{int i,j;
for(i=0; i< mul*1000;i++)
 for(j=0;j < mul*1000;j++);
}
//-----------------------------------------------------------------------------

void timer0 (void) interrupt 1 using 2 
{
TL0=0xFF;
TH0=0xDB;
++dly_stone;
}
//-----------------------------------------------

int GetInputDesimal(void)
{
unsigned char bcd_data, bin_data;
bcd_data = P1;

return bin_data;
}
//-----------------------------------------------
void main(void)
{unsigned char data1;
InitTimer0();
IE = 0x82;
data1 = 0x03;
for(;;)
 {
 P0 = data1;
 delay1(1);
 if ((P1 & 0x01) == 0x01)data1= data1 << 1;
 else data1= data1 >> 1;
 if (CY == 1) data1 |= 0x01;
 delay2(1);
 }
}

//-------------------------- end file of Praktek7.c -----------------------

Minggu, 03 April 2011

DASAR6, MEMFUNGSIKAN PORT SEBAGAI INPUT

/* ===================================================
Nama : Praktek6
Fungsi :
    -Mengenal manipulasi outport, shif register pass parameter.
    -Memanfaatkan sistem Timer untuk time delay
    -Memanfaat sistem interupt timer untuk time delay
    -Memanfaatkan Port1 sebagai input port  
====================================================*/

#include <at89x52.h>
#include <STRING.H>
void ReadKeyPad(void);
int dly_stone;
unsigned char sts_arah;
//-----------------------------------------------

void InitTimer0(void)
{
TL0  = 0xFF;        // 10 ms
TH0  = 0xDB;
TMOD = 0x00;        // mode 1
TR0=1;                // timer-0 On
}
//------------------------------------------------

void delay2(int mul)
{dly_stone=0;
while(dly_stone< (50*mul)) ReadKeyPad();
}

//------------------------------------------------

void delay1(int mul)
{int i,j;
for(i=0; i< mul*1000;i++)
    for(j=0;j < mul*1000;j++);
}
//-----------------------------------------------------------------------------

void timer0 (void) interrupt 1 using 2
{
TL0=0xFF;
TH0=0xDB;
++dly_stone;
}
//-----------------------------------------------

void ReadKeyPad(void)
{
unsigned char Key;
Key = P3;
Key &= 0x0C;
Key = Key >> 2;
if ((Key  & 0x03) != 0x03)
    {
    if(Key == 0x01) sts_arah = 0x01;
    else if (Key == 0x02) sts_arah = 0x02;
    }

}
//-----------------------------------------------

void main(void)
{unsigned char data1;
InitTimer0();
IE = 0x82;
data1 = 0x03;
for(;;)
    {
    P2 = data1 ^ 0xFF;
//    delay1(1);
    if (sts_arah == 0x01) data1= data1 << 1;
    else if (sts_arah == 0x02)data1= data1 >> 1;
    if (CY == 1)
        {if (sts_arah == 0x01) data1 |= 0x01;
        else  if (sts_arah == 0x02) data1 |= 0x80;
       }
    delay2(1);
    }
}
//-----------------------------------------------

DASAR5, MENGENAL INTERUPT TIMER

/* ===================================================
Nama : Praktek5
Fungsi :-Mengenal manipulasi outport, shif register pass parameter.
    -Memanfaatkan sistem Timer untuk time delay
    -Memanfaat sistem interupt timer untuk time delay
====================================================*/

#include <at89x52.h>
#include <STRING.H>

int dly_stone;
int dir_stone;
unsigned char sts_arah;
//-----------------------------------------------

void InitTimer0(void)
{
TL0  = 0xFF;        // 10 ms
TH0  = 0xDB;
TMOD = 0x00;        // mode 1
TR0=1;                // timer-0 On
}
//------------------------------------------------

void delay2(int mul)
{
dly_stone = 0;
while(dly_stone< (50*mul));
}

//------------------------------------------------

void delay1(int mul)
{int i,j;
for(i=0; i< mul*1000;i++)
    for(j=0;j < mul*1000;j++);
}
//-----------------------------------------------------------------------------

void timer0 (void) interrupt 1 using 2
{
TL0=0xFF;
TH0=0xDB;
++dly_stone;
++dir_stone;
if (dir_stone >= 500)
    {if (sts_arah  == 0) sts_arah = 0x01;
    else sts_arah = 0;
    dir_stone = 0;
    }
}
//-----------------------------------------------

void main(void)
{unsigned char data1;
sts_arah = 0;
InitTimer0();
IE = 0x82;
data1 = 0x03;
for(;;)
    {
    P2 = data1 ^ 0xFF;
    delay1(1);
    if (sts_arah == 0x01)data1= data1 << 1;
    else data1= data1 >> 1;
    if (CY == 1)
          {if (sts_arah == 0x01)data1 |= 0x01;
           else  data1 |= 0x80;
    delay2(1);
    }
}

DASAR4, MENGENAL REGISTER TIMER

/* ===================================================
Nama : Praktek4
Fungsi :-Mengenal manipulasi outport, shif register pass parameter.
        -Memanfaatkan sistem Timer untuk time delay
        -Memanfaat sistem interupt timer untuk time delay
        - IE, TCON, TMOD
====================================================*/

#include <at89x52.h>
#include <STRING.H>

int dly_stone;

//-----------------------------------------------

void InitTimer0(void)
{
TL0  = 0xFF;        // 10 ms
TH0  = 0xDB;
TMOD = 0x00;        // mode 1
TR0=1;                // timer-0 On
}
//------------------------------------------------

void delay2(int mul)
{dly_stone=0;
while(dly_stone< (500 * mul));
}

//------------------------------------------------

void delay1(int mul)
{int i,j;
for(i=0; i< mul*1000;i++)
    for(j=0;j < mul*1000;j++);
}
//-----------------------------------------------------------------------------

void timer0 (void) interrupt 1 using 2  // sub-routine ini akan di jalankan
{                                // setiap bit TF0 pada register TCON diset 1
TL0=0xFF;
TH0=0xDB;
++dly_stone;
}
//-----------------------------------------------

void main(void)
{unsigned char data1;
InitTimer0();
IE = 0x82;    // IE adalah register untuk me-enable fungsi interupt
data1 = 0x03;
for(;;)
    {
    P2 = data1 ^ 0xFF;
//    delay1(1);
    data1= data1 << 1;
    if (CY == 1) data1 |= 0x01;
    delay2(1);
    }
}

DASAR3, MEMBUAT DELAY TIME

/* ===================================================
Nama : Praktek3
Fungsi :
        - Mengenal manipulasi outport, shif register pass parameter.
        -Memanfaatkan sistem Timer untuk delay
====================================================*/

#include <at89x52.h>
#include <STRING.H>

int dly_stone;

//-----------------------------------------------

void InitTimer0(void)
{
TL0  = 0xFF;        // 10 ms
TH0  = 0xDB;
TMOD = 0x01;        // mode 1
TR0=1;                // timer-0 On
}
//-----------------------------------------------

void InitTimer1(void)
{
TL1  = 0xFF;        // 10 ms
TH1  = 0xDB;
TMOD = 0x10;        // mode 1
TR1=1;                // timer-0 On
}
//------------------------------------------------

void delay2(int mul)
{
dly_stone = 0; do {
     if(TF1 == 1)
        {dly_stone++;
         TF1=0;
        TL0  = 0xFF;        // 10 ms
       TH0  = 0xDB;
        }
    } while(dly_stone< (50*mul));
}

//------------------------------------------------

void delay1(int mul)                  //variabel mul sbg  pass parameter untuk fungsi delay1
{int i,j;
for(i=0; i< mul*10;i++)
    for(j=0;j < mul*100;j++);                   // j++ => j = j + 1
}
//-----------------------------------------------------------------------------

void main(void)
{unsigned char data1;
InitTimer0();
data1 = 0x03;
for(;;)
    {
    P2 = data1 ^ 0xFF;
//    delay1(1);  // delay(5);
    data1= data1 << 1;
    if (CY == 1) data1 |= 0x01;
    delay2(1);
    }
}

DASAR2, MENGENAL OPERASI SHIFT REGISTER

/*=========================================
Program : Praktek2
Fungsi : Mengenal manipulasi outport, shif register dan pass parameter.

=========================================*/
#include <at89x52.h>

//-----------------------------------------------------------

void delay(int mul) // mul as pass parameter variable
{int i,j;
int coba;
coba = mul;
for(i=0; i< mul*10;i++)
    for(j=0;j < mul*100;j++);

}
//-------------------------------------------------------------

void main(void)
{unsigned char data1;
data1 = 0x03;
for(;;)
    {
    P2 = data1 ^ 0xFF;
    delay(3);
    data1= data1 << 1;
    if (CY == 1) data1 |= 0x01;
    }
}
//--------------------------------------------- end file ------------------------

DASAR1, MENGENAL PORT

/* ---------------------------------------------------------------------------
Project : Praktek1
Fungsi  : menampilkan 2 LED menyala bergerak berotasi dari MSB ke LSB
-----------------------------------------------------------------------------*/

#include <at89x52.h>

//-----------------------------------------------
void delay(void)
{
int i,j;
for(i=0;i<100;i++)
    for(j=0;j<200;j++);
}
//------------------------------------------------------------------------------------------------

void main(void)
{unsigned char data1;
data1 = 0xC0;            // inisialisasi variabel data1 dengan data 0xC0 (hex) equ 0x11000000 (bin)
for(;;)
    {
    P2 = data1 ^ 0xFF;        // isi var data1 dicopykan ke register port 0, so reg port 0 sama dengan var data1
    delay();                          // call sub routine delay
    data1= data1 >> 1;     // isi var data1 digeser ke arah LSB 1 kali, dari 0x11000000--> 0x01100000
    if (CY == 1) data1 |= 0x80;  //   data1 |= 0x80 equ data1 = data1 OR   0x80
    }
}

//=====================================================================
/*

*/