DS1302 MSP430程序

技术分类: 嵌入式系统  | 2007-07-08
作者:just430


void DS1302_Delay(unsigned int dtime) {
 unsigned int temp;
 for(temp=0;temp}

//DS1302复位
void DS1302_Reset(void) {
 DS1302_DIR |= (DS1302_RST + DS1302_SCLK);
 DS1302_SCLK_LO;
 DS1302_RST_LO;
 DS1302_Delay(10);
 DS1302_SCLK_HI;
}

//向DS1302写入一个字节
void DS1302_WriteOneByte(unsigned char w_dat) {
 unsigned char temp;
 
 DS1302_RST_HI;
 DS1302_DIR |= DS1302_SDI;
 
 for(temp=8;temp>0;temp--) {
  DS1302_SDI_LO;
  if(w_dat&BIT0)

DS1302_SDI_HI;
  DS1302_SCLK_LO;
  DS1302_Delay(10);
  DS1302_SCLK_HI;
  DS1302_Delay(10);
  w_dat >>=1;
 }
}

//从DS1302中读取一个字节
unsigned char DS1302_ReadOneByte(void) {
 unsigned char temp,rdata;
 rdata = 0x00;
 
 DS1302_RST_HI;
 DS1302_DIR &= ~DS1302_SDI;
 
 for(temp=0;temp<7;temp++){
  DS1302_SCLK_HI;
  DS1302_Delay(10);
  DS1302_SCLK_LO;
  DS1302_Delay(10);
  if((DS1302_IN&DS1302_SDI)==DS1302_SDI)
   rdata |= BIT7;
  rdata >>= 1;
 }
 
 return(rdata);
}

//向DS1302中写入地址后写入数据
void DS1302_WriteData(unsigned char addr,unsigned char w_dat) {
 DS1302_RST_LO;
 DS1302_SCLK_LO;
 DS1302_RST_HI;
 
 DS1302_WriteOneByte(addr);  //写入地址
 DS1302_WriteOneByte(w_dat);  //写入数据
 
 DS1302_SCLK_HI;
 DS1302_RST_LO;
}

//向DS1302写入地址后,从DS1302中读取数据
unsigned char DS1302_ReadData(unsigned char addr) {
 unsigned char r_dat;
 DS1302_RST_LO;
 DS1302_SCLK_LO;
 DS1302_RST_HI;
 
 DS1302_WriteOneByte(addr);  //写入地址
 r_dat = DS1302_ReadOneByte();  //读出数据
 
 DS1302_SCLK_LO;
 DS1302_RST_LO;
 
 return(r_dat);
}

//按照SettingData的设置设置DS1302的时间
void DS1302_SettingData(void) {
 unsigned char temp;
 unsigned char addr = 0x8C;
 
 DS1302_WriteData(0x8E,0x00);  //写入控制命令,禁用写保护

 for(temp=0;temp&l

0
0
(请您对文章做出评价)
1】【2】【3】【4
加载中

对文章的评论

更多评论

剩余字数:  

相关在线研讨会

我要参加

电路设计中可预测和不可预测问题的调试技术

时间:2008-06-02 10:00:00-12:00:00
简介:在嵌入式系统设计中,经常会出现一些可预测和不可预测的问题或者低概率事件信号。快速有效地发现这些问题需要不同的技术。8月15日…

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会