打印
[开发工具]

【新定义MCU开发板测评】移植DS1302

[复制链接]
937|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51xlf|  楼主 | 2022-12-3 20:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
之前使用易码魔盒测试了移植DS1302,效果还可以的。既然已经连接好了模块了,还是看看直接IO口驱动DS1302。这里移植的是51单片机的测试代码,看看51代码和新定义代码兼容性怎么样?

还是在之前的生成的工程文件上进行测试。
就是把生成的DS1302文件删除掉。加入要使用的DS1302库文件。
首先是要配置IO口为输出。
使用宏定义配置三个口。
#define  RST P53 
#define  SCLK P55
#define  DSIO P54
在Ds1302Init加入初始化IO口。
 GPIO_Init(GPIO5, GPIO_PIN_4,GPIO_MODE_OUT_PP);
        GPIO_Init(GPIO5, GPIO_PIN_5,GPIO_MODE_OUT_PP);
        GPIO_Init(GPIO5, GPIO_PIN_3,GPIO_MODE_OUT_PP);
跟51代码不一样的地方,就是需要配置IO为输出或者输入。赋值的时候还是跟51一样的。
这个是写入数据的时候。
void  Ds1302Write(uchar addr,uchar dat)
{   uint n;
    GPIO_Init(GPIO5, GPIO_PIN_4,GPIO_MODE_OUT_PP);

    RST=0;
    _nop_();
    _nop_();
    _nop_();
    SCLK=0;
    RST=1;
    _nop_();
    _nop_();
    _nop_();
    for(n=0; n<8; n++)
    {
        DSIO=addr&0x01;
        addr>>=1;
        SCLK=1;
        _nop_();
        _nop_();
        _nop_();
        SCLK=0;
        _nop_();
        _nop_();
        _nop_();

    }
    for(n=0; n<8; n++)
    {
        DSIO=dat&0x01;
        dat>>=1;
        SCLK=1;
        _nop_();
        _nop_();
        _nop_();
        SCLK=0;
        _nop_();
        _nop_();
        _nop_();
    }
    RST=0;
    _nop_();
    _nop_();
    _nop_();
}
这是读取数据的时候。需要配置IO为输入。
uchar  Ds1302Read(uchar addr)
{
    uchar dat,dat1,i;
    RST=0;
    _nop_();
    SCLK=0;
    _nop_();
    RST=1;
    _nop_();
    for(i=0; i<8; i++)
    {
        DSIO=addr&0x01;
        addr>>=1;
        SCLK=1;
        _nop_();
        SCLK=0;
        _nop_();
    }
    GPIO_Init(GPIO5, GPIO_PIN_4,GPIO_MODE_IN_PU);
    for(i=0; i<8; i++)
    {
        dat1=DSIO;
        dat=(dat>>1)|(dat1<<7);
        SCLK=1;
        _nop_();
        SCLK=0;
        _nop_();
    }
    GPIO_Init(GPIO5, GPIO_PIN_4,GPIO_MODE_OUT_PP);
    RST=0;                //复位稳定程序
    _nop_();
    SCLK = 1;
    _nop_();
    DSIO = 0;
    _nop_();
    DSIO = 1;
    _nop_();
    return dat;

}
这个还是使用的串口输出时间。

Ds1302ReadTime();

                                send_one(TIME[2]/16+'0');
                                send_one(TIME[2]%16+'0');
                                send_one(':');
                                send_one(TIME[1]/16+'0');
                                send_one(TIME[1]%16+'0');
                                send_one(':');
                                send_one(TIME[0]/16+'0');
                                send_one(TIME[0]%16+'0');
                                send_one('\r');
                                send_one('\n');
                                delay(500);
看看效果的。

这个附上源代码
User.rar (1.38 KB)

使用特权

评论回复
沙发
jtracy3| | 2022-12-14 10:30 | 只看该作者
DS1302的精度怎么样              

使用特权

评论回复
板凳
mikewalpole| | 2022-12-14 11:11 | 只看该作者
这个没有RTC的功能吗?              

使用特权

评论回复
地板
burgessmaggie| | 2023-1-5 13:09 | 只看该作者
怎么没有打开写中断呢?              

使用特权

评论回复
5
janewood| | 2023-1-5 14:18 | 只看该作者
感觉开发8位单片机也好麻烦了。              

使用特权

评论回复
6
jtracy3| | 2023-1-5 14:37 | 只看该作者
这个直接使用51代码。              

使用特权

评论回复
7
primojones| | 2023-1-5 16:24 | 只看该作者
这个不错,学习一下了。              

使用特权

评论回复
8
iyoum| | 2023-1-5 17:17 | 只看该作者
51单片机不是不需要配置输入或者输出的吗

使用特权

评论回复
9
vivilyly| | 2023-1-6 12:15 | 只看该作者
这个代码兼容性怎么样?              

使用特权

评论回复
10
yeates333| | 2023-1-6 12:47 | 只看该作者
ds1302比不上内部RTC吗?

使用特权

评论回复
11
saservice| | 2023-1-7 17:14 | 只看该作者
这个芯片什么时候自带RTC呢              

使用特权

评论回复
12
mmbs| | 2023-1-9 09:35 | 只看该作者
新定义的芯片性能怎么样              

使用特权

评论回复
13
sanfuzi| | 2023-1-9 10:04 | 只看该作者
可以使用DS1302做一个闹钟吗?

使用特权

评论回复
14
kkzz| | 2023-1-9 12:01 | 只看该作者
这个开发板可以jtag下载吗?              

使用特权

评论回复
15
houjiakai| | 2023-1-9 15:32 | 只看该作者
DS1302的时间误差是多少?              

使用特权

评论回复
16
jonas222| | 2023-1-9 16:04 | 只看该作者
性能怎么样              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

535

主题

9591

帖子

23

粉丝