最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

DS1302程序

来源:动视网 责编:小OO 时间:2025-09-28 20:55:00
文档

DS1302程序

实时时钟DS1302读写程序(C51)//打开DS1302voidTimeSpiOpen(void){ TIMECLK=0; TIMERST=0;//禁止DS1302 TIMEIO =1;//释放数据总线 TIMERST=1;//使能DS1302}//关闭DS1302voidTimeSpiClose(void){ TIMERST=0;//禁止DS1302 TIMEIO =1;//释放数据总线 TIMECLK=1;}//读写DS1302unsignedcharTimeSpiReadWrite(u
推荐度:
导读实时时钟DS1302读写程序(C51)//打开DS1302voidTimeSpiOpen(void){ TIMECLK=0; TIMERST=0;//禁止DS1302 TIMEIO =1;//释放数据总线 TIMERST=1;//使能DS1302}//关闭DS1302voidTimeSpiClose(void){ TIMERST=0;//禁止DS1302 TIMEIO =1;//释放数据总线 TIMECLK=1;}//读写DS1302unsignedcharTimeSpiReadWrite(u

实时时钟DS1302读写程序(C51)

//打开DS1302

void TimeSpiOpen(void)

{

  TIMECLK = 0;

  TIMERST = 0;//禁止DS1302

  TIMEIO  = 1;//释放数据总线

  TIMERST = 1;//使能DS1302

}

//关闭DS1302

void TimeSpiClose(void)

{

  TIMERST = 0;//禁止DS1302

  TIMEIO  = 1;//释放数据总线

  TIMECLK = 1;

}

//读写DS1302

unsigned char TimeSpiReadWrite(unsigned char val)

{

unsigned char i;

  ACC = val;//取8位数据

  for (i = 8;i > 0; i--)

  {

    TIMECLK = 0;//时钟下降沿输入数据(DS1302读)

    _nop_();//延时

    CY = TIMEIO;//接收串行数据到CY

    _rrca_();//右移一位数据到CY(先存后取)

    TIMEIO = CY;//发送串行数据

    TIMECLK = 1;//时钟上升沿打入数据(DS1302写)

    TIMEIO  = 1;//释放数据总线

  }

  val = ACC;

  return val;

}

//读DS1302字节

unsigned char TimeByteRead(unsigned char address)

{

  TimeSpiOpen();//打开DS1302

  TimeSpiReadWrite(address);//写入DS1302命令

  address = TimeSpiReadWrite(0xff);//读入DS1302数据

  TimeSpiClose();//关闭DS1302

  return address;//返回数据

}

//读DS1302RAM字节

unsigned char TimeRamByteRead(unsigned char address)

{

  TimeSpiOpen();//打开DS1302

  TimeSpiReadWrite((address << 1) | 0xc1);//写入DS1302命令

  address = TimeSpiReadWrite(0xff);//读入DS1302数据

  TimeSpiClose();//关闭DS1302

  return address;//返回数据

}

//写DS1302字节

void TimeByteWrite(unsigned char address, unsigned char val)

{

  TimeSpiOpen();//打开DS1302

  TimeSpiReadWrite(address);//写地址

  TimeSpiReadWrite(val);//写数据

  TimeSpiClose();//关闭DS1302

}

//写DS1302字节

void TimeRamByteWrite(unsigned char address, unsigned char val)

{

  TimeSpiOpen();//打开DS1302

  TimeSpiReadWrite((address << 1) | 0xc0);//写地址

  TimeSpiReadWrite(val);//写数据

  TimeSpiClose();//关闭DS1302

}

//使能DS1302写保护

void TimeWriteEnable(void)

{

  TimeByteWrite(timewriteregall, timewriteseg);//使能DS1302写保护

}

//开放DS1302写保护

void TimeWrieDisbale(void)

{

  TimeByteWrite(timewriteregall, 0);//开放DS1302写保护

}

//DS1302工作开始

void TimeWorkStart(void)

{

unsigned char val;

  val = TimeByteRead(timereadseg);//读秒数据

  val &= 0x7f;//打开晶振

  TimeWrieDisbale();//开放DS1302写保护

  TimeByteWrite(timewriteseg, val);//打开晶振

  TimeByteWrite(tricklewrite, 0xa5);//打开充电二极管

  TimeWriteEnable();//使能DS1302写保护

}

文档

DS1302程序

实时时钟DS1302读写程序(C51)//打开DS1302voidTimeSpiOpen(void){ TIMECLK=0; TIMERST=0;//禁止DS1302 TIMEIO =1;//释放数据总线 TIMERST=1;//使能DS1302}//关闭DS1302voidTimeSpiClose(void){ TIMERST=0;//禁止DS1302 TIMEIO =1;//释放数据总线 TIMECLK=1;}//读写DS1302unsignedcharTimeSpiReadWrite(u
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top