AVR单片机内部集成了EEPROM,但是在GCC写编写EEPROM应用程序的时候,经常会出现读写EEPROM时程序出错,或重启等不正常现象。在软件仿真时也许结果是正确的,但是在片上运行的时候就不正常。困扰很久,终于发现原因在于编译器,已经我们对EEPROM操作说明的理解不正确或不仔细。
操作EEPROM对时序的要求较高。更加Datasheet里的写操作范例程序:
while(EECR & (1<
EEAR = address; //设置地址和数据寄存器
EEDR = data;
EECR |= (1
EECR |= (1<
以上代码在GCC中的编译结果,发现 EECR |= (1<
while(EECR & (1<
EEAR = address; //设置地址和数据寄存器
EEDR = data;
asm volatile("SBI 0x1C,2
\t");
asm volatile("SBI 0x1C,1
\t");
对于读操作,发现采用Datasheet范例程序:
while(EECR & (1<
EEAR = address; //设置地址寄存器
EECR |= (1<
return EEDR; //自数据寄存器返回数据
进行单次操作似乎正常,但是连续操作可能导致程序个别运行不正常,现象象重启,但通过逻辑分析仪跟踪设置启动时序情况看来,又不太象,不知什么原因。采用一下程序段则可以正常运行:
while(EECR & (1<
EEAR = address; //设置地址寄存器
asm volatile("SBI 0x1C,0
\t"); //设置EERE 以启动读操作
data = EEDR; //自数据寄存器返回数据
asm volatile("nop
\t");
asm volatile("nop
\t");
asm volatile("nop
\t");
asm volatile("nop
\t");
注意,读操作后要空4个系统周期后才可执行下个语句(Datasheet有说明)。
关键字:AVR 单片机 内部EEPROM
引用地址:
AVR单片机内部EEPROM应用方法
推荐阅读最新更新时间:2024-03-16 13:40
单片机中的上拉、下拉电阻
大学的时候接触过单片机,当时纯粹是为了应付考试,发现学完之后对单片机还是一窍不通。一直以来以为单片机是个神秘的东西,要弄明白需要花费不少的时间和精力,几次想研究单片机都被这种想法阻扰。而本人博士生实践的项目却恰好是单片机编程,真实怕什么来什么。没办法,只能硬着头皮上了,潜心专研了一个月,终于不再是门外汉了。费话就不说了,下面写一点自己对单片机上拉、下拉电阻的理解,供有缘人看。 一 、关于拉电流与灌电流 拉即泄,主动输出电流,是从输出口输出电流。 灌即充,被动输入电流,是从输出端口流入。吸则是主动吸入电流,是从输入端口流入 拉电流和灌电流是衡量电路输出驱动能力(注意:拉、灌都是对输出端而言的,所以是驱动能力)的参数,这种说法
[单片机]
基于51单片机的气泵控制程序
用stc89c52单片机来控制气泵,带有2种工作模式,端口可自行修改 #include reg52.h sbit a=P1^5;//闪烁灯 sbit b=P1^4;//气泵 sbit c=P3^7;//状态指示灯 sbit ss1=P3^2;//一分钟工作模式 sbit ss4=P3^3;//四分钟工作模式 unsigned int q,w,e,r,y,u,i,n,m,l,h; csh();//初始化子程序声明 ys();//延时子程序 ys2();//延时子程序2声明 void main() { csh();//初始化 while(1) //死循环 一号 { if(ss1==0){n=1;} //判定一分钟工作模式接通启动二号
[单片机]
8051单片机复位后 ,各寄存器的初始状态如何?
问题:8051单片机复位后 ,各寄存器的初始状态如何?复位方法有几种? 解答:8051单片机复位后机器的初始状态,即各寄存器的状态:PC之外,复位操作还对其它一些特殊功能寄存器有影响,它们的复位状态如下: 寄存器 复位时内容 寄存器 复位时内容 PC 0000H TCON 0×000000B ACC 00H TL0 00H B 00H TH0 00H PSW 00H TH1 00H SP 07H TH1 00H DPTR 0000H SCON 00H P0—P3 FFH SBUF
[单片机]
51单片机指令周期,机器周期,时钟周期详解
51单片机有指令周期,机器周期,时钟周期的说法,看似相近,但是又都不太一样,很容易混淆。还是详细分析一下。 时钟周期:单片机外接的晶振的振荡周期就是时钟周期,时钟周期=振荡周期。比方说,80C51单片机外接了一个11.0592M的晶体振荡器,那我们就说这个单片机系统的时钟周期是1/11.0592M,这里要注意11.0592M是频率,周期是频率的倒数。 机器周期:单片机执行指令所消耗的最小时间单位。我们都知道51单片机采用的CISC(复杂指令指令集),所以有很多条指令,并且各条指令执行的时间也可能不一样(有一样的哦),但是它们执行的时间必须是机器周期的整数倍,这就是机器周期的意义所在。8051系列单片机又在这
[单片机]
基于 AVR 单片机的自动对靶喷雾控制系统设计
1. 引言 众所周知,我国农药生产技术处于国际先进水平,而我国植保机械和农药使用技术严重 落后的现状与我国高速发展的农药水平极不相称,已严重妨碍了农作物病虫害的防治,带来 了诸如农药利用率低、农产品中农药残留超标、环境污染、作物要害、操作者中毒等负面影 响。农药利用率最好的也不足 30%,农药流失量高达 60%~70%,不仅经济损失重大,也造 成了严重的“农残问题”和环境污染。而采用自动对靶喷雾技术,可节省农药 50%~80%,因 此开展对靶喷雾技术研究将成为我国植保机械的下一个重要的研究方向。为此,本文提出了 一种以 AVR 系列的 ATmega16 单片机为 CPU,以 PC 机作为上位机,以摄像头采集的信号 作为触发信号,结
[单片机]
AT89C51单片机解密原理
AT89C系列单片机擦除操作的时序为:擦除开始---- 擦除操作硬件初始化(10微秒)---- 擦除加密锁定位(50----200微秒)--- 擦除片内程序存储器内的数据(10毫秒)----- 擦除结束。如果用程序监控擦除过程,一旦加密锁定位被擦除就终止擦除操作,停止进一步擦除片内程序存储器,加过密的单片机就变成没加密的单片机了。片内程序可通过总线被读出。 对于AT89C系列单片机有两种不可破解的加密方法。 一、永久性地破坏单片机的加密位的加密方法。简称OTP加密模式。 二、永久性地破坏单片机的数据总线的加密方法。简称烧总线加密模式。AT89C系列单片机OTP加密模式原理这种编程加密算法烧坏加密锁定位(把芯片内的硅片击
[单片机]
使用单片机实现无线控制家电报警器的资料说明
1引言 由于经济的快速发展,人们生活水平得到较大的提高,生活节奏也越来越快,为此家电遥控和家庭安全也为人们所需要和重视。以AT89C51单片机为核心通过电话进行电器遥控和报警装置主要解决这些问题。他的主要功能有:通过电话可以遥控16路电器通断,遥控路数可以根据需要进行扩展;可以实现电器调压调速控制,有密码设定,保密安全性好;有语言提示,避免盲目操作;可以取消已输入的操作命令;当单片机接收到家中天然气泄露、温度超限和失窃信号后会自动拨打预留电话并报告家中发生的情况。 2硬件电路设计 总体电路设计思路是:电话遥控报警器与家用电话采用并联方式,当有振铃信号时单片机开始记数,前10次铃声内若有人接电话,则遥控报警器被屏蔽,不影响正常接
[单片机]
基于PIC单片机的热能表研制
摘要:随着我国福利制度的改革和热能计量的规范化,对热能的准确计量成为一个比较关键的环节。文中介绍了热能表的组成和工作原理,给出了一种基于PIC16C64单片机的热能表设计方案,同时对设计和使用中的一些问题进行了讨论并提出了解决办法。
关键词:热能表 单片机 温度传感器 PIC16C64
随着我国福利制度的改革,供暖制度也发生了相应的变化。原来的供暖收费存在着对使用的热能估算不准确、收费不合理等问题。为此,国家建设部在一些城市实施供暖制度改革试点,并对热能实行计量收费,这就要求对使用的热能进行准确的计量。本文给出了一种基于PIC16C64单片机的、针对热水供暖的热能表设计方案。
1 热能表的组成原理
一般热能表的原理框图如图
[单片机]