|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 8:18 pm
|
Страница 1 от 1
|
[ 6 мнения ] |
|
| Автор |
Съобщение |
|
koko76bj
Ранг: Минаващ
Регистриран на: Вто Юни 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 |
|
 |
|
radolin
Ранг: Форумен бог
Регистриран на: Пон Дек 19, 2005 12:21 pm Мнения: 1037
|
 Re: Къде греша
Като начало, прати целия сорс код, а не само извадка. Ако това ти е целият сорс код, насочи се към някоя книжка C за начинаещи.
|
| Пет Ное 03, 2017 7:15 pm |
|
 |
|
koko76bj
Ранг: Минаващ
Регистриран на: Вто Юни 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 |
|
 |
|
radolin
Ранг: Форумен бог
Регистриран на: Пон Дек 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 |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Къде греша
Тази програма ти ли си я писал или си я приписал от някъде другаде?
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Съб Ное 04, 2017 2:44 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
 Re: Къде греша
Най-отгоре в keydrive.c добави - Ако някъде в друг файл имаш глобално дефиниран int key и искаш да я ползваш в този C файл - Моля толерирайте начинаещите, ако си погледна назад кода когато съм се регистрирал в този форум, мога да се посмея много 
|
| Съб Ное 04, 2017 7:34 pm |
|
|
|
Страница 1 от 1
|
[ 6 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|