搜索
bottom↓
回复: 6

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

[复制链接]

出0入0汤圆

发表于 2010-10-18 11:45:38 | 显示全部楼层 |阅读模式
DS12CR887: CS片选信号13-PC7  AS地址选通输入14-PC6  WR读/写输入15-PC5  DS数据选通写或读输入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[read_ds(0)%10]);//读取秒

        }
}       

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;                       
}

(原文件名:QQ截图未命名.png)


(原文件名:2.png)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-10-18 11:49:02 | 显示全部楼层
12C887?停产了吧?不推荐使用。

出0入0汤圆

发表于 2010-10-18 14:54:58 | 显示全部楼层
建议你换铁电器件。这个12c887不要用了。

出0入0汤圆

发表于 2011-1-21 11:25:19 | 显示全部楼层
回复【楼主位】atgfpeyv 董 董
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-2-21 17:23:06 | 显示全部楼层
不建议使用ds12cr887,学习使用类似DS1302的RTC芯片。我的教课书中有例子。

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

出0入0汤圆

发表于 2013-4-30 01:32:03 | 显示全部楼层
楼上的那些建议换的人其实根本就是废话,楼主已经用了就肯定没想换啊
试试换个时钟芯片试试

出0入0汤圆

发表于 2013-4-30 01:32:35 | 显示全部楼层
换个新的ds12c887
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 05:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表