Отговори на тема  [ 6 мнения ] 
Къде греша 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Юни 27, 2017 8:03 am
Мнения: 24
Местоположение: Варна
Мнение Къде греша
Здравейте
започнах да си играя да пиша програма за MCU Atmega16, но ударих на камък при компилирането.Ако някой може да ми каже къде греша.

if(NEW_KEY == NO_KEY)
{
key = NO_KEY;
key_count = 0;
flag = 0;
return;
};

if(OLD_KEY == NEW_KEY)
{
key_count++;
}
else
{
OLD_KEY = NEW_KEY;
key_count = 0;
};

if ((key_count>2)&&(flag==0))
{
key = NEW_KEY;
flag = 1;
}
else
{
if (key_count>59)
{
if (!(key_count%10)) key=NEW_KEY;
else key = NO_KEY;

}
else
{
key = NO_KEY;
}
};

return;
}


'key' undeclared (first use in this function)
тази грешка ми дава


Пет Ное 03, 2017 7:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 12:21 pm
Мнения: 1037
Мнение Re: Къде греша
Като начало, прати целия сорс код, а не само извадка. Ако това ти е целият сорс код, насочи се към някоя книжка C за начинаещи.


Пет Ное 03, 2017 7:15 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Юни 27, 2017 8:03 am
Мнения: 24
Местоположение: Варна
Мнение Re: Къде греша
това ми е файла keydrive.c


#include "keydriver.h"


void scan_key(unsigned int adc_data)
{
static unsigned int key_count;
static unsigned char NEW_KEY, OLD_KEY, flag=0;

if (adc_data>768 && adc_data<938) NEW_KEY = OK;
else if (adc_data>597 && adc_data<768) NEW_KEY = RIGHT;
else if (adc_data>426 && adc_data<597) NEW_KEY = UP;
else if (adc_data>256 && adc_data<426) NEW_KEY = DOWN;
else if (adc_data>85 && adc_data<256) NEW_KEY = LEFT;
else if (adc_data<85) NEW_KEY = MENU;
else NEW_KEY = NO_KEY;


if(NEW_KEY == NO_KEY)
{
key = NO_KEY;
key_count = 0;
flag = 0;
return;
};

if(OLD_KEY == NEW_KEY)
{
key_count++;
}
else
{
OLD_KEY = NEW_KEY;
key_count = 0;
};

if ((key_count>2)&&(flag==0))
{
key = NEW_KEY;
flag = 1;
}
else
{
if (key_count>59)
{
if (!(key_count%10)) key=NEW_KEY;
else key = NO_KEY;

}
else
{
key = NO_KEY;
}
};

return;
}


това е файла kaydrive.h

#define OK 1
#define DOWN 2
#define LEFT 3
#define RIGHT 4
#define UP 5
#define MENU 6
//#define POWER 7

#define NO_KEY 0x00

има още 9 файла но там всичко си е правилно и нямам проблеми.Само тук е проблема,може би допускам синтактична грешка.


Пет Ное 03, 2017 7:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Дек 19, 2005 12:21 pm
Мнения: 1037
Мнение Re: Къде греша
Е добре де, той компилатора ти казва, никъде не е декларирана променливата key.

Имаш примерно декларация на key_count - 'static unsigned int key_count;', имаш NEW_KEY, OLD_KEY, flag, но key не виждам да си я декларирал някъде (и компилатора също не вижда).


Пет Ное 03, 2017 7:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Къде греша
koko76bj написа:
започнах да си играя да пиша програма за MCU Atmega16

Тази програма ти ли си я писал или си я приписал от някъде другаде?

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Ное 04, 2017 2:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение Re: Къде греша
Най-отгоре в keydrive.c добави -
Код:
int key = 0;


Ако някъде в друг файл имаш глобално дефиниран int key и искаш да я ползваш в този C файл -
Код:
extern int key;


Моля толерирайте начинаещите, ако си погледна назад кода когато съм се регистрирал в този форум, мога да се посмея много :)


Съб Ное 04, 2017 7:34 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни