Цитата
светятся два диода 2 на 1 регистре и 1 на второмю
Значит программа правильно работает. Мы ведь пишем во второй регистр
r_w((unsigned char)(i>>8));// 0x01=0b0000_0001 - то есть должен гореть 1 диод (по схеме 2-й снизу)
и в 1-й регистр - sr_w((unsigned char)(i));// 0x02 =0b0000_0010 - еще 1 диод(2-й сверху).
Уточни, что ты конкретно хочешь получить на выходе в зависимости от входных данных?
Данная программа и схема выводит на выходы НС595 16-битное значение "i" в двоичном коде.
(младший байт - на верхний регистр и старший на нижний).
Для того, чтобы засветить все светодиоды, нужно переменной "i" присвоить значение
i = 0x3FF (т.е в двоичном коде 0b_0000_0011_1111_1111 или в десятичном 1023).
Кстати, для данной схемы 1й вариант (где в процедуру передается беззнаковое 16-битное) предпочтительней,
так как в основной программе не нужно заботиться о подаче строба перезаписи.
Сообщение отредактировал Александр Куличок - May 12 2007, 18:31