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

📄 1302模块._c

📁 mega8515通过的DS1302芯片使用程序
💻 _C
字号:
#include <iom8515v.h>
#include <macros.h>

#define uchar unsigned char
#define uint  unsigned int

#define ds1302_clk  PC1
#define ds1302_data PC2
#define ds1302_rst  PC3

#define Set_ds1302_clk  PORTC |=(1<<ds1302_clk)
#define Set_ds1302_data PORTC |=(1<<ds1302_data)
#define Set_ds1302_rst  PORTC |=(1<<ds1302_rst)

#define Clr_ds1302_clk  PORTC &=~(1<<ds1302_clk)
#define Clr_ds1302_data PORTC &=~(1<<ds1302_data)
#define Clr_ds1302_rst  PORTC &=~(1<<ds1302_rst)

#define read_data       PORTC &=~(1<<ds1302_data)

#define uchar unsigned char
#define uint  unsigned int





void Delayus(uchar i)
 {
  while(--i);
 }


uchar ReadSec(void)    			
{
    return ReadRTC_Byte(0x81);
}
uchar ReadMin(void)    		
{
    return ReadRTC_Byte(0x83);
}
uchar ReadHour(void)
{
   return ReadRTC_Byte(0x85);
}



void WriteSec(uchar number)    	
{
    WriteRTC_Byte(0x80,number);
}
void WriteMin(uchar number)    		
{
    WriteRTC_Byte(0x82,number);
}
void WriteHour(uchar number)    		//向DS1302中写入分字节
{
    WriteRTC_Byte(0x84,number);
}




uint ReadRTC_Byte(uchar address)    			
{
    unsigned int  redata;
    
	
	
	Clr_ds1302_rst;//ds1302_rst = 0; 			
    Clr_ds1302_clk;//ds1302_clk = 0; 				
    Set_ds1302_rst;//ds1302_rst = 1;				
    Write(address);				
	redata=Read(address);			
	Clr_ds1302_rst;//ds1302_rst = 0;
	Set_ds1302_clk;//ds1302_clk = 1; 
   return read_data;				
}

void WriteRTC_Byte(uchar address,uchar number)   
{
    Clr_ds1302_clk;//ds1302_clk = 0;
    Clr_ds1302_rst;// ds1302_rst = 0;
	Set_ds1302_rst;//ds1302_rst = 1;  
    Write(address);				 
	Write(number);				
    Clr_ds1302_rst;//ds1302_rst = 0; 
	Set_ds1302_clk;//ds1302_clk = 1;
}
				




void Write_bit (uchar addr)				
{
  uchar i=0;
 for(i=8;i>0;i--){
	if((addr&0x01)==0x01)
	   Set_ds1302_data;//ds1302_dat = 1;
    else
		Clr_ds1302_data;//ds1302_dat = 0;
    Set_ds1302_clk;//ds1302_clk=1;
	Clr_ds1302_clk;//ds1302_clk=0;
	addr>>=1;
 }
}

uchar Read_bit (uchar addr)				
{
uchar i=0,num;
uchar data_r=0;;
Delayus(2);
 //ds1302_dat = 1;
  for(i=8;i>0;i--){
	data_r>>=1;
	read_data;
	num=PINC&0x04;
	if(num == 1)
	{
		data_r|=0x80;
	}	
	Set_ds1302_clk;//ds1302_clk = 1;	
	Clr_ds1302_clk;//ds1302_clk = 0; 
  }
return data_r;
}

⌨️ 快捷键说明

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