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

📄 readtime.h

📁 这是一个用STC单片机作的,带液晶显示屏的万年历程序,并有串行接收部份,大家一定要珍惜用.
💻 H
字号:
//#include"52.h"

//=====读写时钟芯片地址========
#define READ 0xa3
#define WRITE 0xa2

sbit SDA = P1^5;
sbit SCL = P1^6;

				 
word code monthday[12] = {31, 28, 31, 30, 31, 30,		//每月天数
                      31, 31, 30, 31, 30, 31};
                      
  
void delay_iic(void)
{
	byte i;

	for(i = 0; i < 5; i++);
}

void I_start(void)
{
	SDA = 1;
	SCL = 1;
	delay_iic();
	SDA = 0;
	delay_iic();
	SCL = 0;
}

void I_stop(void)
{
	SDA = 0;
	SCL = 1;
	delay_iic();
	SDA = 1;
}

byte I_WaitAck(void)
{
	bit ack;

	SDA = 1;
	delay_iic();
	SCL = 1;
	delay_iic();
	ack = SDA;
	SCL = 0;

	if(ack) return 0;
	else return 1;
}

void I_Ack(void)
{
	SDA = 1;
	delay_iic();
	SCL = 1;
	delay_iic();
	SCL = 0;
	delay_iic();
	SDA = 0;
}

void I_send(byte i_data)
{
	byte i;

	for(i = 0; i < 8; i++)
	{
		SDA = (bit)(i_data & 0x80);
		i_data = i_data << 1;
		SCL = 1;
		delay_iic();
		SCL = 0;
	}
	SDA = 1;
}

byte I_receive(void)
{
	byte i;
	byte i_data = 0;
	bit rdata;
	
	SDA = 1;

	for(i = 0; i < 8; i++)
	{	
		SCL = 1;
		i_data *= 2;
		rdata = SDA;
		if(rdata) i_data++;
		SCL = 0;
	}
	return i_data;
}

void I_Write(byte address, byte i_data)
{
	I_start();
	I_send(WRITE);
	I_WaitAck();
	I_send(address);
	I_WaitAck();
	I_send(i_data);
	I_WaitAck();
	I_stop();
}

byte I_Read(byte address)
{
	byte i_data;

	I_start();
	I_send(WRITE);
	I_WaitAck();
	I_send(address);
	I_WaitAck();

	I_start();
	I_send(READ);
	I_WaitAck();
	i_data = I_receive();
	I_Ack();
	I_stop();
	
	return i_data;
}


⌨️ 快捷键说明

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