所以我目前正在尝试读取和写入 RTC 的时间,而这些方法将不起作用。
这就是我所拥有的:所以它发送地址字节以确定它想从哪里读取,然后将引脚翻转到输入并读取每个位,直到字节完成。
char ReadByte(char ByteToRead)
{
RB0 = 0; // ensure CLK low
RB5 = 1;
char received = 0;
int i;
for(i =0;i < 8 ;i++)
{
RB4 = ByteToRead & 1;
RB0 = 0;
ByteToRead >>= 1;
RB0 = 1;
}
TRISB4 = 1;//B4 = input port
for(i =0;i < 8 ;i++)
{
received |= RB4;
RB0 = 1;
received <<= 1;
RB0 = 0;
}
RB5=0;
TRISB4 = 0;
return DecimalToBCD(received);
}
第二个示例是我的 write 方法:
void WriteByte(char ClockReg ,char data)
{
RB0 = 0; // ensure CLK low
RB5 = 1; // raises RST bit
int i;
for(i =0;i < 8 ;i++)
{
RB4 = ClockReg & 1;
RB0 = 0;
ClockReg >>= 1;
RB0 = 1;
}
for(i =0;i < 8 ;i++)
{
RB4 = data & 1;
RB0 = 0;
data >>= 1;
RB0 = 1;
}
RB5 = 0;
__delay_us(1);
RB5 = 1;
}
这对于第一位确定寄存器写入您给它的值是相同的。
我可以在网上找到的唯一帮助是链接到一个 2 岁的页面,其中没有代码或帮助只是要求被 PMed 的人。所以请如果你能帮忙
提前致谢