找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1938|回复: 2
打印 上一主题 下一主题
收起左侧

关于DS1302的小问题

[复制链接]
跳转到指定楼层
楼主
ID:153866 发表于 2016-12-11 12:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sbit ce1302=P3^5;
sbit scl1302=P3^6 ;
sbit io1302= P3^4;

uchar read_1302(uchar com)
{
        uchar temp=0x00,dat;
        scl1302=0;
        _nop_();
        ce1302=1;
        _nop_();
        for(i=0;i<7;i++)
        {
                io1302=com&0x01;
                com=com>>1;
                scl1302=1;
                _nop_();
                scl1302=0;
                _nop_();
        }          _nop_();
        for(i=0;i<7;i++)
        {
                dat=io1302;
                dat=dat<<7;
                temp=(temp>>1)|dat;
                scl1302=1;
                _nop_();
                scl1302=0;
                _nop_();

        }
        ce1302=0;
        _nop_();
        scl1302=1;
        _nop_();
        io1302=0;
        _nop_();
        io1302=1;
        _nop_();
        return temp;
}

void write_1302(uchar com,uchar dat)
{
        uchar temp;
        scl1302=0;
        _nop_();
        ce1302=1;
        _nop_();
        for(i=0;i<7;i++)
        {
                io1302=com&0x01;
                com=com>>1;
                scl1302=1;
                _nop_();
                scl1302=0;
                _nop_();
        }
        for(i=0;i<7;i++)
        {
                io1302=dat&0x01;
                dat=dat>>1;
                scl1302=1;
                _nop_();
                scl1302=0;
                _nop_();       
        }
        ce1302=0;
        _nop_();
               
}

uchar bcd_h(uchar dat)
{
        uchar dat1;
        dat1=dat>>4;
        return(dat1*10+(dat&0x0F));               
}

void init_1302()
{
        ce1302=0;
        scl1302=0;
        write_1302(0x8e,0x00);
        write_1302(0x84,0x00);
        write_1302(0x82,0x00);
        write_1302(0x80,0x00);
        write_1302(0x86,0x01);
        write_1302(0x88,0x01);
        write_1302(0x8a,0x01);
        write_1302(0x8c,0x12);
//        write_1302(0x8e,0x80); //打开写保护       
}                                        //2010-01-07,12:00:00


void duqu()
{
        shi=bcd_h(read_1302(0x85));
        fen=bcd_h(read_1302(0x83));
        miao=bcd_h(read_1302(0x81));
        write_sfm(4,shi);
        write_sfm(7,fen);
        write_sfm(10,miao);       
}






void main()
{
        init();
        init_1302();
        while(1)
        {
                keyscan();
                duqu();
       
        }
}
这一段加载到普中科技的学习版上不会

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:153866 发表于 2016-12-11 12:40 | 只看该作者
不会正常跳动
回复

使用道具 举报

板凳
ID:127881 发表于 2016-12-21 14:42 | 只看该作者
看看你的芯片型号,如果是DS1302N,可能你的程序是DS1302的,我今天也遇到这个问题,似乎程序不通用,时钟不会走。换成DS1302就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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