找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助] 在Proteus下仿真DS1302时,为什么烧不进去数据啊?

[复制链接]
跳转到指定楼层
楼主
ID:16820 发表于 2009-9-19 15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下:

#include<reg52.h>
#include"1602.h"
#define uchar unsigned char
sbit RST=P3^4;
sbit SCLK=P3^2;
sbit IO=P3^3;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
uchar year,month,day,hour,min,sec;
 void delay(unsigned int n)  
{ unsigned int x,y;
    for(x=n;x>0;x--)
 for(y=110;y>0;y--)
 ;  
}
void inputbyte(uchar uc)
{
   uchar i;
   ACC=uc;
   for(i=8;i>0;i++)
   {
 IO=ACC0;
 TCLK=0;
 TCLK=1;
    ACC=ACC>>1;
   }
}
uchar outputbyte(void)
{
 uchar i;
 for(i=8;i>0;i++)
 {
  ACC=ACC>>1;
  ACC7=IO;
  TCLK=1;
  TCLK=0;
 }
 return(ACC);
}
void w1302(uchar add,uchar uc)
{
 RST=0;
 TCLK=0;
 RST=1;
 inputbyte(add);
 inputbyte(uc);
 TCLK=1;
 RST=0;
}
uchar r1302(uchar add)
{
    uchar uc;
 RST=0;
 TCLK=0;
 RST=1;
 inputbyte(add);
 uc=outputbyte();
 TCLK=1;
 RST=0;
 return(uc);
}
void burstw1302(uchar *psec)
{
 uchar i;
 w1302(0x8e,0x00);
 RST=0;
 TCLK=0;
 RST=1;
 inputbyte(0xbe);
 for(i=8;i>0;i--)
 {
  inputbyte(*psec);
  psec++;
 }
 TCLK=1;
 RST=0;
}
void burstr1302(uchar *psec)
{
 uchar i;
 RST=0;
 SCLK=0;
 RST=1;
 inputbyte(0xbf);
 for(i=8;i>0;i--)
 {
  *psec=outputbyte();
  psec++;
 }
 TCLK=1;
 RST=0;
}
void init1302(void)
{
 w1302(0x8e,0x00);
 w1302(0x90,0xa5);
 w1302(0x80,0x32);
 w1302(0x82,0x13);
 w1302(0x84,0x18);
 w1302(0x86,0x01);
 w1302(0x88,0x01);
 w1302(0x8a,0x01);
 w1302(0x8c,0x06);
 w1302(0x82,0x15);
 w1302(0x8e,0x80);
 

}
void main()
{
uchar i;
//init1302(); 
RW=0;
init();

 

delay(0x1000);
i=r1302(0x81);
write_data(i/16+0x30);
write_data(i%16+0x30);

while(1);
 }

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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