求1302做定时器的程序?如果能用,一定高分
我是实在急要,要不然一定要认真研究一下,我想要AVR的用DS1302做定时器,如300秒后让单片机停下。如果方便,可不可以给个办法怎样去读1302的秒位,我再在单片机里处...
我是实在急要,要不然一定要认真研究一下,
我想要AVR的用DS1302做定时器,如300秒后让单片机停下。
如果方便,可不可以给个办法怎样去读1302的秒位,我再在单片机里处理。
如果给个原理图更好了,呵呵,如果能用一定高分。
还有,我用的,DS1302发热好历害。是不是哪里接错了。
先谢谢了哦! 展开
我想要AVR的用DS1302做定时器,如300秒后让单片机停下。
如果方便,可不可以给个办法怎样去读1302的秒位,我再在单片机里处理。
如果给个原理图更好了,呵呵,如果能用一定高分。
还有,我用的,DS1302发热好历害。是不是哪里接错了。
先谢谢了哦! 展开
展开全部
先看电源
void write_timer(uchar,uchar);
void write_day(uchar,uchar);
void delay1()
{ ; ;}
void write_com(uchar add,uchar sj)
{
uchar con;
rst=1;
delay1();
for(con=0;con<16;con++)
{
if(con<8)
{
io=add&0x01;
delay1();
sclk=0;
delay1();
sclk=1;
add=add>>1;
}
else
{
io=sj&0x01;
delay1();
sclk=0;
delay1();
sclk=1;
sj=sj>>1;
}
}
delay1();
sclk=0;
rst=0;
}
uchar read_com(uchar add)
{
uchar con,key;
rst=1;
delay1();
for(con=0;con<15;con++)
{
if(con<8)
{
io=add&0x01;
delay1();
sclk=0;
delay1();
sclk=1;
add=add>>1;
}
else
{
sclk=0;
delay1();
CY=io;
delay1();
if(CY==1)
{
key=key|0x80;
}
key=key>>1;
sclk=1;
}
}
if(con==15)
{
sclk=0;
delay1();
CY=io;
delay1();
if(CY==1)
{
key=key|0x80;
}
sclk=1;
}
rst=0;
sclk=0;
return key;
}
/*void write_time1()
{
write_com(0x8e,0);
//delay1();
write_com(0x80,0x11);
//delay1();
write_com(0x82,0x10);
//delay1();
write_com(0x84,0x15);
//delay1();
write_com(0x86,0x07);
//delay1();
write_com(0x88,0x03);
//delay1();
write_com(0x8a,0x05);
//delay1();
write_com(0x8c,0x09);
//delay1();
write_com(0x8e,0x80);
} */
void read_time()
{
TR0=0;
second=read_com(0x81);
//delay1();
minute=read_com(0x83);
//delay1();
hour=read_com(0x85);
//delay1();
day=read_com(0x87);
//delay1();
month=read_com(0x89);
//delay1();
week=read_com(0x8b);
//delay1();
year=read_com(0x8d);
//delay1();
TR0=1;
}
你再修改下,能用的,注意1302的外围电路,有的要上拉的
void write_timer(uchar,uchar);
void write_day(uchar,uchar);
void delay1()
{ ; ;}
void write_com(uchar add,uchar sj)
{
uchar con;
rst=1;
delay1();
for(con=0;con<16;con++)
{
if(con<8)
{
io=add&0x01;
delay1();
sclk=0;
delay1();
sclk=1;
add=add>>1;
}
else
{
io=sj&0x01;
delay1();
sclk=0;
delay1();
sclk=1;
sj=sj>>1;
}
}
delay1();
sclk=0;
rst=0;
}
uchar read_com(uchar add)
{
uchar con,key;
rst=1;
delay1();
for(con=0;con<15;con++)
{
if(con<8)
{
io=add&0x01;
delay1();
sclk=0;
delay1();
sclk=1;
add=add>>1;
}
else
{
sclk=0;
delay1();
CY=io;
delay1();
if(CY==1)
{
key=key|0x80;
}
key=key>>1;
sclk=1;
}
}
if(con==15)
{
sclk=0;
delay1();
CY=io;
delay1();
if(CY==1)
{
key=key|0x80;
}
sclk=1;
}
rst=0;
sclk=0;
return key;
}
/*void write_time1()
{
write_com(0x8e,0);
//delay1();
write_com(0x80,0x11);
//delay1();
write_com(0x82,0x10);
//delay1();
write_com(0x84,0x15);
//delay1();
write_com(0x86,0x07);
//delay1();
write_com(0x88,0x03);
//delay1();
write_com(0x8a,0x05);
//delay1();
write_com(0x8c,0x09);
//delay1();
write_com(0x8e,0x80);
} */
void read_time()
{
TR0=0;
second=read_com(0x81);
//delay1();
minute=read_com(0x83);
//delay1();
hour=read_com(0x85);
//delay1();
day=read_com(0x87);
//delay1();
month=read_com(0x89);
//delay1();
week=read_com(0x8b);
//delay1();
year=read_com(0x8d);
//delay1();
TR0=1;
}
你再修改下,能用的,注意1302的外围电路,有的要上拉的
展开全部
DS1302如果连接正确的话是不会发热的,,
DS1302时钟芯片读写详解,,电路图在我空间(有C语言和汇编语言)
http://hi.baidu.com/dsu5566/blog/item/8f8a9e359205348da71e12de.html
http://hi.baidu.com/dsu5566
DS1302时钟芯片读写详解,,电路图在我空间(有C语言和汇编语言)
http://hi.baidu.com/dsu5566/blog/item/8f8a9e359205348da71e12de.html
http://hi.baidu.com/dsu5566
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在8脚和电池正之间反向串一个1N4148二极管
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询