发新帖我要提问
12
返回列表
打印
[MCU]

读写问题

[复制链接]
楼主: jiaxw
手机看帖
扫描二维码
随时随地手机跟帖
21
happy_10| | 2020-12-9 21:15 | 只看该作者 回帖奖励 |倒序浏览
DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节

使用特权

评论回复
22
chenho| | 2020-12-9 21:18 | 只看该作者
源程序,你参考一下

使用特权

评论回复
23
wangzsa| | 2020-12-9 21:23 | 只看该作者
msp430f149模拟的吗?

使用特权

评论回复
24
supernan| | 2020-12-9 21:26 | 只看该作者
命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护

使用特权

评论回复
25
chenjunt| | 2020-12-9 21:34 | 只看该作者
读写有什么问题

使用特权

评论回复
26
guoyt| | 2020-12-9 21:38 | 只看该作者
楼主添加上拉电阻

使用特权

评论回复
27
zhanglli| | 2020-12-9 21:42 | 只看该作者
参考别人的代码吧

使用特权

评论回复
28
tian111| | 2020-12-9 21:46 | 只看该作者
这个程序的问题

使用特权

评论回复
29
dingy| | 2020-12-9 21:49 | 只看该作者
把原理图上传看看是什么问题

使用特权

评论回复
30
houcs| | 2020-12-9 21:56 | 只看该作者
可能IO配置有问题

使用特权

评论回复
31
morrisk| | 2020-12-9 21:59 | 只看该作者
#include"1302.h"

code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年 最低位读写位

code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};

void Write_Ds1302_Byte(unsigned char temp)

{

unsigned char i;

for (i=0;i<8;i++) //循环8次 写入数据

{

sclk=0;

io=temp&0x01; //每次传输低字节

temp>>=1; //右移一位

sclk=1;

}

}

/******************************************************************/

/* 写入DS1302 */

/******************************************************************/

void Write_Ds1302( unsigned char address,unsigned char dat )

{

rst=0;

_nop_();

sclk=0;

_nop_();

rst=1;

_nop_(); //启动

Write_Ds1302_Byte(address); //发送地址

Write_Ds1302_Byte(dat); //发送数据

rst=0; //恢复

}

/******************************************************************/

/* 读出DS1302数据 */

/******************************************************************/

unsigned char Read_Ds1302 ( unsigned char address )

{

unsigned char i,temp=0x00;

rst=1;

_nop_();

_nop_();

Write_Ds1302_Byte(address);

for (i=0;i<8;i++) //循环8次 读取数据

{

if(io)

temp|=0x80; //每次传输低字节

sclk=1;

temp>>=1; //右移一位

_nop_();

_nop_();

_nop_();

sclk=0;

}

rst=0;

_nop_(); //以下为DS1302复位的稳定时间

_nop_();

rst=0;

sclk=0;

_nop_();

_nop_();

_nop_();

_nop_();

/*sclk=1;

_nop_();

_nop_();

io=0;

_nop_();

_nop_();

io=1;

_nop_();

_nop_(); */

return (temp); //返回

}

/******************************************************************/

/* 读时钟数据 */

/******************************************************************/

uchar Read_RTC1(uchar j) //读取 日历

{

uchar c;

unsigned char *p;

p=&read_rtc_address[j]; //地址传递

c=Read_Ds1302(*p);

c=(( c&0x70)>>4)*10 + ( c&0x0F);

return(c);

}

/******************************************************************/

/* 设定时钟数据 */

/******************************************************************/

void Set_RTC(uchar a,uint c) //设定 日历

{

unsigned char *p ,shi,ge ;

Write_Ds1302(0x8E,0X00);

shi=a/10;

ge=a%10;

a=shi*16+ge;

p=&write_rtc_address[c]; //传地址

Write_Ds1302(*p,a) ;

// Write_Ds1302(0x8E,0x80);

} 、

这是头文件:

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit sclk=P1^2; //时钟

sbit io=P1^1; //数

sbit rst = P1^0;

void Set_RTC(uchar a,uint c);

uchar Read_RTC1(uchar j);

使用特权

评论回复
32
langgq| | 2020-12-9 22:04 | 只看该作者
21ic也有相关的代码。

使用特权

评论回复
33
jiaxw|  楼主 | 2020-12-9 22:08 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则