Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >蓝桥杯单片机必备知识—–(11)EEPROM

蓝桥杯单片机必备知识—–(11)EEPROM

作者头像
全栈程序员站长
发布于 2021-04-16 02:20:56
发布于 2021-04-16 02:20:56
66200
代码可运行
举报
运行总次数:0
代码可运行

蓝桥杯单片机必备知识—–(11)EEPROM

EEPROM

由于EPROM操作的不便,后来出的主板上BIOS ROM芯片大部分都采用EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程ROM)。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM Eraser和编程器的束缚。EEPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。借助于EEPROM芯片的双电压特性,可以使BIOS具有良好的防毒功能,在升级时,把跳线开关打至“on”的位置,即给芯片加上相应的编程电压,就可以方便地升级;平时使用时,则把跳线开关打至“off”的位置,防止CIH类的病毒对BIOS芯片的非法修改。所以,仍有不少主板采用EEPROM作为BIOS芯片并作为自己主板的一大特色。 IIC.H添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void write_eeprom(unsigned char add,unsigned char val);
unsigned char read_eeprom(unsigned char add);

IIC.C中添加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 写入
void write_eeprom(unsigned char add,unsigned char val)
{
   
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	IIC_SendByte(val);
	IIC_WaitAck();
	IIC_Stop();
}

unsigned char read_eeprom(unsigned char add)
{
   
	unsigned char da;
	
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	
	IIC_Start();
	IIC_SendByte(0xa1);
	IIC_WaitAck();
	da = IIC_RecByte();
	IIC_SendAck(1);
	IIC_Stop();
	
	return da;
}

MAIN.C中调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void delay()		//10ms @11.0592MHz
{
   
	unsigned char i, j;

	i = 108;
	j = 145;
	do
	{
   
		while (--j);
	} while (--i);
}

//数据的读写操作
// write_eeprom(0x00,0x00); //EEPROM中存储的数据需要进行初始化
    reset_cnt = read_eeprom(0x00);  //从AT24C02地址0x00中读取数据
	delay();	//延时10ms
    write_eeprom(0x00,reset_cnt);  //向AT24C02地址0x00中写入数据
	delay();

测试结果:

实现功能:记录开机次数。

整个代码粘贴

IIC.H

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#ifndef _IIC_H
#define _IIC_H

void IIC_Start(void); 
void IIC_Stop(void);  
bit IIC_WaitAck(void);  
void IIC_SendAck(bit ackbit); 
void IIC_SendByte(unsigned char byt); 
unsigned char IIC_RecByte(void); 

void write_eeprom(unsigned char add,unsigned char val);
unsigned char read_eeprom(unsigned char add);

#endif

IIC.C

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "reg52.h"
#include "intrins.h"

#define DELAY_TIME 5

#define SlaveAddrW 0xA0
#define SlaveAddrR 0xA1

//总线引脚定义
sbit SDA = P2^1;  /* 数据线 */
sbit SCL = P2^0;  /* 时钟线 */

void IIC_Delay(unsigned char i)
{
   
    do{
   _nop_();}
    while(i--);        
}
//总线启动条件
void IIC_Start(void)
{
   
    SDA = 1;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 0;
    IIC_Delay(DELAY_TIME);
    SCL = 0;	
}

//总线停止条件
void IIC_Stop(void)
{
   
    SDA = 0;
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//发送应答
void IIC_SendAck(bit ackbit)
{
   
    SCL = 0;
    SDA = ackbit;  					// 0:应答,1:非应答
    IIC_Delay(DELAY_TIME);
    SCL = 1;
    IIC_Delay(DELAY_TIME);
    SCL = 0; 
    SDA = 1;
    IIC_Delay(DELAY_TIME);
}

//等待应答
bit IIC_WaitAck(void)
{
   
    bit ackbit;
	
    SCL  = 1;
    IIC_Delay(DELAY_TIME);
    ackbit = SDA;
    SCL = 0;
    IIC_Delay(DELAY_TIME);
    return ackbit;
}

//通过I2C总线发送数据
void IIC_SendByte(unsigned char byt)
{
   
    unsigned char i;

    for(i=0; i<8; i++)
    {
   
        SCL  = 0;
        IIC_Delay(DELAY_TIME);
        if(byt & 0x80) SDA  = 1;
        else SDA  = 0;
        IIC_Delay(DELAY_TIME);
        SCL = 1;
        byt <<= 1;
        IIC_Delay(DELAY_TIME);
    }
    SCL  = 0;  
}

//从I2C总线上接收数据
unsigned char IIC_RecByte(void)
{
   
    unsigned char i, da;
    for(i=0; i<8; i++)
    {
      
    	SCL = 1;
	IIC_Delay(DELAY_TIME);
	da <<= 1;
	if(SDA) da |= 1;
	SCL = 0;
	IIC_Delay(DELAY_TIME);
    }
    return da;    
}




// 写入
void write_eeprom(unsigned char add,unsigned char val)
{
   
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	IIC_SendByte(val);
	IIC_WaitAck();
	IIC_Stop();
}

unsigned char read_eeprom(unsigned char add)
{
   
	unsigned char da;
	
	IIC_Start();
	IIC_SendByte(0xa0);
	IIC_WaitAck();
	IIC_SendByte(add);
	IIC_WaitAck();
	
	IIC_Start();
	IIC_SendByte(0xa1);
	IIC_WaitAck();
	da = IIC_RecByte();
	IIC_SendAck(1);
	IIC_Stop();
	
	return da;
}

MAIN.C

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stc15f2k60s2.h>
#include "iic.h"

#define uchar unsigned char
#define uint unsigned char
	
uchar tab[] = {
   0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff};
uchar dspbuf[8] = {
   10,10,10,10,10,10,10,10};
uchar a1 = 10,b1 = 20,c1 = 0,a2,b2,c2;
//uchar s4 = 0,s5 = 0,s8 = 0,s9 = 0;
uchar s4 = 0,s5 = 0,s6 = 0,s7 = 0,s8 = 0,s9 = 0,s10 = 0;
uchar s11 = 0,s12 = 0,s13 = 0,s14 = 0,s15 = 0,s16 = 0,s17 = 0,s18 = 0,s19 = 0;


void load();
void display();
void read_key();
void delay()		//10ms @11.0592MHz
{
   
	unsigned char i, j;

	i = 108;
	j = 145;
	do
	{
   
		while (--j);
	} while (--i);
}
void cls()
{
   
	P2 = (P2 & 0x1f) | 0x80;
	P0 = 0xff;
	P2 = 0x1f;
	
	P2 = (P2 & 0x1f) | 0xa0;
	P0 = 0x00;
	P2 = 0x1f;
}

void main()
{
   
	cls();
	AUXR = 0xc0;
	TMOD = 0x00;
	TL0 = 0xcd;
	TH0 = 0xd4;
	TR0 = 1;
	ET0 = 1;
	EA = 1;
	c2 = read_eeprom(0x04);
	delay();
	c1 = c2 + 1;
	write_eeprom(0x04,c1);
	delay();
	dspbuf[4] = c2 / 10;
	dspbuf[5] = c2 % 10;
	while(1){
   }
}

void time0() interrupt 1
{
   
	display();
}



void display()
{
   
	static unsigned char dspcom = 0;
	
	
	P2 = (P2 & 0x1f) | 0xe0;
	P0 = 0xff;
	P2 = 0x1f;
	
	P2 = (P2 & 0x1f) | 0xc0;
	P0 = 1 << dspcom;
	P2 = 0x1f;
	
	P2 = (P2 & 0x1f) | 0xe0;
	P0 = tab[dspbuf[dspcom]];
	P2 = 0x1f;
	
	if(++dspcom == 8) dspcom = 0;
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100125.html原文链接:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
智能手表续航太短?聊聊可穿戴设备的能耗管理黑科技
可穿戴设备的发展突飞猛进,但续航问题始终是个大麻烦。电池技术短期内没啥突破,那就只能在能耗管理上下功夫,让设备更省电、更智能。
Echo_Wish
2025/03/29
1450
智能手表续航太短?聊聊可穿戴设备的能耗管理黑科技
翻译:VESA Adaptive-Sync / AMD FreeSync / VRR 白皮书[通俗易懂]
近两年,VRR 技术又开始火了起来,无论是 DRM 驱动框架,还是 Xorg 、Sway (Wayland Compositor),都陆续添加了对 VRR 的支持。就连今年即将发布的 AndroidR,也都原生支持了 VRR 的功能。其实 VRR 技术早在 2014 年就已经提出了,但一直用于 PC 平台。随着移动平台 GPU 和 Display 硬件技术的不断发展,可支持的帧率和分辨率也越来越高,游戏玩家对于游戏体验的流畅度要求也越来越高。再加上越来越多的手机开始支持 DisplayPort 接口,将 VRR 技术运用于移动平台已经成为新的趋势。因此本人决定将 VESA Adaptive-Sync 白皮书翻译成中文,方便大家阅读。
全栈程序员站长
2022/06/28
2.3K0
翻译:VESA Adaptive-Sync / AMD FreeSync / VRR 白皮书[通俗易懂]
CS创世8GB SD NAND的低功耗特性:重塑电子设备续航与性能的里程碑
在当今这个数字化飞速发展的时代,电子设备已成为我们日常生活中不可或缺的一部分。从智能手表到智能手机,从无人机到智能家居,各种高科技产品层出不穷,而这些设备的续航能力与性能表现直接关系到用户的使用体验。在此背景下,CS创世半导体推出的8GB SD NAND芯片,以其卓越的低功耗特性,成为了市场上的一颗璀璨明星,为电子设备的续航与性能提升开辟了新的路径。
用户11033168
2024/08/16
1480
CS创世8GB SD NAND的低功耗特性:重塑电子设备续航与性能的里程碑
抖音技术分享:抖音Android端手机功耗问题的全面分析和详细优化实践
功耗优化是应用体验优化的一个重要课题,高功耗会引发用户的电量焦虑,也会导致糟糕的发热体验,从而降低了用户的使用意愿。而功耗又是涉及整机的长时间多场景的综合性复杂指标,影响因素很多。不论是功耗的量化拆解,还是异常问题的监控,以及主动的功耗优化对于开发人员来说都是很有挑战性的。
JackJiang
2023/12/07
1.9K0
抖音技术分享:抖音Android端手机功耗问题的全面分析和详细优化实践
基于QoE的实时视频编码优化:低功耗,低延时,高质量
大家好,我是吴晓然。本次将为大家介绍基于QoE的实时视频编码优化探索。实时音视频的传输框架大同小异,虽然不同厂商在一些技术细节的打磨上略有差异,但都有一个共同的目标那就是QoE——用户体验质量。那么其根本原因何在?
LiveVideoStack
2021/09/01
1.5K0
性能功耗专题 | 深入浅出CPUFreq
现在我们在购买一款手机的时候,大家都会去看一下这款手机所采用的芯片型号,有几个CPU核心(是8核处理器还是4核处理器),CPU的主频最高是多少。这些都是一些关系到性能体验的初步的硬件基础参数。
Abalone
2022/10/08
2.8K0
性能功耗专题 | 深入浅出CPUFreq
芯片设计中的功耗挑战和低功耗设计
在早期的IC设计中,关注的参数主要是性能(timing)和面积(area)。EDA工具在满足性能要求的情况下,最小化面积。此时,功耗是一个不怎么被关心的问题。
AsicWonder
2023/09/01
1.1K0
芯片设计中的功耗挑战和低功耗设计
移动GPU大战,光追技术成香饽饽?
智能手机市场的“下行”,给整个智能手机产业链都带来了巨大的“冲击”,围绕上游芯片的“内卷”也愈演愈烈。从高通到联发科,再到英伟达、AMD、ARM,几乎全球头部的芯片巨头,都无一例外地参与到了手机GPU的对决之中。
刘旷
2023/03/14
4430
三星S23 Ultra拆解:物料总成本约469美元,高通占比超34%!
6月3日消息,近日市场研究机构Counterpoint对三星Galaxy S23 Ultra(8GB+256GB,Sub-6GHz)进行了拆解,发现这款定价为1199.99美元的旗舰手机的硬件物料总成本约为469美元。
芯智讯
2023/08/09
6130
三星S23 Ultra拆解:物料总成本约469美元,高通占比超34%!
Android帧率监测与优化技巧
Android 应用的性能优化是开发过程中至关重要的一环,而帧率(Frame Rate)是评估应用性能的一个关键指标。在本文中,我们将深入探讨如何监测 Android 应用的帧率,以及如何通过代码示例来优化应用的性能。
Rouse
2023/10/27
5500
Android帧率监测与优化技巧
浅谈VR一体机:5G等技术不断赋能,而内容生态仍是“阿喀琉斯之踵”
过去的三年,VR技术不断发展,但消费市场却并不如预期,资本狂潮也随之褪去。在经历2017年的“VR滑铁卢”后,各大硬件厂商也在探索新的VR发展之路,VR一体机开始崭露头角。例如暴风魔镜、Pico、HTC Vive、Oculus等专业厂商都纷纷推出了相关产品。
VRPinea
2018/07/26
5570
浅谈VR一体机:5G等技术不断赋能,而内容生态仍是“阿喀琉斯之踵”
高通骁龙8 Gen 3:引领游戏新纪元
在移动游戏领域,随着技术的进步,玩家对于游戏体验的要求越来越高。他们渴望在掌中世界中获得接近PC级别的游戏体验。高通公司最新推出的旗舰级处理器——骁龙8 Gen 3,凭借其强大的性能和先进的游戏优化技术,正成为新一代移动游戏的驱动力量。
用户7353950
2024/11/23
2250
高通骁龙8 Gen 3:引领游戏新纪元
骁龙8四倍AI算力「硬科技」:上可超分下可增强信号,多个算法同时跑
11 月 30 日,高通发布的全新一代骁龙 8 移动平台(骁龙 8 Gen 1)让我们对即将推出的安卓旗舰手机有了期待,从最近解禁的跑分来看,这块芯片 GPU 峰值性能提升了 59.7%,在 GFXBench 上分数甚至要比 iPhone 13 Pro 的 A15 还要高。
机器之心
2021/12/15
1.2K0
骁龙8四倍AI算力「硬科技」:上可超分下可增强信号,多个算法同时跑
联发科发布天玑7200移动平台,升级游戏与影像体验
2023年2月16日,联发科(MediaTek)发布天玑7200移动平台,这是MediaTek天玑7000系列的首款新平台。天玑7200拥有先进的AI影像功能、游戏优化技术与5G连接速度,并且能效表现出色,助力终端设备实现更长续航。
芯智讯
2023/03/24
7440
联发科发布天玑7200移动平台,升级游戏与影像体验
手机基带电路设计20问(1)
这个问题本身其实并不准确,首先,电压和电流是由负载的需求来决定的,比如负载需要的是1.2V的电压,前端电源就不能给他提供3.3V的电;负载需要500mA的电流,前端电源的输出电牛就不能低于500mA,要知道负载是先决条件,电源要根据负载来选择。再回到问题本身,从负载的角度而言,低电压、电流的负载功耗当然也低;从电源的角度而言,以LDO电源为例,某负载的需求是1V@300mA,那么LDO的输入、输出电流也是300mA,假如LDO输入是3V,则LDO本身的功耗就是(3-1)*0.3=0.6W,如果降低LDO的输入为1.2V,则LDO本身的功耗就是(1.2-1)*0.3=0.06W,功耗降低为前者的10%,如果负载是屏幕这种常开的类型,0.6W的功耗就会严重减低手机待机时间,此时需要优化电源,降低LDO上的损耗。
工程师看海
2022/06/23
6450
手机基带电路设计20问(1)
低功耗设计策略:延长嵌入式设备的电池寿命代码实战
摘要: 嵌入式设备在现代生活中扮演着重要的角色,但它们往往受到电池寿命的限制。本文将介绍一些低功耗设计策略,以延长嵌入式设备的电池寿命,并提供一些示例代码,帮助开发者更好地理解如何实现这些策略。
一键难忘
2023/12/09
7220
最优秀的VR一体机是如何炼成的——大朋VR一体机拆机评测
VR一体机终于还是迎来了自己的市场,并且很好的验证并解决了普通安卓VR性能不足的问题。那么一体机是如何获得比Cardboard,甚至Gear类方案更优异的体验,从而证明自己? 2016年大朋VR一体机正式发售,盗梦极客工作室也在第一时间进行了相关的拆解工作。在还没正式发售前,我们也对其性能参数作了一定的了解,在发布会的上手体验视频里也给出了我们对其印象良好的结论。 几个重要的规格和参数: CPU GPU 屏幕 光学 IMU Exynos7420 Mali-760@MP8 AMOLED2.5K576PPI
VRPinea
2018/05/14
1.4K0
微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题
功耗优化一直是 app 性能优化中让人头疼的问题,尤其是在直播这种用户观看时长特别久的场景。怎样能在不影响主体验的前提下,进一步优化微信iOS端视频号直播的功耗占用,本文给出了一个不太一样的答案。
JackJiang
2023/11/16
7400
微信团队分享:详解iOS版微信视频号直播中因帧率异常导致的功耗问题
小米13系列正式发布:徕卡三摄+骁龙8 Gen 2,3999元起售
12 月 11 日,小米公司召开 Xiaomi 13 & MIUI14 新品发布会,正式推出全新旗舰 Xiaomi 13 系列。作为小米徕卡联合研发的第二代影像旗舰,Xiaomi13 系列采用全新设计,并搭载了大量来自 Xiaomi 12S Ultra 的徕卡专业影像能力,具备徕卡光学镜头,徕卡原生双画质,同时带来全新的徕卡超色彩影像、徕卡浮动镜头等光学和计算摄影能力。第二代骁龙 ®8 旗舰移动平台为 Xiaomi 13 系列带来强劲性能,并全系搭载澎湃电池管理系统。全新影像旗舰 Xiaomi 13 系列售价 3999 元起。
芯智讯
2023/02/09
5850
3499美元的苹果MR头显来了!供应链曝光!国产厂商机会在哪?
美国东部时间6月5日下午1点,苹果举办了2023年度开发者大会(WWDC),苹果还如传闻所预期的那样,正式发布了MR头显Vision Pro以及与之配套的visionOS操作系统。
芯智讯
2023/08/09
2530
3499美元的苹果MR头显来了!供应链曝光!国产厂商机会在哪?
推荐阅读
相关推荐
智能手表续航太短?聊聊可穿戴设备的能耗管理黑科技
更多 >
加入讨论
的问答专区 >
1高级后端开发工程师擅长3个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验