logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AtMega 8] [C/AVR Studio/PROTEUS] menu wyłancza się po ok 5s

czech_w 03 Lis 2010 21:21 1310 2
REKLAMA
  • #1 8699185
    czech_w
    Poziom 12  
    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:
    
    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ń.
  • REKLAMA
  • #2 8699370
    gaskoin
    Poziom 38  
    Parę dni temu nsvinc dał przepisz na menu poszukaj w jego postach
  • #3 8699520
    czech_w
    Poziom 12  
    masz na myśli Menu ja aż tak rozbudowanego menu nie potrzebuje . Potrzebujetak 1.Tpompy i pus oraz minus i np T went plus minus koniec więc moje powinno działać i działa tylko wychodzi samo z pętli a nie powinno "według mnie "

    Znalazłem błąd. miałem ustawione w programie
    wdt_enable(WDTO_2S); //Włączenie Watchdog'a z czasem opóżnienia 2s

    a potem w pętli głównej programu
    natomiast nie resetował mi sie watchdog podczas gdy byłem w menu.

    Temat zamykam. Dzięki za pomoc.
REKLAMA