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

📄 ds1302.h

📁 这是52单片机串口调试程序
💻 H
字号:
sbit	T_CLK	= P3^2;
sbit	T_IO	= P3^3;
sbit	ACC_0	= ACC^0;
sbit	ACC_7	= ACC^7;

#define	Set_RST_0	EA=0; D373_3&=~B_RTC_RST_MASK; P0=D373_3; B_373_3=1; B_373_3=0; EA=1;
#define	Set_RST_1	EA=0; D373_3|=B_RTC_RST_MASK; P0=D373_3; B_373_3=1; B_373_3=0; EA=1;

// 时间格式(BCD): 秒 分 时 日 月 星期 年
void DS1302_Write(BYTE ucDa)
{
	BYTE i;
	ACC = ucDa;
	for(i=8; i>0; i--){
		T_IO = ACC_0;
		T_CLK = 1;
		T_CLK = 0;
		ACC = ACC >> 1;
	}
}

BYTE DS1302_Read(void)
{
	BYTE i;
	for(i=8; i>0; i--){
		ACC = ACC >>1;
		ACC_7 = T_IO;
		T_CLK = 1;
		T_CLK = 0;
	}
	return(ACC);
}

void DS1302_WriteByte(BYTE ucAddr, BYTE ucDa)
{
	Set_RST_0
	T_CLK = 0;
	Set_RST_1
	DS1302_Write(ucAddr);
	DS1302_Write(ucDa);
	T_CLK = 1;
	Set_RST_0
}

void DS1302_WriteTime(void)
{
	BYTE i;
	DS1302_WriteByte(0x8e, 0x00);			// Write Enable
	Set_RST_0
	T_CLK = 0;
	Set_RST_1
	DS1302_Write(0xbe);						// Clock Burst Write
	for(i=0; i<8; i++){
		DS1302_Write(Time_buf[i]);
	}
	T_CLK = 1;
	Set_RST_0
	DS1302_WriteByte(0x8e, 0x80);			// Write Disable
}

void DS1302_ReadTime(void)
{
	BYTE i;
	Set_RST_0
	T_CLK = 0;
	Set_RST_1
	DS1302_Write(0xbf);						// Clock Burst Read
	for(i=0; i<8; i++){
		Time_buf[i]=DS1302_Read();
	}
	T_CLK = 1;
	Set_RST_0
	if(Time_buf[0]&0x80){	// Error
		Time_buf[0]&=0x7F;
		DS1302_WriteTime();
	}
}

void DS1302_Init(void)
{
	DS1302_WriteByte(0x8e, 0x00);			// Write Enable
	DS1302_WriteByte(0x90, 0xa7);			// Enable Trickle Charge((5-3.7)/8=0.2mA)
	DS1302_WriteByte(0x8e, 0x80);			// Write Disable
}

⌨️ 快捷键说明

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