欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

51库-DS1302驱动程序(四-一)

程序员文章站 2022-06-15 22:13:32
Module_Lib该文件夹下存放各种驱动文件,以单独文件夹内的方式体现。AT24C02AT24CXX.hEEPROM驱动头文件#ifndef __AT24CXX_H#define __AT24CXX_H#include "sim_i2c.h"#include "core51_uart.h"//-----------EEPROM的地址定义-----------//#define AT24C02_ADD 0xA0void At24c02Write(unsigned char ad...

Module_Lib

该文件夹下存放各种驱动文件,以单独文件夹内的方式体现。

51库-DS1302驱动程序(四-一)

AT24C02

AT24CXX.h

EEPROM驱动头文件

#ifndef __AT24CXX_H
#define __AT24CXX_H

#include "sim_i2c.h"
#include "core51_uart.h"

//-----------EEPROM的地址定义-----------//
#define AT24C02_ADD 0xA0

void At24c02Write(unsigned char addr,unsigned char dat);		//往24c02的一个地址写入一个数据
unsigned char At24c02Read(unsigned char addr);					//读取24c02的一个地址的一个数据
void Test_AT24C02_UART(void);											//AT24C02测试程序

#endif

AT24CXX.c

EEPROM驱动源文件

#include "at24cxx.h"

/*******************************************************************************
* 函 数 名         : At24c02Write
* 输    入         : addr 地址  dat  数据
* 输    出         :	空
* 函数功能		    : 往24c02的一个地址写入一个数据
* 详细描述			 :	寻址范围为00-0xFF  2K Bit 32页 每页 8 Byte  共256Byte
*******************************************************************************/
void At24c02Write(unsigned char addr,unsigned char dat)
{
	I2c_Start();
	I2c_SendByte(AT24C02_ADD);					//发送写器件地址
	I2c_SendByte(addr);							//发送要写入内存地址
	I2c_SendByte(dat);							//发送数据
	I2c_Stop();
}

/*******************************************************************************
* 函 数 名         : At24c02Read
* 输    入         : 需要读取的地址 数值为 0x00-0xFF
* 输    出         :	读出的数据
* 函数功能		    : 读取24c02的一个地址的一个数据
* 详细描述			 :	发送器件地址加1 为读取模式
*******************************************************************************/
unsigned char At24c02Read(unsigned char addr)
{
	unsigned char num;
	
	I2c_Start();
	I2c_SendByte(AT24C02_ADD); 				//发送写器件地址
	I2c_SendByte(addr); 							//发送要读取的地址
	I2c_Start();
	I2c_SendByte(AT24C02_ADD + 1); 			//发送读器件地址
	num=I2c_ReadByte(); 							//读取数据
	I2c_Stop();
	
	return num;	
}

/*******************************************************************************
* 函 数 名         : Test_AT24C02_UART
* 输    入         : 空
* 输    出         :	空
* 函数功能		    : AT24C02测试程序
* 详细描述			 :	按下复位键或者断电重启单片机打印在串口助手上的计数值会自加1
*******************************************************************************/
void Test_AT24C02_UART(void)
{
	unsigned char Count = 0;
	
	Count = At24c02Read(0);				//读取保存好的值
	
	#if Uart
	UART1_Send_Data(&Count,1);
	#endif
	
	Count ++;								//修改计数值
	At24c02Write(0,Count);				//保存计数值
	
	while(1);
}

外部链接

码云下载:https://gitee.com/LWTDZ/Core8051.git
店铺地址:https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-22129052348.16.6b222269wKu2dH&id=615384296160
QQ群(STM32嵌入式Linux&单片机):950822175

本文地址:https://blog.csdn.net/qq_34390075/article/details/107941054