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
该文件夹下存放各种驱动文件,以单独文件夹内的方式体现。
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
上一篇: 你压到你的情敌了
下一篇: Android移动应用开发大作业
推荐阅读
-
永乐大典与四库全书相比 谁才是毁灭文献的一个
-
永乐大典与四库全书相比 谁才是毁灭文献的一个
-
浅谈数据库缓存最终一致性的四种方案
-
51库-DS1302驱动程序(四-一)
-
数据库开发四:JDBC数据库开发进阶一(事务处理)
-
php怎样把数据库数据循环绑定到一个八行四列的表格里面去呢,知道的老师请说一下思路,多谢
-
Mysql数据库学习(四):常用MysqlCAPI介绍和使用、封装一个访问_MySQL
-
Mysql数据库学习(四):常用MysqlCAPI介绍和使用、封装一个访问_MySQL
-
《Spring Security3》第四章第一部分翻译上(数据库管理信息)
-
《Spring Security3》第四章第一部分翻译上(数据库管理信息)