
#include <reg52.h>

#define MAX_LINES          3
#define MAXCHARS_ON_LINE   10
#define CHAR_MASK          0xBF
#define high 1        
#define low  0        

sbit clear = P3^0;    
sbit write = P3^1;    

#define uint unsigned int
#define uchar unsigned char

void msec(uint x) 
    { uchar j;
      while (x-->0)
        { for(j=0;j<125;j++);
        }
    }

void code clear_display() 
    { clear=high;
      clear=low;
      clear=high;}

void code write_enable() 
    {write=high;
     write=low;
     write=high;}

void code word_delay()
    {msec(3500);}

unsigned char code *phrases2[] = {
  "Short",   "Medium",  "Very long"   };

void put_phrase( unsigned char line_no )  
{   
    while (*phrases2[line_no] != 0x00) 
    {  
       P0 = *phrases2[line_no];	
	    ++phrases2[line_no];
            write_enable();
    }
}

void main( void )            
{  
   clear_display();
   for(;;)                   
   {  
      unsigned char line_no;
      for ( line_no = 0; line_no < MAX_LINES; line_no++ )
      {
          put_phrase( line_no );
          word_delay();
          clear_display();
      }
   }
}
