BerZerK-ku писал(а):Отвечаю честно, без под..ок и сарказма, не понимаю я о чем вы пишете. Можете подробней написать о чем речь? где кто в кого преобразовывался?
ладно, еще раз:
0. я написал функцию
Код: Выделить всё
unsigned char get_key_pressed(void){
unsigned char key;
unsigned char key2;
key = ~(PIND & ANY_KEY);
delay(15);
if(key == ~(PIND & ANY_KEY))
return key;
else
return NO_KEY;
}
1. я дал начинающему рекомендацию проверить мою функцию при помощи кода while(1) PORTB = get_key_pressed(); и он сказал - НЕ РАБОТАЕТ.
2. я стал выяснять - в чем проблема? и выяснил, что моя функция в этом коде не работает на самом деле.
3. однако, если ее модифицировать чуть-чуть, то она начинает работать. модификация внешне пустяковая:
Код: Выделить всё
unsigned char get_key_pressed(void){
unsigned char key;
unsigned char key2;
key = ~(PIND & ANY_KEY);
delay(15);
key2 = ~(PIND & ANY_KEY);
if(key == key2)
return key;
else
return NO_KEY;
}
4. я пришел к выводу, что виновато тут преобразование типов операндов.
5. далее, я изменил функцию по-другому, доведя ее до полностью правильноработающего во всех применениях варианта и снова дал ее товарищу с комментариями.
теперь вам понятно? вы согласны, что неработоспособность двух вариантов этой функции связана с преобразованием типов?
битва с дураками проиграна, победители торжествуют. слава победителям!