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

📄 ds1302.c.bak

📁 M8+1302+18b20+8位数码管的sch和gcc源程序
💻 BAK
字号:
#define ds1302_c
#include "main.h"
void ds1302_write_time(void)
{
	ds1302_write(ds1302_control_reg,0x00);	//关闭写保护	
	
	ds1302_write(ds1302_sec_reg,0x80);		//暂停		
	ds1302_write(ds1302_charger_reg,0xa9);	//涓流充电
	ds1302_write(ds1302_year_reg,year);		//年
	ds1302_write(ds1302_month_reg,month);	//月
	ds1302_write(ds1302_date_reg,day);		//日
	ds1302_write(ds1302_day_reg,week);		//周
	ds1302_write(ds1302_hr_reg,hour);		//时
	ds1302_write(ds1302_min_reg,minute);	//分
	ds1302_write(ds1302_sec_reg,second);	//秒		
	
	ds1302_write(ds1302_control_reg,0x80);	//打开写保护

}
void ds1302_write(uchar reg,uchar data)
{
	uchar i;
	set_ds1302_io_ddr();
	clr_ds1302_rst();
	asm("nop");
	asm("nop");
	clr_ds1302_sclk();
	asm("nop");
	asm("nop");
	set_ds1302_rst();
	asm("nop");
	asm("nop");
	for(i=8;i>0;i--)
	{		
		if(reg&0x01) set_ds1302_io();
		else clr_ds1302_io();
		asm("nop");
		asm("nop");
		set_ds1302_sclk();		
		asm("nop");
		asm("nop");
		clr_ds1302_sclk();
		asm("nop");
		asm("nop");
		reg>>=1;
	}
	for(i=8;i>0;i--)
	{		
		if(data&0x01) set_ds1302_io();
		else clr_ds1302_io();
		asm("nop");
		asm("nop");
		set_ds1302_sclk();
		asm("nop");
		asm("nop");
		clr_ds1302_sclk();
		asm("nop");
		asm("nop");
		data>>=1;
	}
	clr_ds1302_rst();
	asm("nop");
	asm("nop");
	clr_ds1302_io_ddr();
}
uchar ds1302_read(uchar reg)
{
	uchar data=0,i;
	reg+=1;//读标志
	set_ds1302_io_out();
	clr_ds1302_rst();
	asm("nop");
	asm("nop");
	clr_ds1302_sclk();
	asm("nop");
	asm("nop");
	set_ds1302_rst();
	asm("nop");
	asm("nop");
	for(i=8;i>0;i--)
	{
		
		if(reg&0x01) set_ds1302_io();
		else clr_ds1302_io();
		asm("nop");
		asm("nop");
		set_ds1302_sclk();	
		asm("nop");
		asm("nop");	
		clr_ds1302_sclk();
		asm("nop");
		asm("nop");
		reg>>=1;
	}
	clr_ds1302_io_ddr();
	for(i=8;i>0;i--)
	{	
		data>>=1;
		if((pinc&(1<<ds1302_sda))==(1<<ds1302_sda)) data|=0x80;
		set_ds1302_sclk();
		asm("nop");
		asm("nop");
		clr_ds1302_sclk();
		asm("nop");
		asm("nop");		
	}
	clr_ds1302_rst();
	asm("nop");
	asm("nop");
	return(data);
}
void ds1302_read_time(void)
{
	year=ds1302_read(ds1302_year_reg);	//年
	month=ds1302_read(ds1302_month_reg);//月
	day=ds1302_read(ds1302_date_reg);	//日
	week=ds1302_read(ds1302_day_reg);	//周
	hour=ds1302_read(ds1302_hr_reg);	//时
	minute=ds1302_read(ds1302_min_reg);	//分
	second=ds1302_read(ds1302_sec_reg);	//秒
}

⌨️ 快捷键说明

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