51单片机程序 设定值保存疑问?

我用过PLC,对C语言逻辑也了解一点点,但是遇到设定值断电保存的C程序我就不会啦,问题如下:
①按钮1 控制设定值加1;
②按钮2控制设定值减1;
③按钮3按下时开始计时,到达设定值后输出点动作;
④单片机用STC的,要求设定值断电后不归零,能记忆上次的值;
⑤(我以后想用数码管把这个设定值显示出来,这一点不回答也可)。
附有梯形图逻辑作参考,望给出详细的C51程序,谢谢啦
对于单片机,我是个外行,希望有朋友能按照梯形图逻辑关系给出C程序,并注释,真心感谢!

用STC的单片机,实现所述功能应该没有问题,如每次设定值后把数值 保存到EEPROM中,
在单片机 上电时先读出这个 数值,只要有改变 就保存就可以了,
数据保存方法 的 C 语言程序,在 STC单片机的数据手册 上都有例程
可以 上 STC 官网下载。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-10
AT89C51只能加 24C02外部EEPROM了。按键的时候存入,上电的时候读取。

STC的都带有ISP功能,直接用Flash来存取。
最方便的还是用带EEPROM功能 的MCU。
第2个回答  2013-05-10
要用到掉电存储器,还需要搭建一个电路来检测掉电事件,可在系统完全失电之前存储一次数据到掉电存储器(电源上有电容,可以再维持一阵,时间足够保存数据的),下次系统上电时,第一时间从掉电存储器载入数据即可。另一种方法可以不用检测掉电事件,在累加累减事件发生的时候,便立即存储一次数据(不过这样频繁读写会减少掉电存储器的使用寿命),这样随时掉电都可以。在硬件上需要扩展一个EEPROM(当然,你也可以选用后面带E的STC单片机,里面附带有EEPROM硬件资源),程序给你写了你也一定用不上,要根据实际硬件情况来编写调试的,你自己去宏晶官网上找吧,关于EEPROM的操作有范例的。追问

朋友你好,能不能把加1、减1和数码管显示的程序给出参考一下,断电保持先抛开不考虑,谢谢

第3个回答  2013-05-10
有的STC单片机有内置的EEPROM,可以将数据保存在EEPROM内,如STC11F08。详细的代码在每个型号的说明文档都有,楼主可以参考下。每次启动系统时,先从EEPROM读取值。需要注意的是每次值改变时必须将值保存进EEPROM里面,这会有一定的耗时,如果对时间要求不是太严格的可以忽略不计较。

关于C51单片机单片机的几个问题
--51 单片机里面,确实没有 PC 的地址,因为,谁都不需要这个地址。4、MOV 20H,@DPTR 这个语句错了是因为DPTR只能用于片外寻址么 --这个指令,并不存在。DPTR只能用于片外寻址么 --查一下指令表,就知道了。5、”80C51单片机子程序调用时能自动保护断点和现场“,这句话错了是不是因为只能自...

关于51单片机定时\/计数器装入初值的问题
这个有什么看不懂得呢 第一种 是吧十进制化成十六机制的方法 第二种呢 就是单纯的十进制 这样跟你说吧 因为th0只有一个字节 那就只能放下8位2进制 于是第一种表示就是把一个大于一个字节小于两个字节的数据转化成两个字节高八位和第八位的分离形式 第二种就简单了 0x9c就是65536-100的十六...

51单片机定时问题,为什么程序那儿要加一个while(1);
之所以有while(1)是为了使得程序一直在运行,所以才有中断操作的不断执行,否则程序只运行一次就终止啦。

51单片机有哪些模块
51单片机有以下模块:1. 中央处理器模块 中央处理器是单片机的大脑,负责数据的处理和运算。它接收外部数据,执行程序指令,处理各种运算和逻辑操作。2. 存储器模块 存储器模块包括程序存储器和数据存储器。程序存储器用于存储程序代码,数据存储器用于存储运行过程中的临时数据。3. 输入输出接口模块 输入输...

在写单片机PID程序时 应该是设定值减去测量值 还是 测量值减去给定值...
我这有51的#include#include"global_varible.h"\/***模块名:PID*描述:PID调节子程序*采用PID-PD算法。在偏差绝对值大于△e时,用PD算法,以改善动态品质。*当偏差绝对值小于△e时,用PID算法,提高稳定精度。*PIDout=kp*e(t)+ki*[e(t)+e(t-1)++e(1)]+kd*[e(t)-e(t-1)]*===...

51单片机关于寄存器的问题,请帮助我解释一下
在程序中,P1M0和P1M1都被赋予值0x00,这意味着P1的八个端口都工作在准双向口模式。对于P3口的工作方式设定,P3M0被赋值为0x00,P3M1被赋值为0x0F,这表明P3口的低四位(P3.0,P3.1,P3.2,P3.3)工作在推挽输出模式,而高四位(P3.4,P3.5,P3.6,P3.7)工作在准双向口模式。

51单片机定时的时候为什么一定要打开中断?
1、单片机的中断是一个很高明的办法。没有中断时单片机只会顺序执行主程序中的语句。2、单片机的定时器有自己的时钟,打开51单片机的定时器后,单片机一边顺序执行主程序的语句时,一边定时器在计时。当计到你设定的值后,他需要产生中断,然后暂停主程序语句,转到中断程序中执行你的命令。执行完命令后...

51单片机怎么休眠?
\\x0d\\x0a 1. 空闲模式 当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。但假若定时器正在运行,那么计数器寄存器中的值还将会增加。单片机在空闲模式下可由任一个中断或硬件复位唤醒,...

51单片机定义4字节变量就报错
下载到电路板上,发现flag根本不是按照自己设定的值,导致函数判断错误;后来查找到了原因 将keil中options中 target中 Memory Mode中要选择下图那两种方式才行;设置好后运行程序到电路板,果然成功正确运行了; 原因:之前设置成 Small:in DATA了,因为bit变量是位可寻址变量,而在51单片机 ...

求一单片机程序设计
这个纯粹是学校最小单片机系统,跟毕业设计有点像,P0用于段码的显示,P2低4位为位码,P2.4与P2.5作为控制继电器的驱动三极管的驱动,但是奇怪的是你把HS1101接到了P1口了,这样程序会复杂的多,为什么不把HS1101输出接到单片机的定时计数器上去,P1口就做设定值的输入端口用,这样只要定时间来计数...

相似回答