Posts Tagged ‘Packet-based Interface for 8051’

The circuit diagram of the packet-based LED interface is as shown in Figure 5.1. The commands to be emulated from the HyperTerminal and the corresponding control action is given in the program source code.

packet based interface for LED

packet based interface for LED

Program Source Code
*******************************************************
/∗ Displaying different LED sequence pattern based on the packet
received ∗/
#include<REG52.h>

unsigned char led;
int interpret;
char packet[4];
char index;
void init(void);
void delay (int m);
void init()
{TMOD=0X20;
TH1=0xFD; /∗select baud rate 9600∗/
SCON=0x50;
TR1=1; /∗ start timer∗/
}
void main(void)
{int k=0;
char i;
init();
ES=1;
EA=1; // Global interrupt bit enabled
led=0xff;
for (i=0;i<4;i++){ packet[i]=0;
}
index=0;
interpret=0;
while(1)
{
{P0= led;
delay(1000);
}
}} void delay (int m) // Function for the Delay.
{ int z;
z=m;

while (m>0)
{ m−−;}
}
void serialisr() interrupt 4
{ unsigned char y;
char i;
RI=0;
y=SBUF; // write the data in srial buffer.
TI=0;
SBUF=y; // read the data from serial buffer.
while (!TI); // Check the flag
TI=0;
packet[index]=y;
index++;
if (y==‘z’)
{interpret =1;
index = 0;
}else interpret = 0;
if (interpret==1)
{switch(packet[0])
{case ‘A’:
led=0x55; // 01010101
break;
case ‘B’:
led=0x33;
break;
case ‘C’:
led=0x55;
delay(100);
led=0x33;
break;
case ‘D’:
led=0x00;

delay(100);
led=0x02;
delay(100);
led=8;
delay(100);
led=16;
delay(100);
led=16;
delay(100);
led=32;
delay(100);
led=64;
delay(100);
led=256;
delay(100);
break;
}
for (i=0;i<4;i++)
{ packet[i]=0;
}interpret=0;
}
}
*******************************************************