#include
#include
#include
#include
		      //Function Prototype
void transmit (int&,int& ,int& ,int&);
void decimal_to_binary (int, int, int);
void binary_to_decimal(int, int);
void mode_word(int& , int& , int& , int& );
void command_word(int& , int&, int&, int&);
main(){
int ibaud,ichar_length, iparity, iframe; //Initialising mode word parameters
mode_word(ibaud, ichar_length, iparity, iframe);// Function Call for mode word
command_word(ibaud, ichar_length, iparity, iframe);  // Function Call for command word
}

void mode_word(int& ibaud,int& ichar_length,int& iparity,int& iframe)   // Function Mode Word Declaration
    {
 printf("\n Enter baud rate\n ASYN*1 - 01\nASYN*16 - 10\nASYN*64 - 11\n: ");scanf("%d",&ibaud); // Interactive input from the user
 printf("\n Enter character length\n 5,6,7or 8 Bits: "); scanf("%d",&ichar_length);
 printf("\n Enter parity control\n *0 - No parity\n01 - Odd Parity\n 11 - Even Parity: "); scanf("%d",&iparity);
 printf("\n Enter Framing Control\n Not Valid - 00 \n1 Stop Bit - 01\n 1.5Stop Bits - 10\n 2 Stop Bits - 11: ");scanf("%d",&iframe);
}
void command_word(int& ibaud,int& ichar_length,int& iparity,int& iframe) // Function Command Word Declaration
{
 char ch;do {printf(" \nEnter t for Transmit and r for Recieve and e to exit: "); scanf("%s",&ch);
 switch ( ch){
    case 't':  transmit(ibaud,ichar_length,iparity,iframe);break;// Function Call to transmit
    case 'r':  binary_to_decimal(ichar_length,iparity);break;   // Function Call to binary_to_decimal
    case 'e':  exit(1);//Function recieve
    default : printf(" Error, enter again");}} while (ch !='e'); exit(1);
    }


void transmit(int& ibaud, int& ichar_length, int& iparity, int& iframe) // Function transmit Declaration
{
 int idata,i,j,a;j=ichar_length;  if (iframe==00) { a=0;}
	 else if(iframe==01) {a=1;}
	  else if(iframe==10){a=1;}
	   else if (iframe==11){a=2;}
 printf("\nEnter a no. to send: "); scanf("%d",&idata);
 printf("0(s)\t");
 decimal_to_binary(idata, j, iparity);
 for (i=0; i=0;j++){
     icount += ioutput[i];
     printf("%d\t",ioutput[i]);i--;  }
    if ((icount%2)==0 && iparity==01 || (icount%2)!=0 && iparity==11)
     {printf("1(p)");} return;}


void binary_to_decimal(int ichar_length,int iparity) // Function binary_to_decimal Declaration
{
 int i,b,a;i=0;b=0;printf("Enter the LSB first:\n");while(i

    Source: geocities.com/fais_sajjad