Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[51] Programming in C language for 8051 Micro Controller

Status
Not open for further replies.
any one has read routine for I2C communication?

I tried to read but i can't success.

My code is as shown in below code section.
Code:
void main()
		{
			lcd_ini();
	         	lcd_command(0x01);       
			delay(5);
			while(1)
			{
			start_eprom();
			write_eprom(0xA0);
			aknowledge();
			write_eprom(0x00);
			aknowledge();
			write_eprom(0xba);
			aknowledge();
			stop_eprom();

			start_eprom();
			write_eprom(0xA0);
			aknowledge();
			write_eprom(0x00);
			aknowledge();
			start_eprom();
			write_eprom(0xA1);
			aknowledge();
			eprom = read_eprom();
			no_aknowledge();
		
			stop_eprom();
			lcd();
			}

		}  
void write_eprom(unsigned char value)
		{
			unsigned int i;
			unsigned char send;
		
			send=value;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;
					send=send<<1;			
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
		}
	unsigned char read_eprom(void)
		{
			int i;
			unsigned char x;
 			eprom_data=1;      
 			x=0;
 			i=0x80;
 			do
  				{
					eprom_clk=0;
   					I2C_delay();
   					eprom_clk=1;
   					I2C_delay();
   					if (eprom_data) 
					x=(x)|i;
   					i>>=1;
  				}while(i!=0);
    		return x;
		}
	void start_eprom()
		{
			eprom_data=1;
			eprom_clk=1;
			_nop_();         //No operation
			_nop_();
			eprom_data=0;
			eprom_clk=0;
		}
	void stop_eprom()
		{
			eprom_data=0;
			eprom_clk=1;
			_nop_();
			_nop_(); 
			eprom_data=1;
			eprom_clk=0;
		}
	
	void aknowledge()
		{
			eprom_data = 0;
			eprom_clk=1;
			_nop_();
			_nop_();
			eprom_clk=0;
			eprom_data = 1;
		}
	void no_aknowledge()
		{
			eprom_data = 1;
			eprom_clk=1;
			_nop_();
			_nop_();
			eprom_clk=0;
			eprom_data = 1;
		}
	void I2C_delay()
		{
			unsigned char i;
			for(i=0; i<0x0f; i++);
		}
 

I tried to interface AT24C04 with AT89C55WD...

I can do interface in assembly language successfully but in C i can't read my data properly...

I can write data in memory successfully that i have checked in my programmer but i can't read...
 

Hi jignesh,

I2C is a slow communication protocol & have so many driver delay's.
There is chance for micro controller clock frequency around 100 MHz &
slave clock speed around some KHz, because of that slave can't respond in time.

I can write data in memory successfully that i have checked in my programmer but i can't read...

Until you read data from EEPROM, can't tell it is successfully written into
memory location.

Try to give more delay (or) there is any bit setting for response try to
do it.

If you introduce more delay also it's not a problem, after successful read
& write can optimize them.
 

i have tried after giving delay but i cant success..

Can u please update my code?
 

Code:
 void I2C_delay()
		{
			unsigned char i;
			for(i=0; i<0x0f; i++);
		}

Modify above I2C_delay() function like 1 ms timer, if you have already
developed timer then you can use it, there is no developed timer then
implement following way

Code:
 void I2C_delay()
		{
			unsigned char i;
			for(i=0; i<1000; i++);
		}

check with CRO for the 1 ms delay, if it is not exact delay try to change
delay and adjust to 1 ms, then you can use that delay after each and every
I2C transfer.

Try to use more than 10 ms delay after each and every I2C transfer, if it not
fine let me now.
 

Try to use more than 10 ms delay after each and every I2C transfer, if it not fine let me now.
A suggestion for people who can't read datasheets and are unable to implement the timing suggested by the memory device manufacturer.

I2C doesn't require additional delays, except after write operations. The suggested method is to perform acknowledge polling for end of write operation. If it's over your head, you can instead delay for the maximum duration of internal write operation, 5 ms in case of 24C04.
 

A suggestion for people who can't read datasheets and are unable to
implement the timing suggested by the memory device manufacturer.

It's really an a blind suggestion, I2C doesn't require any additional delays if it's implemented
as per datasheet.

I did it without 1 ms delay, if memory device clock frequency is too low then response rate is
slow then need to introduce some delay for proper output.
 

It's really an a blind suggestion, I2C doesn't require any additional delays if it's implemented
as per datasheet.
Yes. We often see people implement delays in interface code here and there, obviously without exactly knowing why. I suggest to implement the required timing and try to make it work.
 

Ya, I'm also suggesting to implement the driver as per the data sheet it is highly recommended.

If driver implemented as per mentioned timings, then no need to introduce delay's in the
interface code.
 

hi guys..

I want to ask something...

If i have called subroutine from main function and from that subroutine i called one another subroutine then where will my stack pointer go from last subroutine?

Like i have saw example in below code...
Code:
void main()
{
a();
}
void a()
{
b();
}
void b()
{

}
 

Review the description of CALL and RET instructions in a 8051 manual. Return addresses are automatically pushed on and popped from the stack, changing the stack pointer respectively.
 

what should i have to do if i want value above 4294967295 in any variable?

how i have to define that variable?

what is the data type?
 

Hi,

what should i have to do if i want value above 4294967295 in any variable?
The first question you should ask yourself is if you really need that 10 digit resolution.

For example if this value shows a distance in mm you could convert it to km. Then it shows 4295. Even as an integer value it gives a resolution down to 0.025%. Often more than enough. Other errors may be a mgnitude larger.

But if you say you need that large numbers, i'd go for floating point values. 32 bits of data give 24 bits of resolution, but with the 8 bits exponent a huge dynamic.

But integrating many, many values may be a problem..

Klaus
 

Dear Guys,

As shown in my code,

when i will try to send data to PC using RS-232 Serial communication, i got data on PC but my other function like frequency measurement,RPM measurement, key_press(All these function are external interrupt,timer interrupt based function) etc.. are not working.

when i disable to call sent function in datasend function i can do my all work.

my program flow is as below.

First of i took all the data from my sensor,ADC,etc.
Then Calculation process done on them.
Then i check if is there any key is press or not.
Then i go for display according to data and key status.
Then i send all those data to PC.

So what happen with my problem?

Code:
#include <AT89X55.H>
#include <MATH.H>
#include <INTRINS.H>

sfr lcd_data_pin=0xA0;  // data port P2
sbit rs=P3^7; // Register select pin
sbit rw=P3^6; // Read write pin
sbit en=P3^5; // Enable pin
sbit power_hz=P1^0;  // Frequency Count
sbit cs1=P1^1;		 // Chip Select Pin for ADC
sbit sdo=P1^4;		 // SDO pin for ADC
sbit sclk=P1^5;		 // SCLK pin for ADC
sbit sdi=P1^6;		 // SDI pin for ADC
sbit lsb=ACC^0;
sbit eprom_data=P0^6;	// data pin for Eprom
sbit eprom_clk=P0^7;	// clock pin for Eprom
	
char bdata swich;
sbit enter = swich^0;
sbit right = swich^1;
sbit up = swich^2;
sbit set = swich^3;
//sbit kg_ent = swich^4;
//sbit rpm_stop = swich^5;
//sbit hld_bit = swich^6;
//sbit kg_fact = swich^7;

char bdata adc_byte;
sbit adc24th = adc_byte^7;

char bdata flag;
sbit hld_bit = flag^0;
sbit kg_fact = flag^1;
sbit kg_ent = flag^2;
sbit rpm_stop = flag^3;


volatile unsigned long rpm_count,rpm,freq,eprom,kg_count;
volatile unsigned long crpm,ns,slip,tare_zero,pre_kg,kg_factor;
volatile unsigned long kg_cal;

volatile unsigned long idata torque,po,b,a,c,d;
volatile unsigned long idata send32,send24,send16,send8,dp;

volatile unsigned char page_count,lo_count,pulse_ov,pulse_count;
volatile unsigned char rotate_cur,adc24,adc16,adc8,command,pole;
volatile unsigned char eprom8,eprom16,eprom24,eprom32;
volatile unsigned char received_data;
volatile unsigned char d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,c1,c2,c3;

volatile unsigned int psw,al,kg;

void dis_2();
void dis_3();
void dis_kgm();
void dis_po();
void dis_crpm();
void dis_freq();
void aknowledge();
void write_adc(unsigned char);
void read_adc(unsigned char);
void I2C_delay();
void read_eprom();
void I2C_Delay(unsigned int);
void increment();
void enter1();
void rotate();
void start_eprom();
void stop_eprom();
void no_aknowledge();
void read_eprom_8bit(unsigned char);
void read_eprom_16bit(unsigned char);
void read_eprom_24bit(unsigned char);
void write_eprom_8bit(unsigned char,unsigned char);
void write_eprom_16bit(unsigned char,unsigned char,unsigned char);
void write_eprom_24bit(unsigned char,unsigned char,unsigned char,unsigned char);
void byteseprate();
void key_press();
void sub_tare();
void display();	
void fari();
void sent();

	void delay(unsigned int msec)    //delay function
		{
			int i,j;
			for(i=0;i<msec;i++)
			for(j=0;j<1275;j++);
		}

	void lcd_command(unsigned char comm) // function to send command to LCD
		{
			lcd_data_pin=comm;
			en=1;
			rs=0;
			rw=0;
			delay(1);
			en=0;
		}
	void lcd_data(unsigned char disp)    // function to send data on LCD
		{
			lcd_data_pin=disp;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		}

	lcd_dataa(unsigned char *disp)    // function to send string to LCD
		{
			int x;
			for(x=0;disp[x]!=0;x++)
				{
					lcd_data(disp[x]);	

				}
		}

	void lcd_ini()     //Function to inisialize the LCD
		{
			lcd_command(0x38);   
			delay(5);
			lcd_command(0x0C);       
			delay(5);

		}
	
	    datasend()
        {
            send32 = 250;
            send24 = 3;
            send16 = 3;
            send8 = 3;
            dp = 3;
            sent();

            send32 = 252;
            send24 = 1;
            send16 = 1;
            send8 = 1;
            dp = 1;
//            sent();

            a = hz;
            byteseprate();

            send32 = 65;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 2;
//            sent();

            a = torque;
            byteseprate();

            send32 = 66;
            send24 = c3;
            send16 = c2;
            send8 = c1;
            dp = 4;
//            sent();

            a = po;
            byteseprate();

            send32 = 67;
            send24 = c3;
            send16 = c2;
            send8 = c1;
            dp = 2;
//            sent();

            a = rpm;
            byteseprate();

            send32 = 72;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 0;
//            sent();

            a = slip;
            byteseprate();

            send32 = 73;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 2;
//            sent();

/*            a = crpm;
            byteseprate();

            send32 = 81;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 0;
            sent();*/

            send32 = 82;
            send24 = 0;
            send16 = 0;
            send8 = pole;
            dp = 0;
 //           sent();

            send32 = 252;
            send24 = 0;
            send16 = 0;
            send8 = 0;
            dp = 0;
//            sent();
        }
    void sent()
        {   
            SBUF = 254;
            while(TI == 0);
            TI = 0;
    
/*            SBUF = send32;
            while(TI == 0);
            TI = 0;

            SBUF = send24;
            while(TI == 0);
            TI = 0;

            SBUF = send16;
            while(TI == 0);
            TI = 0;

            SBUF = send8;
            while(TI == 0);
            TI = 0;

            SBUF = dp;
            while(TI == 0);
            TI = 0;

            SBUF = 253;
            while(TI == 0);
            TI = 0;*/
        }
	void main()
		{
			unsigned char g = 0x00,k = 0x00;
			lcd_ini();
			TMOD = 0x16;
			T2CON = 0x01;
            TH0 = 0xff;	
	//		lcd_welcome();
	//		delay(300);
			IT0 = 0;
			IE0 = 1;
			EX0 = 1;			
			EA = 1;
            PX0 = 1;
            PT0 = 1;
            PT1 = 1;
            PS = 1;
            while(INT0 == 0);
            
            if(set == 1)
            {
                dis_offset();
                offset();
                lcd_command(0x01);       
    			delay(5);
            }
            
            read_eprom_8bit(0x01);
            pole = eprom;
			lcd_command(0x01);       
			delay(5);
		
			initiate_adc();
            off();
            gain();
            convert();

      
            dis_3();
           
        	while(1)
			{
                    hz();
                    rpm_start();

                    rpm_stop = 0;
                    g = 0x00;             
                    read_a();
                    find_rpm();
                    find_kg();
                    find_torque();
                    find_po();
		
                    key_press();
		            EX0 = 1;
		            display();

                    TR1 = 0;
                    TH1 = 0xfd;
                    TL1 = 0x00;
                    TMOD = 0x26;
                    PCON = 0x80;
                    SCON = 0x40;
                    
                    ET1 = 0;
                    ET0 = 0;
                    ES = 0;
                    EA = 1;
                    TR1 = 1;
                    datasend();
                
                    TR1 = 0;
                    ES = 0;
                    ET1 = 1;
                    ET0 = 1;
                    TMOD = 0x16;
                    TH1 = 0x00;
                    TL1 = 0x00;

         
			}

		}
 
Last edited:

I think when my serial interrupt is on at that time other interrupts are not working properly.

So what should i have to do?
 

Hi,

Your code is not documented and it is not complete.

I read it again and again and can't find out what's the purpose of the code and how it should work.

So it's impossible for me to help.

Klaus
 

Sorry for mistake

Code:
#include <AT89X55.H>
#include <MATH.H>
#include <INTRINS.H>

sfr lcd_data_pin=0xA0;  // data port P2
sbit rs=P3^7; // Register select pin
sbit rw=P3^6; // Read write pin
sbit en=P3^5; // Enable pin
sbit power_hz=P1^0;  // Frequency Count
sbit cs1=P1^1;		 // Chip Select Pin for ADC
sbit sdo=P1^4;		 // SDO pin for ADC
sbit sclk=P1^5;		 // SCLK pin for ADC
sbit sdi=P1^6;		 // SDI pin for ADC
sbit lsb=ACC^0;
sbit eprom_data=P0^6;	// data pin for Eprom
sbit eprom_clk=P0^7;	// clock pin for Eprom
	
char bdata swich;
sbit enter = swich^0;
sbit right = swich^1;
sbit up = swich^2;
sbit set = swich^3;
//sbit kg_ent = swich^4;
//sbit rpm_stop = swich^5;
//sbit hld_bit = swich^6;
//sbit kg_fact = swich^7;

char bdata adc_byte;
sbit adc24th = adc_byte^7;

char bdata flag;
sbit hld_bit = flag^0;
sbit kg_fact = flag^1;
sbit kg_ent = flag^2;
sbit rpm_stop = flag^3;


volatile unsigned long rpm_count,rpm,freq,eprom,kg_count;
volatile unsigned long crpm,ns,slip,tare_zero,pre_kg,kg_factor;
volatile unsigned long kg_cal;

volatile unsigned long idata torque,po,b,a,c,d;
volatile unsigned long idata send32,send24,send16,send8,dp;

volatile unsigned char page_count,lo_count,pulse_ov,pulse_count;
volatile unsigned char rotate_cur,adc24,adc16,adc8,command,pole;
volatile unsigned char eprom8,eprom16,eprom24,eprom32;
volatile unsigned char received_data;
volatile unsigned char d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,c1,c2,c3;

volatile unsigned int psw,al,kg;

void dis_2();
void dis_3();
void dis_kgm();
void dis_po();
void dis_crpm();
void dis_freq();
void aknowledge();
void write_adc(unsigned char);
void read_adc(unsigned char);
void I2C_delay();
void read_eprom();
void I2C_Delay(unsigned int);
void increment();
void enter1();
void rotate();
void start_eprom();
void stop_eprom();
void no_aknowledge();
void read_eprom_8bit(unsigned char);
void read_eprom_16bit(unsigned char);
void read_eprom_24bit(unsigned char);
void write_eprom_8bit(unsigned char,unsigned char);
void write_eprom_16bit(unsigned char,unsigned char,unsigned char);
void write_eprom_24bit(unsigned char,unsigned char,unsigned char,unsigned char);
void byteseprate();
void key_press();
void sub_tare();
void display();	
void fari();
void sent();
	void delay(unsigned int msec)    //delay function
		{
			int i,j;
			for(i=0;i<msec;i++)
			for(j=0;j<1275;j++);
		}

	void lcd_command(unsigned char comm) // function to send command to LCD
		{
			lcd_data_pin=comm;
			en=1;
			rs=0;
			rw=0;
			delay(1);
			en=0;
		}
	void lcd_data(unsigned char disp)    // function to send data on LCD
		{
			lcd_data_pin=disp;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		}

	lcd_dataa(unsigned char *disp)    // function to send string to LCD
		{
			int x;
			for(x=0;disp[x]!=0;x++)
				{
					lcd_data(disp[x]);	

				}
		}

	void lcd_ini()     //Function to inisialize the LCD
		{
			lcd_command(0x38);   
			delay(5);
			lcd_command(0x0C);       
			delay(5);

		}
	
	void lcd_welcome()
		{
			lcd_command(0x80);
			delay(5);
			lcd_dataa("VEER ELECTRONICS    ");

			lcd_command(0xC0);
			delay(5);
			lcd_dataa("TORQUE SPEED METER  ");

			lcd_command(0x94);
			delay(5);
			lcd_dataa("M:- +91- 9879203486 ");

			lcd_command(0xd4);
			delay(5);
			lcd_dataa("Sr No:- 150101      ");
		}

	void hz()
		{	

			TH2 = 0x00;
			TL2 = 0x00;
				while(power_hz == 0)
					{
					}
				while(power_hz == 1)
					{
					}		
			TR2 = 1;
				while(power_hz == 0)
					{
					}
				while(power_hz == 1)
					{
					}
				while(power_hz == 0)
					{
					}
				while(power_hz == 1)
					{
					}
				while(power_hz == 0)
					{
					}
				while(power_hz == 1)
					{
					}
			TR2 = 0;
						
			b = (256*TH2)+TL2;
			freq = 0x107ac000/b;
        //    freq = 0x137e;
		}
		
		void bitsep16()
		{
			
			d = c/10;
			d1 = c%10;		// LSB
			c = d/10;
			d2 = d%10;		// LSB-1
			d = c/10;
			d3 = c%10;		// LSB-2
			c = d/10;
			d4 = d%10;		// MSB+1
			d = c/10;
			d5 = c%10;		// MSB
			c = d/10;
			d6 = d%10;		// MSB+1
			d = c/10;
			d7 = c%10;
			c = d%10;
			d8 = d%10;		// MSB+1
			d = c/10;
			d9 = c%10;
			d10 = d%10;

			d1 = d1+0x30;
			d2 = d2+0x30;
			d3 = d3+0x30;
			d4 = d4+0x30;
			d5 = d5+0x30;
			d6 = d6+0x30;
			d7 = d7+0x30;
			d8 = d8+0x30;
			d9 = d9+0x30;
			d10 = d10+0x30;
		}
		
		void lcd()
		{
			c = a;
		
		//    c = adc24;
			bitsep16();

			lcd_command(0x80);
			delay(5);

			lcd_data_pin=d7;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d6;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d5;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			
			lcd_data_pin=d3;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d1;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			c = adc16;
			bitsep16();

			lcd_data_pin=d3;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			c = adc8;
			bitsep16();

			lcd_data_pin=d3;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d2;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			c = eprom8;
			bitsep16();

			lcd_command(0xc0);
			delay(5);

			lcd_data_pin=d5;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d4;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=d2;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

	/*		lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
	/*		c = freq;
			bitsep16();

			lcd_data_pin=0x46;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x3a;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=0x2E;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		*/	
		}
	void dis_pole()
		{
			lcd_command(0x80);
			delay(5);
			
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4E;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x54;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x52;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x50;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4F;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4C;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
				
			lcd_command(0xC0);
			delay(5);

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			c = pole;
			bitsep16();

			lcd_data_pin=d1;		//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		}
	void dis_cal()
		{
			lcd_command(0x80);
			delay(5);
			
			lcd_data_pin=0x57;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x41;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4E;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x54;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x43;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x41;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4c;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x49;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x42;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x52;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x41;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x54;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x49;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4F;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4E;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
				
			lcd_command(0xC0);
			delay(5);

			lcd_data_pin=0x53;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x54;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x3a;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4e;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4f;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4e;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x54;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x3a;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x59;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x53;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		}
	void dis_psw()
		{
			unsigned char i;
			lcd_command(0x80);
			delay(5);
			
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4e;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x54;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x45;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x52;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x50;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x41;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x53;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x53;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x57;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x4f;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x52;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x44;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			c = psw;
			bitsep16();
	
			lcd_command(0xC0);
			delay(5);

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3; 
    		en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x31;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

		i = rotate_cur + 0xc6;
		
		lcd_command(0x0e);
		delay(5);
		lcd_data_pin=i;
		en=1;
		rs=0;
		rw=0;
		delay(1);
		en=0;     
	
		return;		
		}
	void dis_al()
		{
			unsigned char i=0;

			lcd_command(0x80);
			delay(5);
			
			lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='N';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='T';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='A';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='M';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='L';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='N';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='G';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='T';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='H';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			c = al;
			bitsep16();
	
			lcd_command(0xC0);
			delay(5);

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x2E;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1; 
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='M';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='t';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='r';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			i = rotate_cur + 0xc3;
		
			if(i < 0xc4)
			{				
				lcd_command(0x0e);
				delay(5);
				lcd_data_pin=i;
				en=1;
				rs=0;
				rw=0;
				delay(1);
				en=0;
			}
			else
			{
				i = i+1;
				lcd_command(0x0e);
				delay(5);
				lcd_data_pin=i;
				en=1;
				rs=0;
				rw=0;
				delay(1);
				en=0;
			}

			return;
		}
	void dis_kg()
		{
			unsigned char i;
			lcd_command(0x80);
			delay(5);
			
			lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='N';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='T';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='S';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='T';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='D';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='W';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='I';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='G';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='H';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='T';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			c = kg;
			bitsep16();
	
			lcd_command(0xC0);
			delay(5);

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x2E;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2; // ahiya pole data move karavo
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='K';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='g';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			i = rotate_cur + 0xc4;
		
			if(i < 0xc6)
			{
				lcd_command(0x0e);
				delay(5);
				lcd_data_pin=i;
				en=1;
				rs=0;
				rw=0;
				delay(1);
				en=0;
			}
			else
			{
				i = i+1;
				lcd_command(0x0e);
				delay(5);
				lcd_data_pin=i;
				en=1;
				rs=0;
				rw=0;
				delay(1);
				en=0;
			}

			return;
		}
    
    void dis_psw_c()
        {
            lcd_command(0x80);
			delay(5);

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='C';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='O';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='C';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='T';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_command(0xC0);
			delay(5);

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='P';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='A';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='S';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='S';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='W';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='O';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='D';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

        }
    void dis_psw_nc()
        {
            lcd_command(0x80);
			delay(5);

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='I';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='N';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='C';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='O';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='E';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='C';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='T';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_command(0xC0);
			delay(5);

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='P';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='A';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='S';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='S';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='W';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='O';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='R';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin='D';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x20;
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
        }
	void increment()
		{
            unsigned char i;
            EX0 = 0;
            up = 0;
			if(lo_count == 1)
                {
                    pole = pole + 0x02;
                    if(pole > 0x08)
                        {
                            pole = 0x02;
                        }
                    dis_pole();  
                }
            else if(lo_count == 3)
                {
                    if(rotate_cur == 0)
                        {
                            psw = psw + 0x3e8;
                            c = psw;
                            bitsep16();
                            if(d4 == 0x30)
                                {
                                    psw = psw - 0x2710;
                                }
                            dis_psw();
                        }
                    else if(rotate_cur == 1)
                        {
                            psw = psw + 0x64;
                            c = psw;
                            bitsep16();
                            if(d3 == 0x30)
                                {
                                    psw = psw - 0x3e8;
                                } 
                                    dis_psw();   
                        }
                    else if(rotate_cur == 2)
                        {
                            psw = psw + 0x0a;
                            c = psw;
                            bitsep16();
                            if(d2 == 0x30)
                            {
                                psw = psw - 0x64;
                            }
                            dis_psw();
                                
                        }
                    else
                        {
                            psw = psw + 0x01;
                            c = psw;
                            bitsep16();
                            if(d1 == 0x30)
                            {
                                psw = psw - 0x0a;
                            }
                            dis_psw();                                
                        }  
                }
            else if(lo_count == 4)
                {
                    if(rotate_cur == 0)
                        {
                            i = i+1;
                            if(i==1)
                                {
                                    al = 0x3e8;
                                    dis_al();
                                }
                            else
                                {
                                    i = 0;
                                    al = 0x001;
                                    dis_al();
                                }
                        }
                    else if(rotate_cur == 1)
                        {
                            if(al < 0x3e8)
                                {
                                    al = al + 0x64;
                                    c = al;
                                    bitsep16();
                                    if(d3 == 0x30)
                                        {
                                            al = al - 0x3e8;
                                        } 
                                            dis_al();   
                                }
                        }
                    else if(rotate_cur == 2)
                        {
                            al = al + 0x0a;
                            c = al;
                            bitsep16();
                            if(d2 == 0x30)
                            {
                                al = al - 0x64;
                            }
                            dis_al();
                                
                        }
                    else
                        {
                            al = al + 0x01;
                            c = al;
                            bitsep16();
                            if(d1 == 0x30)
                            {
                                al = al - 0x0a;
                            }
                            dis_al();                                
                        }
                }
            else
                {
                    if(rotate_cur == 0)
                        {
                            kg = kg + 0x3e8;
                            if(kg > 0x1770)
                                {
                                    kg = 0x00;
                                }
                            dis_kg();
                            
                        }
                    else if(rotate_cur == 1)
                        {
                            if(kg < 0x1770)
                                {
                                    kg = kg + 0x64;
                                    c = kg;
                                    bitsep16();
                                    if(d3 == 0x30)
                                        {
                                            kg = kg - 0x3e8;
                                        } 
                                            dis_kg();   
                                }
                        }
                    else if(rotate_cur == 2)
                        {
                            kg = kg + 0x0a;
                            c = kg;
                            bitsep16();
                            if(d2 == 0x30)
                            {
                                kg = kg - 0x64;
                            }
                            dis_kg();
                                
                        }
                    else
                        {
                            kg = kg + 0x01;
                            c = kg;
                            bitsep16();
                            if(d1 == 0x30)
                            {
                                kg = kg - 0x0a;
                            }
                            dis_kg();                                
                        }
                }
		}
	void enter1()
		{
            EX0 = 0;
            up = 0;
			if(lo_count == 1)
                {
                    write_eprom_8bit(0x01,pole);
                    swich = 0x04;
                    set = 1;
                    key_press();
                }
            else if(lo_count == 2)
                {
                    swich = 0x04;
                    set = 1;
                    key_press();
                }
            else if(lo_count == 3)
                {
                    if(psw == 0x4d2)
                        {
                            dis_psw_c();
                            delay(100);
                            swich = 0x04;
                            set = 1;
                            key_press();
                        }
                    else
                        {
                            dis_psw_nc();
                            delay(100);
                            lo_count = 0x00;
                            lcd_command(0x0c);
                            delay(5);
                            display();
                        }
                }
            else if(lo_count == 4)
                {
                    a = al;
                    byteseprate();
                    write_eprom_16bit(0x02,c2,c1);
                    swich = 0x04;
                    set = 1;
                    key_press();
                }
            else if(lo_count == 5)
                {
                    a = kg;
                    byteseprate();
                    write_eprom_16bit(0x04,c2,c1);
                    kg_ent = 1;
                    swich = 0x04;
                    set = 1;
                    key_press();                    
        		}
            else
                {
                    swich = 0x04;
                    set = 1;
                    key_press();
                }
        }
	void rotate()
		{
			EX0 = 0;
			right = 0;
			if(lo_count == 3)
				{
					rotate_cur = rotate_cur + 1;
						if(rotate_cur < 4)
							{
								dis_psw();
								return;
							}
						else
							{
								rotate_cur = 0;
								dis_psw();
								return;	
							}
				}
			else if(lo_count == 4)
				{
					rotate_cur = rotate_cur + 1;
						if(rotate_cur < 4)
							{
								dis_al();
								return;
							}
						else
							{
								rotate_cur = 0;
								dis_al();	
								return;
							}
				}
			else
				{
					rotate_cur = rotate_cur + 1;
						if(rotate_cur < 4)
							{
								dis_kg();
								return;
							}
						else
							{
								rotate_cur = 0;
								dis_kg();
								return;	
							}
				}	
		}
	void ISR_Extern0(void) interrupt 0
		{
			swich = P0;
			swich = ~swich;
			EX0 = 0;
			return;  	
        }
	void key_press()
		{
			if(swich != 0x00)
				{
					if(set == 1)
						{
				mode:		swich = 0x00;
							lo_count = lo_count+1;
							if(lo_count == 1)
								{
                                    read_eprom_8bit(0x01);
                                    pole = eprom;
									rotate_cur = 0x00;
                            		dis_pole();
				pole:				EX0 = 1;
									while(INT0 == 1)
										{
										}
									while(INT0 == 0)
										{
										}
									if(set == 1)
										{
											goto mode;
										}
									else if(up == 1)
										{
											increment();
                                            goto pole;
										}
									else if(enter == 1)
										{
											enter1();
										}
									else
										{
											goto pole;
										}
								}
							else if(lo_count == 2)
								{
									dis_cal();
				cal:				EX0 = 1;
									while(INT0 == 1)
										{
										}
									while(INT0 == 0)
										{
										}
									if(set == 1)
										{   
                                            swich = 0x00;
                                            lo_count = 0x00;
                                            lcd_command(0x0c);
                                            delay(1);
											display(); // ahiya mode ni jagya e out kari ne out nu routine call karavanu rehase.
										}
									else if(enter == 1)
										{
                                            lcd_command(0x01);
                                            delay(1);
											enter1();
										}
									else
										{
											goto cal;
										}
								}
							else if(lo_count == 3)
								{
									rotate_cur = 0x00;
                                    psw = 0x00;
									dis_psw();
				psw:				EX0 = 1;
									while(INT0 == 1)
										{
										}
									while(INT0 == 0)
										{
										}
									if(set == 1)
										{
                                            swich = 0x00;
											lo_count = 0x00;
                                            lcd_command(0x0c);
                                            delay(1);
                                            display();
										}
									else if(up == 1)
										{
											increment();
                                            goto psw;
										}
									else if(right == 1)
										{
											rotate();
											goto psw;
										}											
									else if(enter == 1)
										{
											enter1();
										}
									else
										{
											goto psw;
										}
								}
							else if(lo_count == 4)
								{
                                    read_eprom_16bit(0x02);
                                    al = eprom;
									rotate_cur = 0x00;
									dis_al();
				al:					EX0 = 1;
									while(INT0 == 1)
										{
										}
									while(INT0 == 0)
										{
										}
									if(set == 1)
										{
											goto mode;
										}
									else if(up == 1)
										{
											increment();
											goto al;
										}
									else if(right == 1)
										{
											rotate();
											goto al;
										}
									else if(enter == 1)
										{
											enter1();
										}
									else
										{
											goto al;
										}
								}
							else if(lo_count == 5)
								{
                                    read_eprom_16bit(0x04);
                                    kg = eprom;
									rotate_cur = 0x00;
									dis_kg();
				kg:					EX0 = 1;
									while(INT0 == 1)
										{
										}
									while(INT0 == 0)
										{
										}
									if(set == 1)
										{
											goto mode;
										}
									else if(up == 1)
										{
											increment();
											goto kg;
										}
									else if(right == 1)
										{
											rotate();
											goto kg;
										}
									else if(enter == 1)
										{
											enter1();
										}
									else
										{
											goto kg;
										}
								}
							else
								{
			     						lo_count = 0;
		      							IT0 = 0;
	       								IE0 = 1;
      									EX0 = 1;
									    EA = 1;
                                        lcd_command(0x0c);
                                        delay(5);                                		
                                        display();
                                  //  goto up;
						
								}
						}   
					else if(up == 1)
						{
							EX0 = 0;
							up = 0;
							page_count = page_count+1;
                            display();
                    
							
/*					up:			if(page_count == 1)
									{
										dis_2();
										return;										
									}
								else
									{
										page_count = 0;
										dis_3();
										return;
									} */     
						}
					else if(right == 1)
						{
                            a = kg_count;
                            byteseprate();
                            write_eprom_24bit(0x09,c3,c2,c1);
                            IT0 = 0;
							IE0 = 1;
							EX0 = 1;
							EA = 1;
						}
					else if(enter == 1)
						{
							enter = 0;
              				while (P0_0 == 0)
							{
							}
						        if(kg_ent == 1)
                                {
                                    kg_ent = 0;
                                    kg_fact = 1;
                                    display();
                                }
                                else
                                {
                                    hld_bit = 1;
                                    display();
                                }		
		/*				EX0 = 1;
								if(up == 1)
									{
										EX0 = 0;
										up = 0;
									
										page_count = page_count+1;
							
										if(page_count == 1)
											{
												dis_2();										
											}
										else
											{		
												page_count = 0;
												dis_3();
											}
									}
							
							while (P0_0 == 0)
							{
								enter = 0;
							}   */							
						}
				
					else
						{
							IT0 = 0;
							IE0 = 1;
							EX0 = 1;
							EA = 1;
						} 
			}	
			else
					{
						IT0 = 0;
						IE0 = 1;
						EX0 = 1;
						EA = 1;
					}  		
		}
    void display()
        {
            if(hld_bit == 0)
            {
                if(page_count == 1)
                {
                    
                    dis_crpm();
        			dis_freq();
                    IT0 = 0;
        			IE0 = 1;
		          	EX0 = 1;
        			EA = 1;
                }
                else
                {
                    page_count = 0;
                    dis_kgm();
        			dis_po();
                    IT0 = 0;
        			IE0 = 1;
		          	EX0 = 1;
        			EA = 1;
                }
            }
            else if(hld_bit == 1)
            {
                if(page_count == 1)
                {                    
                    dis_crpm();
        			dis_freq();
                    fari();
                }
                else
                {
                    page_count = 0;
                    dis_kgm();
        			dis_po();
                    fari();
                }
            }
            else
            {
                    IT0 = 0;
        			IE0 = 1;
		          	EX0 = 1;
        			EA = 1;
            }
        }
    void fari()
        {
            EX0 = 1;
            while(P0_0 == 1)
            {
                if(up == 1)
                {   
                    up = 0;
                    page_count = page_count + 1;
                    display();
                }
            }
            enter = 0;
            while(P0_0 == 0)
            {

            }
            delay(5);
            hld_bit = 0;
            display();
            IT0 = 0;
        	IE0 = 1;
		   	EX0 = 1;			
        	EA = 1;
        }    
	void dis_3()
		{
			dis_kgm();
			dis_po();
			return;
		}
	void dis_2()
		{
			dis_crpm();
			dis_freq();
			return;
		}
	void dis_kgm()
		{
            c = torque;
            bitsep16();

			lcd_command(0x80);
			delay(5);

			lcd_data_pin=0x54;			//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//2
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
/*			lcd_data_pin=d6;			//3
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;*/

			lcd_data_pin=d5;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=0x2E;			//5
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d4;			//6
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
            
            lcd_data_pin=d3;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=d2;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=0x20;			//8
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
            
            c = rpm;
            bitsep16();

			lcd_data_pin=0x52;			//9
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//10
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;			//11
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;			//12
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=d2;			//13
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//14
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//15
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

// start pole display
            
            c = pole;
            bitsep16();

			lcd_data_pin=d1;			//16
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

 /*           c = pre_kg;
            bitsep16();

            lcd_command(0x80);
			delay(5);

            lcd_data_pin=d6;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=d5;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d4;			//5
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=d3;			//6
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//8
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;


            c = kg_factor;
            bitsep16();

            lcd_data_pin=d10;			//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d9;			//2
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=d8;			//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d7;			//2
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d6;			//3
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d5;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d4;			//5
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=d3;			//6
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//8
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;   */         
		}
	void dis_po()
		{
  			c = po;
            bitsep16();

            lcd_command(0xC0);
			delay(5);

			lcd_data_pin=0x50;			//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//2
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d4;			//3
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=0x2E;			//5
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=d2;			//6
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//8
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

             c = slip;
            bitsep16();

			lcd_data_pin=0x53;			//9
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//10
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;			//11
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;			//12
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x2E;			//13
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=d2;			//14
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//15
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

//	start Hold Display
            if(hld_bit == 0)
            {
                lcd_data_pin=0x20;			//16
			    en=1;
                rs=1;
                rw=0;
                delay(1);
                en=0;
            }
            else
            {
   //             hld_bit = 0;

                lcd_data_pin=0x48;			//16
	       		en=1;
		      	rs=1;
                rw=0;
    			delay(1);
	       		en=0;
            }

 /*           c = kg_cal;
            bitsep16();

            lcd_command(0xC0);
			delay(5);

            lcd_data_pin=d9;			//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=d8;			//2
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            lcd_data_pin=d7;			//3
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d6;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d5;			//5
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;			//6
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d3;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=d2;			//8
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//9
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

            c = kg_count;
            bitsep16();

 /*           lcd_data_pin=d8;			//9
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d7;			//10
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d6;			//11
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d5;			//12
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;			//13
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=d3;			//14
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d2;			//15
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
        
            lcd_data_pin=d1;			//16
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;*/
        }
	void dis_crpm()
		{
            c = crpm;
            bitsep16();

			lcd_command(0x80);
			delay(5);

			lcd_data_pin='C';    //0x43;			//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';			//2
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d4;			//3
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d2;			//5
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//6
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';    //0x20;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';        //0x20;			//8
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

// start RPM display
            c = rpm;
            bitsep16();

			lcd_data_pin=0x52;			//9
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//10
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;			//11
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;			//12
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=d2;			//13
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//14
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//15
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

// start pole display

			c = pole;
            bitsep16();

			lcd_data_pin=d1;			//16
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

		}
	void dis_freq()
		{
			c = freq;
			bitsep16();

			lcd_command(0xC0);
			delay(5);

			lcd_data_pin=0x46;			//1
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//2
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=d4;			//3
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;			//4
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_data_pin=0x2E;			//5
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
	
			lcd_data_pin=d2;			//6
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//7
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//8
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

// start Slip display
            c = slip;
            bitsep16();

			lcd_data_pin=0x53;			//9
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x20;			//10
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d4;			//11
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d3;			//12
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=0x2E;			//13
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
			
			lcd_data_pin=d2;			//14
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=d1;			//15
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

//	start Hold Display

			if(hld_bit == 0)
            {
                lcd_data_pin=0x20;			//16
			    en=1;
                rs=1;
                rw=0;
                delay(1);
                en=0;
            }
            else
            {
   //             hld_bit = 0;
                lcd_data_pin=0x48;			//16
	       		en=1;
		      	rs=1;
    			rw=0;
	       		delay(1);
		      	en=0;
            }
		}

	void ISR_Timer0(void) interrupt 1
		{
			TF0 = 0x00;
			pulse_count = pulse_count+1;
			
			if (pulse_count == 1)
				{
					TH1 = 0x00;
					TL1 = 0X00;
					TR1 = 1;
				}
			else
				{
					TR1 = 0;
					TR0 = 0;
					rpm_count = (65536*pulse_ov)+(256*TH1)+TL1;
					pulse_count = 0;
					pulse_ov = 0;
                    rpm_stop = 1;
//                    rpm_count = 0x3e8;
				}		
			
		}

	void ISR_Timer1(void) interrupt 3
		{
			TF1 = 0;
			pulse_ov = pulse_ov+1;
			return;
		}

	void rpm_start()
		{
			ET1 = 1;
			ET0 = 1;
//			EA  = 1;
			TR0 = 1;
  		}

	void write_adc(const unsigned char regAddr)
		{
		unsigned char SPICount;
  		unsigned char SPIData;

  		cs1 = 1;
  		sclk = 0;

  		SPIData = regAddr;
  		cs1 = 0;
		for (SPICount = 0; SPICount < 8; SPICount++)
  			{
    			if (SPIData & 0x80)
      				sdi = 1;
    			else
      				sdi = 0;
    				sclk = 1;
    				sclk = 0;
    				SPIData <<= 1;

  			}                    
  		cs1 = 1;
  		sdi = 0;	
		}

	void initiate_adc()
		{
			write_adc(0xff);
			write_adc(0xff);
			write_adc(0xff);
			write_adc(0xfe);

			write_adc(0x40);
			write_adc(0x00);
			write_adc(0x00);
			write_adc(0x81);

			write_adc(0x78);
			write_adc(0x00);
			write_adc(0x00);
			write_adc(0x40);

			write_adc(0x40);
			write_adc(0x00);
			write_adc(0x00);
			write_adc(0x71);

			write_adc(0x74);
			write_adc(0x00);
			write_adc(0x00);
			write_adc(0x00);

			write_adc(0x5e);
			write_adc(0xff);
			write_adc(0xff);
			write_adc(0xff);

			write_adc(0x4a);
			write_adc(0x00);
			write_adc(0x0f);
			write_adc(0xa0);

			return;			
		}
       
    void off()
        {
            write_adc(0x46);
            write_adc(0x00);
            write_adc(0xcc);
            write_adc(0x00);

            write_adc(0x42);
            write_adc(0x00);
            write_adc(0xcc);
            write_adc(0x00);

            write_adc(0x62);
            write_adc(0x00);
            write_adc(0xcc);
            write_adc(0x00);

            write_adc(0x60);
            write_adc(0x00);
            write_adc(0xcc);
            write_adc(0x00);

        }


    void gain()
        {
            write_adc(0x44);
            write_adc(0xff);
            write_adc(0xff);
            write_adc(0xff);

            write_adc(0x48);
            write_adc(0x40);
            write_adc(0x00);
            write_adc(0x00);

            write_adc(0x5c);
            write_adc(0x80);
            write_adc(0x00);
            write_adc(0x00);

            write_adc(0x40);
            write_adc(0x80);
            write_adc(0x00);
            write_adc(0x11);
        }

    void convert()
        {
            write_adc(0xe8);
            write_adc(0xfe);
            write_adc(0xfe);
            write_adc(0xfe);
        }

	void read_adc(const unsigned char regAddr)
		{
			unsigned char SPICount;
  			unsigned char SPIData;                  
  
  			cs1 = 1;
  			sclk = 0;
  			SPIData = regAddr;
			cs1 = 0;    
  				for (SPICount = 0; SPICount < 8; SPICount++)
  					{
    					if (SPIData & 0x80)
      						sdi = 1;
    					else
      						sdi = 0;
    						sclk = 1;
    						sclk = 0;
    						SPIData <<= 1;
  					}                                           
  			sdi = 1;
			ACC = 0;
  				for (SPICount = 0; SPICount < 7; SPICount++)
  					{	
						lsb = sdo;
    					sclk = 1;    					
						ACC <<= 1;
    					sclk = 0;  
  					}
						lsb = sdo;
    					sdi = 0;
    					sclk = 1;    					
    					sclk = 0;
						sdi = 1;
						adc24 = ACC; 
			ACC = 0;
  				for (SPICount = 0; SPICount < 7; SPICount++)
  					{	
						lsb = sdo;
    					ACC <<= 1;
    					sclk = 1;    					
    					sclk = 0;  
  					}
						lsb = sdo;
    					sdi = 0;
    					sclk = 1;    					
    					sclk = 0;
						sdi = 1;
						adc16 = ACC; 
			ACC = 0;
  				for (SPICount = 0; SPICount < 7; SPICount++)
  					{	
						lsb = sdo;
    					ACC <<= 1;
    					sclk = 1;    					
    					sclk = 0;  
  					}
						lsb = sdo;
    					sdi = 0;
    					sclk = 1;    					
    					sclk = 0;
						sdi = 1;
						adc8 = ACC;
						ACC = 0;
			cs1 = 1;                      
		  	return;
		}		
	void cycle_count()
		{
			read_adc(0x0a);
			a = (65536 * adc24) + (256 * adc16) + adc8;
			return;
		}
    void read_a()
        {
            read_adc(0x16);
            kg_count = (65536 * adc24) + (256 * adc16) + adc8;
            return;
        }
	void write_eprom(unsigned char value)
		{
			unsigned int i;
			unsigned char send;

			start_eprom();

			send=0xa0;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();

			send=value;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			
			aknowledge();
		}
	void write_eprom_8bit(unsigned char value,unsigned char value1)
		{
			unsigned int i,j;
			unsigned char send;
			start_eprom();
		
			j = value;
		
			write_eprom(j);

			send=value1;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();
			
			stop_eprom();
		}

	void write_eprom_16bit(unsigned char value,unsigned char value1,unsigned char value2)
		{
			unsigned int i,j;
			unsigned char send;
			start_eprom();
		
			j = value;
		
			write_eprom(j);

			send=value1;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();

			send=value2;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();
			
			stop_eprom();
		}

	void write_eprom_24bit(unsigned char value,unsigned char value1,unsigned char value2,unsigned char value3)
		{
			unsigned int i,j;
			unsigned char send;
			start_eprom();
		
			j = value;
		
			write_eprom(j);

			send=value1;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();

			send=value2;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();
			
			send=value3;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();
			stop_eprom();
		}

	void dummy_write_eprom(unsigned char value)
		{
			unsigned char i,send;
			start_eprom();
			
			send=0xa0;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();

			send=value;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();
		
			start_eprom();

			send=0xa1;
			for(i=0;i<8;i++)
				{
					eprom_data=send/128;			//extracting MSB
					send=send<<1;			//shiftng left
					eprom_clk=1;
					_nop_();
					_nop_();
					eprom_clk=0;
				}
			aknowledge();
		}

	void read_eprom_8bit(unsigned char value)
		{
			unsigned char i,j;
			j = value;			
			dummy_write_eprom(j);
			received_data = 0x00;
			eprom_data = 1;
			eprom_clk = 0;
			ACC = 0x00;

			for( i = 0; i< 7 ;i++)
				{	
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					ACC = ACC << 1;
					received_data = ACC;
					eprom_clk = 0;
					I2C_Delay(10);
				}
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					eprom_clk = 0;
					eprom_data = 0;
					eprom = ACC;

					no_aknowledge();
					return;
		}

		void read_eprom_16bit(unsigned char value)
		{
			unsigned char i,j;
			j = value;			
			dummy_write_eprom(j);
			received_data = 0x00;
			eprom_data = 1;
			eprom_clk = 0;
			ACC = 0x00;

			for( i = 0; i< 7 ;i++)
				{	
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					ACC = ACC << 1;
					received_data = ACC;
					eprom_clk = 0;
					I2C_Delay(10);
				}
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					eprom_clk = 0;
					eprom_data = 0;
					eprom16 = ACC;

			aknowledge();

			received_data = 0x00;
			eprom_data = 1;
			eprom_clk = 0;
			ACC = 0x00;

			for( i = 0; i< 7 ;i++)
				{	
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					ACC = ACC << 1;
					received_data = ACC;
					eprom_clk = 0;
					I2C_Delay(10);
				}
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					eprom_clk = 0;
					eprom_data = 0;
					eprom8 = ACC;

					no_aknowledge();
					eprom = (256 * eprom16) + eprom8;
					return;
		}

		void read_eprom_24bit(unsigned char value)
		{
			unsigned char i,j;
			j = value;			
			dummy_write_eprom(j);
			received_data = 0x00;
			eprom_data = 1;
			eprom_clk = 0;
			ACC = 0x00;

			for( i = 0; i< 7 ;i++)
				{	
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					ACC = ACC << 1;
					received_data = ACC;
					eprom_clk = 0;
					I2C_Delay(10);
				}
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					eprom_clk = 0;
					eprom_data = 0;
					eprom24 = ACC;

			aknowledge();

			received_data = 0x00;
			eprom_data = 1;
			eprom_clk = 0;
			ACC = 0x00;

			for( i = 0; i< 7 ;i++)
				{	
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					ACC = ACC << 1;
					received_data = ACC;
					eprom_clk = 0;
					I2C_Delay(10);
				}
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					eprom_clk = 0;
					eprom_data = 0;
					eprom16 = ACC;

			aknowledge();

			received_data = 0x00;
			eprom_data = 1;
			eprom_clk = 0;
			ACC = 0x00;

			for( i = 0; i< 7 ;i++)
				{	
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					ACC = ACC << 1;
					received_data = ACC;
					eprom_clk = 0;
					I2C_Delay(10);
				}
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					eprom_clk = 0;
					eprom_data = 0;
					eprom8 = ACC;

					no_aknowledge();

					eprom = (65536 * eprom24) + (256 * eprom16) + eprom8;
					return;
		}
/*		unsigned char read_eprom()
		{
			unsigned char i;
			received_data = 0x00;
			eprom_data = 1;
			eprom_clk = 0;
			ACC = 0x00;

			for( i = 0; i< 7 ;i++)
				{	
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					ACC = ACC << 1;
					received_data = ACC;
					eprom_clk = 0;
					I2C_Delay(10);
				}
					eprom_clk = 1;
					I2C_Delay(10);
					ACC = received_data;
					lsb = eprom_data;
					eprom_clk = 0;
					eprom_data = 0;
					received_data = ACC;
					return received_data;
		}
*/
	void start_eprom()
		{	
			eprom_clk=0;
			eprom_data=1;
			I2C_Delay(100);
			eprom_clk=1;
			I2C_Delay(100);
			eprom_data=0;
			I2C_Delay(100);
			eprom_clk=0;
			I2C_Delay(100);
		}
	void stop_eprom()
		{
			eprom_data=0;
			eprom_clk=1;
			I2C_Delay(100); 
			eprom_data=1;
			eprom_clk=0;
			I2C_Delay(100);
		}
	
	void aknowledge()
		{
			eprom_data = 0;
			eprom_clk=1;
			I2C_Delay(100);
			eprom_clk=0;
			eprom_data = 1;
			I2C_Delay(100);
		}
	void no_aknowledge()
		{
			eprom_data = 1;
			eprom_clk=1;
			I2C_Delay(100);
			eprom_clk=0;
			eprom_data = 1;
			I2C_Delay(100);
		}
	void I2C_Delay(unsigned int msec)
		{
			unsigned char k;
			for(k=0;k<msec;k++)
			{
			}
		}

	void byteseprate()
		{
			d = a;
			a = a % 0x10000;
			c3 = d / 0x10000;		// MS byte
			d = a;
			c2 = a / 0x100;		// MS byte - 1
			c1 = d % 0x100;		// LS byte
		}
    void find_rpm()
        {
            if(rpm_count == 0x00)
            {
                rpm = 0x00;
                crpm = 0x00;
                ns = 0x00;
                slip = 0x00;
            }
            else
            {
                rpm = ((0x36ee8000/rpm_count)*0x3c)/0x3e8;
                crpm = (rpm * 0x1388)/freq;
                ns = ((freq * 0x78) / 0x64) / pole;
                slip = ((ns - rpm) * 0x2710) / ns;
            }
        }
    void find_kg()
        {
            sub_tare();
            if(kg_fact == 1)
            {
                kg_fact = 0;
                kg_factor = (pre_kg * 0x03e8) / kg;
                a = kg_factor;
                byteseprate();
                write_eprom_24bit(0x06,c3,c2,c1);                
            }
            kg_cal = pre_kg * 0x2710;     //0186a0
            read_eprom_24bit(0x06);
            kg_factor = eprom;
            kg_cal = kg_cal / kg_factor;
        }
    void sub_tare()
        {
            read_eprom_24bit(0x09);
            tare_zero = eprom;
            if(tare_zero >= kg_count)
                {
                    pre_kg = tare_zero - kg_count;
                }
            else
                {
                    pre_kg = kg_count - tare_zero;
                }
        }
    void find_torque()
        {
            read_eprom_16bit(0x02);
            al = eprom;
            torque = (kg_cal * al) / 0x64;
        }
    void find_po()
        {
            po = ((rpm * 0x1130) * torque) / 0x0668a0;
        }
	void dis_offset()
        {
            lcd_command(0x80);
			delay(5);
			
			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='P';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='l';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='e';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='a';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='s';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='e';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='W';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='a';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='i';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='t';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;
		
			lcd_command(0xC0);
			delay(5);

			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='O';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='f';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='f';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='s';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='e';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='t';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' '; // ahiya pole data move karavo
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='P';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='r';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='o';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='c';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='e';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='s';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin='s';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

			lcd_data_pin=' ';
			en=1;
			rs=1;
			rw=0;
			delay(1);
			en=0;

        }
    void offset()
        {
            EA = 0;
            initiate_adc();

            write_adc(0x46);
            write_adc(0x00);
            write_adc(0x00);
            write_adc(0x00);
    
            write_adc(0x42);
            write_adc(0x00);
            write_adc(0x00);
            write_adc(0x00);

            write_adc(0x62);
            write_adc(0x00);
            write_adc(0x00);
            write_adc(0x00);

            write_adc(0x60);
            write_adc(0x00);
            write_adc(0x00);
            write_adc(0x00);

            gain();
            
            write_adc(0xD9);
            write_adc(0xfe);
            write_adc(0xfe);
            write_adc(0xfe);

            delay(100);
            delay(100);
            
            read_adc(0x1e);

            write_adc(0x5e);
            write_adc(adc24);
            write_adc(adc16);
            write_adc(adc8);

            adc_byte = adc24;
            while(adc24th == 0)
                {
                    delay(100);
                     
                    read_adc(0x1e);

                    write_adc(0x5e);
                    write_adc(adc24);
                    write_adc(adc16);
                    write_adc(adc8);

                    adc_byte = adc24;
                }
            write_adc(0xdd);
            write_adc(0xfe);
            write_adc(0xfe);
            write_adc(0xfe);
    
            delay(100);
            delay(100);
            delay(100);
            delay(100);

            read_adc(0x1e);

            write_adc(0x5e);
            write_adc(adc24);
            write_adc(adc16);
            write_adc(adc8);

            adc_byte = adc24;
            while(adc24th == 0)
                {
                    delay(100);
               
                    read_adc(0x1e);

                    write_adc(0x5e);
                    write_adc(adc24);
                    write_adc(adc16);
                    write_adc(adc8);

                    adc_byte = adc24;
                }            
        }
    datasend()
        {
            send32 = 250;
            send24 = 3;
            send16 = 3;
            send8 = 3;
            dp = 3;
            sent();

            send32 = 252;
            send24 = 1;
            send16 = 1;
            send8 = 1;
            dp = 1;
            sent();

            a = hz;
            byteseprate();

            send32 = 65;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 2;
            sent();

            a = torque;
            byteseprate();

            send32 = 66;
            send24 = c3;
            send16 = c2;
            send8 = c1;
            dp = 4;
            sent();

            a = po;
            byteseprate();

            send32 = 67;
            send24 = c3;
            send16 = c2;
            send8 = c1;
            dp = 2;
            sent();

            a = rpm;
            byteseprate();

            send32 = 72;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 0;
            sent();

            a = slip;
            byteseprate();

            send32 = 73;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 2;
            sent();

/*            a = crpm;
            byteseprate();

            send32 = 81;
            send24 = 0;
            send16 = c2;
            send8 = c1;
            dp = 0;
            sent();*/

            send32 = 82;
            send24 = 0;
            send16 = 0;
            send8 = pole;
            dp = 0;
            sent();

            send32 = 252;
            send24 = 0;
            send16 = 0;
            send8 = 0;
            dp = 0;
            sent();
        }
    void sent()
        {   
            SBUF = 254;
            while(TI == 0);
            TI = 0;
    
            SBUF = send32;
            while(TI == 0);
            TI = 0;

            SBUF = send24;
            while(TI == 0);
            TI = 0;

            SBUF = send16;
            while(TI == 0);
            TI = 0;

            SBUF = send8;
            while(TI == 0);
            TI = 0;

            SBUF = dp;
            while(TI == 0);
            TI = 0;

            SBUF = 253;
            while(TI == 0);
            TI = 0;
        }
	void main()
		{
			unsigned char g = 0x00,k = 0x00;
			lcd_ini();
			TMOD = 0x16;
			T2CON = 0x01;
            TH0 = 0xff;	
	//		lcd_welcome();
	//		delay(300);
			IT0 = 0;
			IE0 = 1;
			EX0 = 1;			
			EA = 1;
/*            PX0 = 1;
            PT0 = 1;
            PT1 = 1;
            PS = 1;*/
            while(INT0 == 0);
            
            if(set == 1)
            {
                dis_offset();
                offset();
                lcd_command(0x01);       
    			delay(5);
            }
            
            read_eprom_8bit(0x01);
            pole = eprom;
			lcd_command(0x01);       
			delay(5);
		
			initiate_adc();
            off();
            gain();
            convert();

      
            dis_3();
           
        	while(1)
			{
                    hz();
                    rpm_start();
again:              if(rpm_stop == 0)
                    {
                        g = g+1;
                        if(g == 5)
                        {
                            TR1 = 0;
                            TR0 = 0;
                            ET1 = 0;
                            ET0 = 0;
                            g = 0x00;
                            pulse_count = 0x00;
                            pulse_ov = 0x00;
                            rpm_count = 0x00;
                      //      goto agal;
                        }
                        else
                        {
                            key_press();
                     //       delay(1);
                            goto again;
                        }
                    } 
                    rpm_stop = 0;
                    g = 0x00;             
                    read_a();
                    find_rpm();
                    find_kg();
                    find_torque();
                    find_po();
		
                    key_press();
		            EX0 = 1;
		            display();

                    ET1 = 0;
                    ET0 = 0;
                    TR1 = 0;
                    TH1 = 0xfd;
                    TL1 = 0x00;
                    TMOD = 0x26;
                    PCON = 0x80;
                    SCON = 0x40;
                    
                    
                    ES = 1;
                    EA = 1;
                    TR1 = 1;
                    datasend();
                
                    TR1 = 0;
                    ES = 0;
                    ET1 = 1;
                    ET0 = 1;
                    EA = 0;
                    TMOD = 0x16;
                    TH1 = 0x00;
                    TL1 = 0x00;

         //  cycle_count();			
		//	a = h;
		//	byteseprate();
		//	write_eprom_24bit(g,c3,c2,c1);
		//	read_eprom_24bit(k);
        //    a = kg_count;
		//	lcd();  
			}

		}
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top