#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);
}
BELAJAR APLIKASI 8051 FAMILY
Secara bertahap mengupas MCU-8051 family dengan contoh software aplikasi yang mudah dimengerti. Tool software aplikasi yang diperlukan adalah Keil C Tool latihan dengan menggunakan modul writer dan modul kit 80s51 family. Untuk Training Hub Kami di : baguse2@yahoo.co.id
Minggu, 01 Mei 2011
DASAR 8 : UART - RS232
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);
}
}
//-----------------------------------------------
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);
}
}
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);
}
}
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);
}
}
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 ------------------------
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 ------------------------
Langganan:
Postingan (Atom)