- Код: Выделить всё • Развернуть
void WriteDS_Sec (unsigned char sec) // При вызове функции в переменную сек пишу 135
{
char adrDS=129; // адрес для записи секунд
char b=0;
char indexDS;
PORTA.3=1; // 1 на ногу подключенную к ресет
delay_us(10);
indexDS=adrDS;
for(b=0;b<8;b++){ // тут я передаю адрес
if(indexDS&0x80){
PORTA.2=1;}
else{
PORTA.2=0;} // PORTA.2 подключено в дата
delay_us(10);
PORTA.1=1; // PORTA.1 подключено к CLk
delay_us(10);
PORTA.1=0;
indexDS=indexDS<<1;}
b=0;
delay_us(20);
indexDS=sec1;
for(b=0;b<8;b++){ // тут передаю начальный счет секунд
if(indexDS&0x80){
PORTA.2=1;}
else{
PORTA.2=0;}
delay_us(10);
PORTA.1=1;
delay_us(10);
PORTA.1=0;
indexDS=indexDS<<1;}
delay_us(10);
PORTA.2=0;
PORTA.3=0;
}
В протеусе в настройках DS1302 убираю галочку автоматической инициализации, запускаю и часы начинают тикать с 00-00-00, я понимаю что протеус может глючить у меня есть отладочная плата с этими часами но прежде чем написать функцию чтения данных из часиков мне надо понять правильно я написал запись значения.
Помогите разобраться по осцилу протеуса вроде сигналы сходятся как в даташите.