そのため、現在 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);
}
2 番目のサンプルは、私の書き込み方法です。
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 年前のページへのリンクか、PM を求めている人だけのヘルプです。では、お役に立てることがあればお願いします
前もって感謝します