大神们,有没有PIC18单片机读写ds1302d的程序
本帖最后由 pzsh 于 2021-12-14 14:34 编辑大神们,有没有PIC18单片机读写ds1302d的程序
我在网上找的的读写程序读不到初始化时间
谢谢 uchar shijian;
uchards[]={50,59,23,10,10,1,16};
//向DS1302写数据
void Write_Ds1302_Byte(unsignedchar temp)
{
unsigned char i;
for (i=0;i<8;i++)
{
SCK=0;
SDA=temp&0x01;
temp>>=1;
SCK=1;
}
}
//读取DS1302指定地址中的数据
unsigned char Read_Ds1302 ( unsigned char address )
{
unsigned char i,temp=0x00;
uchar dat_low,dat_high;
RST=0;
NOP();
SCK=0;
NOP();
RST=1;
NOP();
Write_Ds1302_Byte(address);
for (i=0;i<8;i++)
{
SCK=0;
temp>>=1;
if(SDA)
temp|=0x80;
SCK=1;
}
RST=0;
NOP();
RST=0;
SCK=0;
NOP();
SCK=1;
NOP();
SDA=0;
NOP();
SDA=1;
NOP();
dat_high=temp/16;
dat_low=temp%16;
temp=dat_high*10+dat_low;
return (temp);
}
//向DS1302写地址和数据
void Write_Ds1302( unsigned char address,unsigned char dat )
{
uchar num;
RST=0;
NOP();
SCK=0;
NOP();
RST=1;
NOP();
Write_Ds1302_Byte(address);
num=(dat/10<<4)|(dat%10);
Write_Ds1302_Byte(num);
RST=0;
}
//将数据存储到指定数组中
void Read_Time()
{
uchar i;
uchar add=0x81;
Write_Ds1302(0x8e,0x00);
for(i=0;i<7;i++)
{
shijian=Read_Ds1302(add);
add=add+2;
}
Write_Ds1302(0x8e,0x80);
}
void DSInit()
{
uchar i;
uchar add=0x80;
Write_Ds1302(0x8e,0x00);
for(i=0;i<7;i++)
{
Write_Ds1302(add,ds);
add=add+2;
}
Write_Ds1302(0x8e,0x80);
}
main()
{
while(1){
Read_Time();
fen.DAT=shijian;
shi.DAT=shijian;
DisplayMainPage(1);//LCD液晶屏显示
CLRWDT();}
以上代码是DS1302读写程序
但是我在主函数读取不到数据,main函数我是简写,不用太关注main函数 您可以用逻辑分析仪或者示波器观察一下I2C的时序,要将时序调整到允许的范围才行。 hu9jj 发表于 2021-12-13 18:28
您可以用逻辑分析仪或者示波器观察一下I2C的时序,要将时序调整到允许的范围才行。 ...
这两样都没有
我想问一下,用把IO口在设置成输入或输出口 网友发布过的:https://bbs.21ic.com/icview-2827856-1-1.html我也没有验证过还 橘子阿小 发表于 2021-12-14 08:36
这两样都没有
我想问一下,用把IO口在设置成输入或输出口
数据端口肯定是要按照需要动态地设置成输入(读操作)或输出(写操作)。
尽管DS1302的I2C操作对时序要求不高,但也不能相差太大,否则就无法正确传输数据,除非您使用硬件I2C操作。所以在业余条件下,至少需要配置一个逻辑分析仪,网上有30元左右的逻辑分析仪,类似优盘大小,抓取数据在电脑上显示,建议配置一个。 问题已解决 橘子阿小 发表于 2021-12-14 15:25
问题已解决
请分享解决之道 这个需要什么方式进行读取呢 应该按照手册的时序要求来吧 请问楼主如何解决的问题啊 这是什么通讯方式啊 楼主分享一下吧 单线通信而已
DS1302初始化和读取的程序? 有PIC单片机都是通用的吧。 把延时整一整就行了。 https://wenku.baidu.com/view/5e8565116c175f0e7cd1370c.html 使用的是多大的晶振呢 说明时序有问题。
页:
[1]
2