⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302.c

📁 单边带调幅对讲机程序 msp430单片机控制 实现无线数据传输
💻 C
字号:
#include "DS1302.h"

//延时函数
void DS1302_Delay(unsigned int dtime) 
{
 unsigned int temp;
 for(temp=0;temp<dtime;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<8;temp++){rdata >>= 1;//将移位放到前面,否则读不到最高一位
  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(unsigned char *Setting_Time) 
{
 unsigned char temp;
 unsigned char addr = 0x8C;
 
 DS1302_WriteData(0x8E,0x00);  //写入控制命令,禁用写保护

 for(temp=0;temp<7;temp++) {
  DS1302_WriteData(addr,Setting_Time[temp]);
  addr -= 2;
 }
 
 DS1302_WriteData(0x8E,0x80);  //写入控制命令,启用写保护
}

//读取DS1302时间到ReadingData中
void DS1302_GetData(unsigned char *str) 
{
 unsigned char i;
 unsigned char addr = 0x8D;
// unsigned char temp,temp1;  

 for(i=0;i<7;i++) 
 {
    str[i] = DS1302_ReadData(addr);//年
    addr -= 2;
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -