Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 29.04.2014, 21:06  
Ahatoly
Частый гость
 
Регистрация: 21.04.2010
Адрес: Makeevka
Сообщений: 25
Сказал спасибо: 25
Сказали Спасибо 10 раз(а) в 3 сообщении(ях)
Ahatoly на пути к лучшему
По умолчанию Помогите разжевать цикл.

Всем добрый вечер. Возникла потребность подключить к устройству клавиатуру PC. На "просторах" нашел Application Note AVR313, ну и, естественно, данная избыточность мне не нужна, решил кое что поправить.
Вопрос состоит в следующем, в функции void decode(unsigned char sc) есть такой цикл:
if(!shift)// If shift not pressed,
{ // do a table look-up
for(i = 0; unshifted[i][0]!=sc && unshifted[i][0]; i++);
if (unshifted[i][0] == sc) {
put_kbbuff(unshifted[i][1]);
}

в котором мне не понятен смысл выделенного условия. Как я понимаю левый и правый unshifted[i][0] всегда будут равны, тогда зачем нужен правый, или я ошибаюсь?
И еще, в описании указано что некоторые клавиши клавиатуры игнорируются, т.е. иногда условие !=sc будет выполняться до конца массива, но не могу понять, как определяется конец массива?
Буду признателен всем кто растолкует мне истину.
Вложения:
Тип файла: pdf AVR313_doc1235.pdf (150.6 Кб, 72 просмотров)
Реклама:
Ahatoly вне форума  
Непрочитано 29.04.2014, 21:12  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

Условие из двух частей
unshifted[i][0]!=sc и unshifted[i][0] (имеется ввиду !=0)
&& - логическое "и" (не побитовое), говорит о том, что должно соблюдаться и одно (unshifted[i][0] не равно sc), и другое (unshifted[i][0] не равно нулю) условия.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 29.04.2014, 21:58  
Ahatoly
Частый гость
 
Регистрация: 21.04.2010
Адрес: Makeevka
Сообщений: 25
Сказал спасибо: 25
Сказали Спасибо 10 раз(а) в 3 сообщении(ях)
Ahatoly на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

Спасибо akegor, не ожидал что так оперативно. Да, действительно, в конце массива записано 0,0. Т.е. достигнув конца массива unshifted[i][0] примет значение ==0 и вторая часть условия будет нарушена, но что бы выйти из цикла должны быть нарушены обе части условия unshifted[i][0]!=sc о чем и сообщает логическое "и" &&. Вот если бы было лигическое "или". Я не прав?

Последний раз редактировалось Ahatoly; 29.04.2014 в 22:02.
Ahatoly вне форума  
Непрочитано 29.04.2014, 22:02  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

Смысл цикла for () - найти номер ячейки (i), для которой первый элемент совпадает с кодом нажатой клавиши sc. Конец таблицы определяется по нулевому значению ( правая половина условия).
Дальше, если совпадающий номер найден, то используется второй элемент ячейки (i), который есть ASCII код нажатой клавиши.

Последний раз редактировалось Yurkin2014; 29.04.2014 в 22:07.
Yurkin2014 вне форума  
Непрочитано 29.04.2014, 22:04  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

Сообщение от Ahatoly Посмотреть сообщение
Я не прав?
Да, неправы.
1 и 1 =1; 1 и 0 = 0; 0 и 1 = 0; 0 и 0 = 0.
Достаточно одного нарушения условия.

Я не вникал в проект, просто отвечаю на конкретные вопросы.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Непрочитано 29.04.2014, 22:06  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

Цикл до тех пор, пока не найдено совпадение И элемент не равен 0.
Yurkin2014 вне форума  
Непрочитано 29.04.2014, 22:07  
Ahatoly
Частый гость
 
Регистрация: 21.04.2010
Адрес: Makeevka
Сообщений: 25
Сказал спасибо: 25
Сказали Спасибо 10 раз(а) в 3 сообщении(ях)
Ahatoly на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

Yurkin2014, в чем смысл цикла я понимаю, но если конец таблицы достигнут, а sc так и не равен, то как произойдет выход из цикла?
Ahatoly вне форума  
Непрочитано 29.04.2014, 22:10  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

По равенству нулю. Мой пост выше.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
Ahatoly (29.04.2014)
Непрочитано 29.04.2014, 22:21  
Ahatoly
Частый гость
 
Регистрация: 21.04.2010
Адрес: Makeevka
Сообщений: 25
Сказал спасибо: 25
Сказали Спасибо 10 раз(а) в 3 сообщении(ях)
Ahatoly на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

akegor спасибо, согласно Вашего поста что-то стало доходить. Вы уж мужики извините может быть за туповатый вопрос или некорректное изложение моих мыслей, я в си без году неделя, но хочется научится.
Ahatoly вне форума  
Непрочитано 29.04.2014, 22:25  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,856
Сказал спасибо: 2,532
Сказали Спасибо 11,772 раз(а) в 5,896 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Помогите разжевать цикл.

Сообщение от Ahatoly Посмотреть сообщение
Вы уж мужики извините может быть за туповатый вопрос
Кому тупой, а кому и острый. Кто-то прошел и понабивал шишек, а кто-то в начале пути.
На то и форум.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плиз Atmega88 insiderbik AVR 8 19.12.2013 18:29
Помогите русифицировать Anycall Samsung SEC SCHW770, SEC SCHW420, SEC SCHW2700, SEC SCHW570 Rusik_best Автоматика и аппаратура связи 0 27.12.2011 16:13
Помогите, пожалуйста, с PICом и дисплеем VaL_KX Proteus 4 15.11.2010 22:33
Помогите найти схему радио маяка или "Охоты на лис" IgorAVR Автоматика и аппаратура связи 1 16.01.2007 14:43
помогите подобрать транзистор _grey_ Информация по радиокомпонентам 6 16.12.2006 13:33


Часовой пояс GMT +4, время: 19:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot