Mam taki problem usiłuję napisać jednopoziomowe menu w C . Niby działa ale jest ale po wejściu w menu zwiększanie działa i zmniejszanie też ale menu w symulatorze Proteus wyłancza się i przechodzi do normalnej części programu a w/g mnie powinien zostać w pętli pierwszej pozycji menu a wychodzi z niej . Kod wygląda tak:
Nie wiem o co biega. Dodam że menu jest wywoływane z głównej pętli progtamu nie z przerwań.
void Menu(void)
{
uint8_t nr=1;
while (nr!=0)
{
while (nr==1)
{
//LCD_Clear();
LCD_GoTo(0,0); //x,y
LCD_WriteText("1.WLANCZANIE POMPY.");
// Zwiększanie wartości Tpompy
if (!(KEYPIN&1<<KEYUP))
{
char c[2];
//_delay_ms(100);
if (!(KEYPIN&1<<KEYUP))
{
if (Tpompy<80)
{
Tpompy++;
LCD_GoTo(0,1);
utoa(Tpompy,c,10);
LCD_WriteText(c);
LCD_WriteData(0xDF);
LCD_WriteText('C');
}
else
{
Tpompy=0;
}
}
}
// Zmniejszanie wartości Tpompy
if (!(KEYPIN&1<<KEYDN))
{
_delay_ms(100);
if (!(KEYPIN&1<<KEYDN))
{
if (Tpompy<80)
{
Tpompy++;
}
else
{
Tpompy=0;
}
}
}
}
//_delay_ms(2000);
if (!(KEYPIN&1<<MENU))
{
// nr++; zaremowane co by nie poszedł dalej
/* }
while (nr==2)
//następna pozycja menu
Nie wiem o co biega. Dodam że menu jest wywoływane z głównej pętli progtamu nie z przerwań.