подсобите обьяснением или пните куда надо. сам погулял в гугле и ничего суразного не попалось
мне бы понять что куда подать и как потом поданное получить
спасибо за любую помощ
Код: Выделить всё
...
#define DATA PORTD.2 //тут подставить
#define SHIFT PORTD.0 // свои
#define STORAGE PORTD.1 // значения
...
for(i=0; i<8 ; i++)
{ if (data3 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data3>>=1;
SHIFT=1;
SHIFT=0;
}
for(i=0; i<8 ; i++)
{ if (data2 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data2>>=1;
SHIFT=1;
SHIFT=0;
}
for(i=0; i<8 ; i++)
{ if (data1 & BIT(0) ) DATA=1; // выводим бит данных
else DATA=0;
data1>>=1;
SHIFT=1;
SHIFT=0;
}
STORAGE=1;
STORAGE=0;
Записать новое число с установленным битоми как нужно сделать если мне надо только установить один бит например 3-й а все оставить
я же Вам отправил код, проще некуда, на асм перевести совсем не трудно. главное знать что записывать в регистры сдвигакак сформировать последовательность дрыганий ногами чтобы в этом регистре был мой байт информации
не так. STORAGE дрыгаем когда "передернули" необходимое количество раз "SHIFT'ом" (обычно 8 для одного регистра). Если в момент дергания "SHIFT'ом" на DATA "1" то записывается 1 и наоборот. только потом дрыгаем "STORAGE" и на выходе регистра то что мы записалия так понял что надо подать постоянный меандр на shift
далее ставим на ноге data либо ноль либо единицу (смотря что нужно записать)
и дрыгаем "STORAGE"и этот ноль либо единица оказывается в нулевом бите регистра
внимательно посмотрите код, который я привел. неужели на асме было бы понятнее? там STORAGE всамом конце дергается после записи в три последовательно соединенных регистра. Собственно DATA-DS, SHIFT-SH_CP, STORAGE-ST_CP и /OE. MR на + питанияя так понял на линии ST_CP при записи битов должна быть постоянно единица и лиш после записи всего байта сбрасываем ST_CP в ноль и получаем появление наших разрядов на выходе регистра ?

Не мог никак определится с выбором реализации. Видел подключение как в первом варианте (управление 4-ным. 7-ным индикатором).kalobyte писал(а):второй
только индикатор у тебя будет работать, если на нем будет 60гц переменки
а это прога будет большая и сложная
вход ое лучше использовать как шим для регулировки яркости светодиодов
Код: Выделить всё
ISR(TIMER1_COMPA_vect)
{
Port_Data^=1<<com; // инверсия общего вывода дисплея
disp1 = ~disp1; // инверсия даных которие отображаються
disp2 = ~disp2;
disp3 = ~disp3;
send_74hc595(disp1);
send_74hc595(disp2);
send_74hc595(disp3);
Port_Data|=1<<strob; // запись данных в регистр (вывод на дисплей)
asm("nop");
Port_Data&=~(1<<strob);
}