hackerzw 发表于 2010-11-2 21:13:37

Mega16模拟方式读写DS12C887出问题了。老是读到地址,时钟也不走。怎么去处理?

我用的是Atmega16,始终读不到正确的值!

听说是A寄存器没有启动,但是我将A寄存器设为0x20还是不行啊。


这个是读写时序,I/O口没有弄错
void DS_Write(char addr,char data)//写时序,intel方式
{
        DS_DB_OUT;
        DS_DS_H;
        DS_RW_H;
        DS_AS_H;
        DS_DB=addr;
        DS_AS_L;
        DS_RW_L;
        DS_DB=data;
        DS_RW_H;
        DS_AS_H;
        DS_CS_H;
}

char DS_Read(char addr)//读时序,intel方式
{
        char sz;
        DS_DB_OUT;
        DS_DS_H;
        DS_RW_H;
        DS_AS_H;
        DS_CS_L;
        DS_DB=addr;
        DS_AS_L;
        DS_DS_L;
        _delay_ms(10);
        DS_DB_IN;
        sz=PINA;
        DS_DS_H;
        DS_AS_H;
        DS_CS_H;
        return sz;
}

附上主程序部分代码:

                DS_Write(0x0A,0x20);
                DS_Write(0,ss);//秒
                DS_Write(1,0);
                DS_Write(2,mm);//分
                DS_Write(3,0);
                DS_Write(4,hh);//小时
                DS_Write(5,0);
                DS_Write(6,0);
                DS_Write(0x09,YYYY);//年
                DS_Write(0x08,MM);    //月
                DS_Write(0x07,DD);    //日
                DS_Write(0x0A,0x20);*/
        while(1)
        {       
                ss=DS_Read(0);
                mm=DS_Read(2);
                hh=DS_Read(4);
            //后面省略了.....

读出来的时间结果是:04:02:00,分别对应相应的寄存器地址。是不是时序错了?附上时序图
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_594722IF1B0R.GIF
(原文件名:读.GIF)

http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_594723JBNTQ9.GIF
(原文件名:写.GIF)

whzf 发表于 2011-1-21 15:46:19

回复【楼主位】hackerzw
-----------------------------------------------------------------------

我今天在搞就出现你这问题,一模一样的,你的现在解决了吗?请教您指点一下

lshhcumt 发表于 2011-2-9 21:55:35

楼主,问题怎么解决的?是不是atmega单片机不兼容Intel总线格式?

hzrobin 发表于 2012-7-13 22:10:45

怎么我也是读出的是地址呀,怎么都不说到底是什么问题呀?太监贴呼呼开玩笑昂

Yangyang_hhu 发表于 2012-8-31 23:59:54

我也是啊

Yangyang_hhu 发表于 2012-9-1 00:00:17

有大神相助吗
页: [1]
查看完整版本: Mega16模拟方式读写DS12C887出问题了。老是读到地址,时钟也不走。怎么去处理?