求助RX8025T无ACK应答信号(有逻辑分析图)

2020-01-13 18:23发布

只是写了一 个简单的测试程序,上电就直接读取时间,程序如下:
void start(void)
{
        sda=1;
        Delay_us(10);
        scl=1;
        Delay_us(10);
        sda=0;
        Delay_us(10);
}

void stop(void)
{
        sda=0;
        Delay_us(10);
        scl=1;
        Delay_us(10);
        sda=1;
        Delay_us(10);
}

void ack(void)
{
        unsigned char i=200;
        scl=1;
        Delay_us(10);
        while ((sda==1)&&(i>0))i--;
        scl=0;
        Delay_us(10);
}

void iicinit(void)
{
        sda=1;
        scl=1;
}

void iicwr_byte(unsigned char dat)
{
        unsigned char i;
        scl=0;
        for(i=0;i<8;i++)
        {
                if(dat&0x80)
                {
                        sda=1;
                }
                else
                {
                        sda=0;
                }
                dat=dat<<1;
                Delay_us(10);
                scl=1;
                Delay_us(10);
                scl=0;
                Delay_us(10);
        }
}
void READ_TIM(void)
{
        start();                   //1
        iicwr_byte(0x64);  //2
        ack();                           //3
        iicwr_byte(0x00);  //4
        ack();                           //5
        start();                   //6
        iicwr_byte(0x65);  //7
        ack();                           //8
        TIM_Second=iicre_byte();//9 读秒
        ack();                                 //10
        TIM_Minute=iicre_byte();//9 读分钟
        ack();                                 //10
        TIM_Hour=iicre_byte();//9 读小时
        ack();                                 //10
        stop();                                 //13
}

出来的实际波形图:
1111111.png (124.25 KB, 下载次数: 0) 下载附件 2019-5-8 03:27 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。