#pragma num_alias_table_entries	14
#pragma enable_multiple_baud

IO_0 output bitshift numbits(8) clockedge(+) io_com_data;
IO_2 output bit en;

IO_5 input bit up;
IO_6 input bit down;
IO_7 input bit enter;
IO_8 input bit esc;

int cursor = 1;

when(reset)
{
	//delay 15ms
	delay(600);
	//datainterface 1
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00111000UL);
	io_out(en, 0);	
	delay(1);
	//delay 4.1ms
	delay(160);
	//datainterface 2
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00111000UL);
	io_out(en, 0);
	delay(1);
	//delay 100us
	delay(2);
	//datainterface 3
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00111000UL);
	io_out(en, 0);
	delay(1);
	//delay 4.1ms
	delay(160);
	//datainterface 4
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00111000UL);
	io_out(en, 0);
	delay(1);
	//displayoff
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00001000UL);
	io_out(en, 0);
	delay(1);
	//clear
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00000001UL);
	io_out(en, 0);
	delay(1);
	delay(63);
	//displayon
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00001110UL);
	io_out(en, 0);
	delay(1);
	//autoforward
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00000110UL);
	io_out(en, 0);
	delay(1);
	//welcome page
	//move to central
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b11000110UL);
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00110111UL);//character "7"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00110001UL);//character "1"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00110011UL);//character "3"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00110000UL);//character "0"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00110001UL);//character "1"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b10110000UL);//character "-"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00110011UL);//character "3"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01000100UL);//character "D"
	io_out(en, 0);
	delay(1);
	//next line
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b10010101UL);
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01000110UL);//character "F"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01101001UL);//character "i"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01101110UL);//character "n"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01100001UL);//character "a"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01101100UL);//character "l"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00100000UL);//character " "
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01011001UL);//character "Y"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01100101UL);//character "e"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01100001UL);//character "a"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01110010UL);//character "r"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00100000UL);//character " "
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01010000UL);//character "P"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01110010UL);//character "r"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01101111UL);//character "o"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01101010UL);//character "j"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01100101UL);//character "e"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01100011UL);//character "c"
	io_out(en, 0);
	delay(1);
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01110100UL);//character "t"
	io_out(en, 0);
	delay(1);
	//clear
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00000001UL);
	io_out(en, 0);
	delay(1);
	delay(63);
}

when(io_changes(up)to 0)
{
	//cursor up
	if(cursor == 1)
	{
		cursor = 1;
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b10000000UL);
		io_out(en, 0);
		delay(1);
	}
	else if(cursor == 2)
	{
		cursor = cursor - 1;
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b10000000UL);
		io_out(en, 0);
		delay(1);
	}
	else if(cursor == 3)
	{
		cursor = cursor - 1;
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b11000000UL);
		io_out(en, 0);
		delay(1);
	}
	else if(cursor == 4)
	{
		cursor = cursor - 1;
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b10010100UL);
		io_out(en, 0);
		delay(1);
	}
}

when(io_changes(down)to 0)
{
	//cursor down
	if(cursor == 1)
	{
		cursor = cursor + 1;
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b11000000UL);
		io_out(en, 0);
		delay(1);
	}
	else if(cursor == 2)
	{
		cursor = cursor + 1;
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b10010100UL);
		io_out(en, 0);
		delay(1);
	}
	else if(cursor == 3)
	{
		cursor = cursor + 1;
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b11010100UL);
		io_out(en, 0);
		delay(1);
	}
	else if(cursor == 4)
	{
		io_out(en, 1);
		io_out(io_com_data, 0b00000000UL);
		io_out(io_com_data, 0b11010100UL);
		io_out(en, 0);
		delay(1);
	}
}

when(io_changes(enter)to 0)
{
	//add character "A"
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b01000001UL);
	io_out(en, 0);
	delay(1);
}

when(io_changes(esc)to 0)
{
	//cursor move to left
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00010000UL);
	io_out(en, 0);
	delay(1);
	//delete character
	io_out(en, 1);
	io_out(io_com_data, 0b10000000UL);
	io_out(io_com_data, 0b00100000UL);
	io_out(en, 0);
	delay(1);
	//cursor move to left
	io_out(en, 1);
	io_out(io_com_data, 0b00000000UL);
	io_out(io_com_data, 0b00010000UL);
	io_out(en, 0);
	delay(1);
}

    Source: geocities.com/hk/cloud_fan_school/Program/LCD/other

               ( geocities.com/hk/cloud_fan_school/Program/LCD)                   ( geocities.com/hk/cloud_fan_school/Program)                   ( geocities.com/hk/cloud_fan_school)                   ( geocities.com/hk)