下载此文档

DS1302读写程序.doc


文档分类:通信/电子 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
/*
日期:2010年10月10日
文件名:DS1302功能:第三步,实现单片机对DS1302的读写,将时间信息显示在数码管上,断电后仍能正常计时
*/
unsigned char rec_time[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};//定义一个数组存储秒,分,时,日,月,周,年
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数码管的0~9的段码
//对DS1320的三个和单片机的接口进行字符常量定义
#define  SCLK  PORTC0_bit
#define  IO    PORTC1_bit
#define  RST   PORTC2_bit
//初始化和DS1302连接的三个端口
void ds1302_init()
{
  DDRC|=0x07; //设置PC0,1,2为输出
  SCLK=0;  //设置SCLK初始值为0
  IO=1;   // 设置IO初始值为1
  RST=0;  //设置RST初始值为0
}
//写入一个字节
void ds1302_write_byte(unsigned char dat)
{
  unsigned char i;
  for(i=0;i<8;i++)
  {
    SCLK=0;  //时钟信号拉低
    if(dat&0x01)
       IO=1;  //判断地址字节的最低位,1位为1则拉高IO
    else  IO=0; //1位为0,则输入数据为0,拉低IO
    delay_us(1);
    SCLK=1; //时钟信号拉高,产生上升沿
    delay_us(1);
    dat>>=1;  //字节右移一位
  }
}
//读出一个字节
unsigned char ds1302_read_byte()
{
  unsigned char i, dat=0;
  DDC1_bit=0;  //设置IO的方向为输入
  PORTC1_bit=0;  //设置IO为高阻态
  for(i=0;i<8;i++)
  {
    dat>>=1; //数据右移一位
    SCLK=1; //设置SCLK为高电平
    delay_us(1);
    SCLK=0;  //设置SCLK为低电平,产生下降沿
    delay_us(1);
    if(PINC1_bit==1)  //如果读出的数据为1
      dat|=0x80;     //数据位1,则写入1
  }
  DDC1_bit=1; //将IO口的方向改为输出
  return dat; //返回得到的数据
}
//向DS1302写入一个地址和数据
void ds1302_write(unsigned char add,unsigned char dat)
{
  RST=0;    //将RST拉低
  SCLK=0;   //将SCLK拉低
  RST=1;    //将RST拉高
  ds1302_write_by

DS1302读写程序 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小31 KB
  • 时间2018-04-28