maticova klavsnice a LCD presun PORTB,D na PORT E,F

Tak sem to nechal na tech portech kde jsem ale mam problem s rotaci menu. Po zapnuti naskoci uvodni text vse je ok. Jak mile dam tlacitko posunu menu tak mi naskoci jedna uroven a ta se uz nezmeni. co s tim udelat?

[code]int main (void)
{
char str[20] = “VUT BRNO”;
char Txt[20] = “DIPLOMOVA PRACE”;
//mody
char manual[20] = “Manualni mod”;
char automatic[20] = “Automaticky mod”;
//rezimy
char man[20] = “Manualni”;
char poloh[20] = “Poloha”;
char perimetr[20] = “Perimetr”;
char Mono[20] = “Sken 1D”;
char Dual[20] = “Sken 2D”;
char trasink[20] = “Trasovani”;

u08 line = 0;

init();
delay_1ms_u16(20);
init_lcd();
cursor_disp_ctrl(6);

// display startup message
clear_disp();
put_string_xy(3, 0, str);
put_string_xy(0, 1, Txt);
key = 0;
while (key == 0);
clear_disp();

// display button name
int uroven=0; //promenna pouzita pro rolovani menu po LCD pocatecni nastaveni na 0

//int suburoven=0; //promenna pouzita pro podurovne
// display button name
for(;:wink: {
if (key != 0) {
switch (key) {
//case 0x11 : put_char(‘1’); break; // 1
//case 0x12 : put_char(‘2’); break; // 2
//case 0x14 : put_char(‘3’); break; // 3
case 0x21 : {uroven=uroven-1; if (uroven==0) uroven==6;}; break; // 4
case 0x22 : {uroven=uroven+1;if (uroven==7) uroven==1;}; break; // 5
//case 0x24 : put_char(‘6’); break; // 6
//case 0x41 : put_char(‘7’); break; // 7
//case 0x42 : put_char(‘8’); break; // 8
//case 0x44 : put_char(‘9’); break; // 9
//case 0x82 : put_char(‘0’); break; // 0
//case 0x28 : put_char(‘+’); break; // F1
//case 0x48 : put_char(‘-’); break; // F2
//case 0x81 : put_char(‘*’); break; // *
//case 0x84 : put_char(‘#’); break; // #
//case 0x18 : // ESC
// clear_disp();
// line = 0;
// break;
//case 0x88 : // Enter
// if (line == 0)
// line = 1;
// else
// line = 0;
// goto_xy(0, line);
// break;
}
key = 0;
beep(200, 10);

if (uroven=1){
clear_disp();
put_string_xy(0, 0, manual);
put_string_xy(0, 1, “Manualni”); } //samozrejme s oznamenim na LCD prislusnym textem
if (uroven=2){
clear_disp();
put_string_xy(0, 0, automatic);
put_string_xy(0, 1, “Poloha”);}
//nastavovani polohy (serva nastavena v centralni pozici)
if (uroven=3){
clear_disp();
put_string_xy(0, 0, automatic);
put_string_xy(0, 1, “perimetr”); }
if (uroven=4){
clear_disp();
put_string_xy(0, 0, automatic);
put_string_xy(0, 1, “Mono”);}
if (uroven=5){
clear_disp();
put_string_xy(0, 0, automatic);
put_string_xy(0, 1, “Dual”); }
if (uroven=6){
clear_disp();
put_string_xy(0, 0, automatic);;
put_string_xy(0, 1, “trasink”);}
}
}

return 1;
}[/code]

**EDITACE: **
tak uz sem to rozjel stacilo upravit

if (uroven==1){ clear_disp(); put_string_xy(0, 0, manual); put_string_xy(0, 1, "Manualni"); } //samozrejme s oznamenim na LCD prislusnym textem if (uroven==2){ clear_disp(); put_string_xy(0, 0, automatic); put_string_xy(0, 1, "Poloha");} //nastavovani polohy (serva nastavena v centralni pozici) if (uroven==3){ clear_disp(); put_string_xy(0, 0, automatic); put_string_xy(0, 1, "perimetr"); } if (uroven==4){ clear_disp(); put_string_xy(0, 0, automatic); put_string_xy(0, 1, "Mono");} if (uroven==5){ clear_disp(); put_string_xy(0, 0, automatic); put_string_xy(0, 1, "Dual"); } if (uroven==6){ clear_disp(); put_string_xy(0, 0, automatic);; put_string_xy(0, 1, "trasink");}
LCD.zip (46.1 KB)