Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Сигнал CLK


Автор: olenka1808las 10.6.2013, 10:07
Как на С описать для сигнала CLK переход из 1 в 0,и потом из 0 в 1?помогите пожалуйста

Автор: borisbn 10.6.2013, 11:27
olenka1808las, какой сигнал CLK ? Для какого устройства ?
Вот возьми и попробуй перечитать свой вопрос непредвзятым взглядом. Типа, со стороны.

Автор: olenka1808las 10.6.2013, 11:46
Вот по временной диаграмме нужно описать работу сдвигового регистра,чтобы считать данные (16разрядный код) с DOUT. Надо для этого цикл для CLK сделать,не могу сообразить как

Автор: bsa 10.6.2013, 12:02
olenka1808las, читать данные надо при изменении CLK с 0 на 1. Изменение с 1 на 0 тебе интересно не должно быть. Решается это так:
Код
if ((oldClk ^ clk) && clk) { //первая часть условия проверяет изменилась ли CLK, а вторая сравнивает с 1
   //код выполняется только если clk изменилась с 0 на 1
   ...
}
oldClk = clk;

Автор: olenka1808las 10.6.2013, 12:34
unsigned char SCLK_LAST_STATE = PORTA.AN1 // допустим это пин клок
// сохраняем состояние клока
...
 if (SCLK_LAST_STATE == 0 && PORTA.AN1 == 1)
...
SCLK_LAST_STATE = PORTA.AN1; // опять сохраняем состояние клока

это получается то же самое?

Автор: olenka1808las 10.6.2013, 13:42
bsa, oldClk ^ clk, извините за глупый вопрос, но что означает  знак ^  Я такого еще не встречала...

Автор: bsa 10.6.2013, 17:30
olenka1808las, побитовая операция XOR - "исключающая ИЛИ":
Код
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0


Добавлено через 5 минут и 57 секунд
Цитата(olenka1808las @  10.6.2013,  13:34 Найти цитируемый пост)
это получается то же самое? 
Да. Но на твоем бы месте, я значение PORTA (если это чтение порта) сохранял бы во временную переменную, а не читал бы 3 раза. На мой взгляд, это бы позволило сэкономить пару байт кода.

Автор: olenka1808las 11.6.2013, 03:21
Цитата(bsa @ 10.6.2013,  17:30)


Добавлено @ 17:36
Цитата(olenka1808las @  10.6.2013,  13:34 Найти цитируемый пост)
это получается то же самое? 
Да. Но на твоем бы месте, я значение PORTA (если это чтение порта) сохранял бы во временную переменную, а не читал бы 3 раза. На мой взгляд, это бы позволило сэкономить пару байт кода.

я не особо разбираюсь во всем этом,и тот код не сама написала,и то что вы сказали не поняла...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)