Все равно не реагирует. Странные дела

Может поможет полный код программы:
#include <ADuC812.h>
#include <stdio.h>
#define set_first_line 0x80
#define set_second_line 0xC0
unsigned char lcd_buffer[6];
sbit RS=P2^2;
sbit RW=P2^1;
sbit En=P2^0;
unsigned char i,j;
void delay(void) {
for(i=0; i<5; i++) {
for(j=0;j<50;j++) {}
}
}
void send_lcd_4bit(unsigned char send_data) {
P2=(P2 | 0xF0);
send_data=(send_data | 0x0F);
P2=(P2 & send_data);
En=1;
delay();
En=0;
}
void send_lcd_cmd(unsigned char send_data) {
RS=0;
send_lcd_4bit(send_data);
send_data=(send_data << 4);
send_lcd_4bit(send_data);
delay();
}
void send_lcd_data(unsigned char send_data) {
RS=1;
send_lcd_4bit(send_data);
send_data=(send_data << 4);
send_lcd_4bit(send_data);
delay();
}
void send_lcd_symbol(unsigned char adress, unsigned char send_data) {
send_lcd_cmd(adress);
send_lcd_data(send_data);
}
void LCD_Init(void) {
delay();
send_lcd_4bit(0x30);
delay();
send_lcd_4bit(0x30);
delay();
send_lcd_4bit(0x30);
delay();
send_lcd_4bit(0x20);
delay();
send_lcd_cmd(0x28);
delay();
send_lcd_cmd(0x0C);
delay();
send_lcd_cmd(0x06);
delay();
send_lcd_cmd(0x01);
}
void send_lcd(unsigned char line,unsigned char *txt) {
unsigned int i=0;
while(txt[i]!=NULL) {
send_lcd_symbol(line+i, txt[i]);
i++;
}
}
void display_voltage(void) interrupt 6 {
unsigned int ADCValue;
ADCValue = (ADCDATAL + (ADCDATAH&0x0F))<<8;
ADCValue=((long)ADCValue*2500UL)>>12;
ADCValue=(ADCValue/1000);
sprintf (lcd_buffer,"U=%i V", ADCValue);
}
void ADC_Init(void) {
EA=0;
EADC=0;
SCONV=0;
ADCCON1=0x7C;
ADCCON2=0x03;
EA=0;
EADC=0;
}
void main(void) {
unsigned char *txt = "Freq. :";
P2=0x00;
delay();
En=0;
RW=0;
LCD_Init();
delay();
send_lcd(set_second_line, txt);
delay();
ADC_Init();
EA=1;
EADC=1;
SCONV=1;
while(1) {
send_lcd(set_first_line, lcd_buffer);
delay();
}
}