Display a string at once using serial comm.
Code :
#include<reg51.h>                              // Include 8051 library.void ser_init();                                    // Initialize serial communications.
unsigned char p[100];                       // Store the string received from user.
void rx_word(unsigned int len);        // receive string from user.
void rx_word(unsigned char a[]);     //  transmit string of user.
void tx(unsigned char w);                 // transmit character of string.
unsigned char rx();                           // receive character of string.
void main()                                                 // Main function starts
{
	ser_init();                                            // Serial function calling
	rx_word(8);                                       // receive string from user of length 8
	tx_word(p);                                        // transmit function for displaying data.
}
void ser_init()                                           // Serial transmission function
{
	SCON = 0X50;                                // Mode 1 (8-bit UART ) 
	TMOD = 0X20;                               // Timer 1 in Mode 2.	TH1 = 0XFD;                                  // Baud rate of 9600.
	TR1 = 1;                                          // Timer run flag enabled.
	
 
}
void tx(unsigned char w)                      // Transmit function.
{
	SBUF = w;                               // SBUF temporary buffer location where character is stored.
	while(TI==0);                           // Wait until transmission completed flag gets high.	TI=0;                                       // Once high , make it zero for the next character.} 
void tx_word(unsigned char a[])       // transmit function for character stored in array
{
	int i;                                           // integer i
	for(i=0;a[i]!='\0';i++)             //  for loop until null is reached
	{
		tx(a[i]);                            // transmit function
  }
}
unsigned char rx()                                     // Receive function. 
{
	while(RI==0);                                 // Wait while receive flag is not high.   
	RI=0;                                               // Reset the receive flag.	return SBUF;                                   // Return data received in SBUF.
} 
void rx_word(unsigned int len)   // receive  function to store character in array
{
	int i;                                     // integer i     
	for(i=0;i<len;i++)              // for loop until string user defined length is reached.
	{
		p[i]=rx();                     // Receive function. 
	}
}
: Circuit Diagram
A terminal window is connected to microcontroller 
for serial comm. 
 RxD of  8051 is connected to TxD of terminal.
TxD of  8051 is connected to RxD of terminal.
String Output Results :
Here the word you type will be displayed at once, once the string length is reached .

.gif)
Comments
Post a Comment