atgfpeyv 发表于 2010-10-18 11:45:38

我用ATMEGA16仿照51写的DS12CR887的时钟芯片驱动程序,为何读不出数来?大家帮我分析一

DS12CR887: CS片选信号13-PC7AS地址选通输入14-PC6WR读/写输入15-PC5DS数据选通写或读输入17-PC4并行数据口-PA

#include<avr/io.h>
void delay(unsigned int z);//1MS延时子函数
void mcu_init();//ATMEGA16初始化函数
void write_ds(unsigned char add,unsigned char date);//DS12CR887数据读取写入
unsigned char read_ds(unsigned char add);//DS12CR887数据读取

int main(void)
{
        mcu_init();//ATMEGA16初始化函数
        write_ds(0x0A,0x20);//开启内部振荡,速度选择为0000
        write_ds(0x0B,0x2e);//二进制格式,24小时制,方波使能,闹钟

        while(1)
        {
             HC_595_input(table);//读取秒

        }
}       

void delay(unsigned int z)//1MS延时子函数
{
        unsigned int x,y;
        for(x=z;x>0;x--)
                for(y=890;y>0;y--);
}
void mcu_init()//ATMEGA16初始化函数
{
        DDRA=0XFF;//定义PA口为输出
        PORTA=0XFF;//PA口上拉
        DDRB=0XFF;//定义PB口为输出
        DDRC=0XFF;//定义PC口为输出

}
void write_ds(unsigned char add,unsigned char date)//DS12CR887数据写入
{
        PORTC|=(1<<PC6);//地址选通输入14置为高电平
        PORTC|=(1<<PC4);//数据选通或读输入17置为高电平
        PORTC|=(1<<PC5);//读/写输入15置为高电平
        PORTC&=~(1<<PC7);//片选信号13置为低电平
        PORTA=add;
        delay(1);
        PORTC&=~(1<<PC6);//地址选通输入14置为低电平
        PORTC&=~(1<<PC5);//读/写输入15置为低电平
        PORTA=date;
        delay(1);
        PORTC|=(1<<PC5);//读/写输入15置为高电平
        PORTC|=(1<<PC6);//地址选通输入14置为高电平
        PORTC|=(1<<PC7);//片选信号13置为高电平       
}

unsigned char read_ds(unsigned char add)//DS12CR887数据读取
{
        unsigned char date;
        PORTC|=(1<<PC6);//地址选通输入14置为高电平
        PORTC|=(1<<PC4);//数据选通或读输入17置为高电平
        PORTC|=(1<<PC5);//读/写输入15置为高电平
        PORTC&=~(1<<PC7);//片选信号13置为低电平
        PORTA=add;
        delay(1);
        PORTC&=~(1<<PC6);//地址选通输入14置为低电平
        PORTC&=~(1<<PC4);//数据选通或读输入17置为低电平
        date=PORTA;
        delay(1);
        PORTC|=(1<<PC4);//数据选通或读输入17置为高电平
        PORTC|=(1<<PC6);//地址选通输入14置为高电平
        PORTC|=(1<<PC7);//片选信号13置为高电平
        return date;                       
}
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_590729AJATB2.png
(原文件名:QQ截图未命名.png)

http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_590730P65M7C.png
(原文件名:2.png)

yinqiu009 发表于 2010-10-18 11:49:02

12C887?停产了吧?不推荐使用。

machao 发表于 2010-10-18 14:54:58

建议你换铁电器件。这个12c887不要用了。

whzf 发表于 2011-1-21 11:25:19

回复【楼主位】atgfpeyv 董 董
-----------------------------------------------------------------------

楼主你的问题解决了吗?我现在也是遇到这问题,ds12cr887不工作,您是怎么解决的啊?

machao 发表于 2011-2-21 17:23:06

不建议使用ds12cr887,学习使用类似DS1302的RTC芯片。我的教课书中有例子。

提供你们新的方法了,为什么还要使用淘汰的DD?

wx96127 发表于 2013-4-30 01:32:03

楼上的那些建议换的人其实根本就是废话,楼主已经用了就肯定没想换啊
试试换个时钟芯片试试

wx96127 发表于 2013-4-30 01:32:35

换个新的ds12c887
页: [1]
查看完整版本: 我用ATMEGA16仿照51写的DS12CR887的时钟芯片驱动程序,为何读不出数来?大家帮我分析一