вот что получилось у меня:
#include <htc.h>
#include <stdio.h>
#include "usart.h"
#include "hard_config.h"
__CONFIG(HS & WDTDIS & PWRTEN & BOREN & LVPDIS & UNPROTECT );
#define DS_AS RC0
#define DS_WR RC1
#define DS_RD RC2
#define DS_Data PORTD
unsigned char ReadMemory (unsigned char Addr);
void WriteMemory (unsigned char Addr,unsigned char Data);
void ClockInit( void );
near unsigned char hours; //,minutes,seconds,day,mon,year,week,mem;
void main() // начало процедуры
{// установка начальных параметров
GIE = 0;init_comms();ClockInit();
//WriteMemory(0x02,0b00000000);
//hours=ReadMemory(0x02);
while(1) {
//hours=ReadClock(0x02); minutes=ReadClock(0x01); seconds=ReadClock(0x00);
//day=ReadClock(0x04); mon=ReadClock(0x05); year=ReadClock(0x06); week=ReadClock(0x03);
hours=ReadMemory(0x02);printf("\r\n=%d", hours);
DelayS(1);
//if (hours <10) printf("\r\n=0%d", hours); else printf("\r\n=%d", hours);
}// окончание бесконечного цикла
}// окончание процедуры
unsigned char ReadMemory (unsigned char Addr) { //читаем значение данных по адресу Addr
unsigned char temp = 0;
TRISD=0b00000000;
DS_RD=1;DS_WR=1;DS_AS=1;
DS_Data=Addr;
DS_AS=0;DelayUs(1);
DS_RD=0;DelayUs(1);
TRISD=0b11111111;
temp = DS_Data;
DS_RD=1;DS_AS=1;
return temp;}
void WriteMemory (unsigned char Addr, unsigned char Data ) {//записываем значение данных по адресу Addr
DS_RD=1;DS_WR=1;DS_AS=1;
TRISD=0b00000000;
DS_Data=Addr;DS_AS=0; DelayUs(1);
DS_Data=Data;DS_WR=0;DelayUs(1);
DS_WR=1;DS_AS=0;}
void ClockInit( void ){
TRISC0=0x00;TRISC1=0x00;TRISC2=0x00;PORTC=0;
WriteMemory (0x0A, 0b11110100 ); //Регистр А
WriteMemory (0x0B, 0b11111110 ); //Регистр В
}
архив проекта:
пробовал разные типы обмена моторола и интел, и с внешней процедурой и одной сишкой, выдает нули при чтении и часы стоят не меняют секунды, на настройки не отзываются.
Что я сделал не так?
PS Блин вообще тема специальная про часы есть, только увидел , может можно перенести туда