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

Obsługa klawiatury macierzowej ( matrycowej ) - problem

Piotrek992 02 Gru 2009 18:19 1341 4
REKLAMA
  • #1 7336930
    Piotrek992
    Poziom 16  
    Witam ! Mam taki niby prosty program do obsługi klawiatury matrycowej 4x4 bez użycia przerwań. Niestety przy kompilowaniu wyskakuje mi błąd: "expected identifier or '(' before '{' token" i pokazuje na pierwszą użytą klamrę. Co jest nie tak ?

    #include <avr/io.h>
    #include <util/delay.h>
    #include <HD44780.h>
    #include <HD44780.c>
    
    int nrKLAW, liczba;
    char dekoderKLAW[10];
    int skanKLAW;
    
    {
    nrKLAW=12;
    PORTB=0xFC;
    
    _delay_ms(20);
    if ((PINB>>4)==7)
    {
    _delay_ms(10)
    if((PINB>>4)==7)
    nrKLAW=1;
    }
    
    if ((PINB>>4)==11)
    {
    _delay_ms(10);
    if ((PINB>>4)==11)
    nrKLAW=2;
    }
    
    if ((PINB>>4)==13)
    {
    _delay_ms(10);
    if ((PINB>>4)==13)
    nrKLAW=3;
    }
    
    if ((PINB>>4)==14)
    {
    _delay_ms(10);
    if ((PINB>>4)==14)
    nrKLAW=4;
    }
    return nrKLAW;
    }
    
    
    int main(void)
    {
    
    DDRB=0x0F;
    PORTB=0xFF;
    
    
    
    LCD_Initalize();
    
    while(1)
    {
    liczba=12;
    LCD_Clear();
    
    LCD_GoTo(0,0);
    LCD_WriteText("Podaj znak:");
    
    while ( liczba==12)
    {
    liczba=skanKLAW;
    if ( liczba!=12)
    {
    utoa ( liczba, dekoderKLAW, 10 );
    LCD_GoTo(0,1);
    LCD_WriteText(dekoderKLAW);
    }
    }
    _delay_ms(500);
    
    
    }
    }
    
    
  • REKLAMA
  • #2 7337086
    Karol966
    Poziom 31  
    Stosował byś dobre nawyki programowania to zauważył byś, że masz coś nie tak z kalmarami:
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include <HD44780.h>
    #include <HD44780.c>
    
    int nrKLAW, liczba;
    char dekoderKLAW[10];
    int skanKLAW;
    
    {
    	nrKLAW=12;
    	PORTB=0xFC;
    	_delay_ms(20);
    	if ((PINB>>4)==7)
    	{
    		_delay_ms(10)
    		if((PINB>>4)==7)
    		nrKLAW=1;
    	}
    	if ((PINB>>4)==11)
    	{
    		_delay_ms(10);
    		if ((PINB>>4)==11)
    		nrKLAW=2;
    	}
    	if ((PINB>>4)==13)
    	{
    		_delay_ms(10);
    		if ((PINB>>4)==13)
    		nrKLAW=3;
    	}
    	if ((PINB>>4)==14)
    	{
    		_delay_ms(10);
    		if ((PINB>>4)==14)
    		nrKLAW=4;
    	}
    	return rrKLAW;
    }
    
    
    int main(void)
    {
    
    	DDRB=0x0F;
    	PORTB=0xFF;
    	LCD_Initalize();
    	while(1)
    	{
    		liczba=12;
    		LCD_Clear();
    		LCD_GoTo(0,0);
    		LCD_WriteText("Podaj znak:");
    		while ( liczba==12)
    		{
    			liczba=skanKLAW;
    			if ( liczba!=12)
    			{
    			utoa ( liczba, dekoderKLAW, 10 );
    			LCD_GoTo(0,1);
    			LCD_WriteText(dekoderKLAW);
    		}
    	}
    	_delay_ms(500);
    }
    } 
    
  • REKLAMA
  • #3 7337106
    Piotrek992
    Poziom 16  
    Niestety dalej to samo...
  • REKLAMA
  • #5 7337235
    Piotrek992
    Poziom 16  
    Jeśli chodzi o klamry to ja nie widze błędu... rrKLAW poprawiłem wcześniej na nrKLAW... Nie wiem co jest źle... :/
REKLAMA