| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Къде греша http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=15583 |
Страница 1 от 1 |
| Автор: | koko76bj [ Пет Ное 03, 2017 7:13 pm ] |
| Заглавие: | Къде греша |
Здравейте започнах да си играя да пиша програма за 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) тази грешка ми дава |
|
| Автор: | radolin [ Пет Ное 03, 2017 7:15 pm ] |
| Заглавие: | Re: Къде греша |
Като начало, прати целия сорс код, а не само извадка. Ако това ти е целият сорс код, насочи се към някоя книжка C за начинаещи. |
|
| Автор: | koko76bj [ Пет Ное 03, 2017 7:34 pm ] |
| Заглавие: | 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 файла но там всичко си е правилно и нямам проблеми.Само тук е проблема,може би допускам синтактична грешка. |
|
| Автор: | radolin [ Пет Ное 03, 2017 7:58 pm ] |
| Заглавие: | Re: Къде греша |
Е добре де, той компилатора ти казва, никъде не е декларирана променливата key. Имаш примерно декларация на key_count - 'static unsigned int key_count;', имаш NEW_KEY, OLD_KEY, flag, но key не виждам да си я декларирал някъде (и компилатора също не вижда). |
|
| Автор: | ike [ Съб Ное 04, 2017 2:44 pm ] | |||||||||
| Заглавие: | Re: Къде греша | |||||||||
Тази програма ти ли си я писал или си я приписал от някъде другаде? |
||||||||||
| Автор: | Predator_MF [ Съб Ное 04, 2017 7:34 pm ] | ||||||||||||||||||
| Заглавие: | Re: Къде греша | ||||||||||||||||||
Най-отгоре в keydrive.c добави -
Ако някъде в друг файл имаш глобално дефиниран int key и искаш да я ползваш в този C файл -
Моля толерирайте начинаещите, ако си погледна назад кода когато съм се регистрирал в този форум, мога да се посмея много |
|||||||||||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|