找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4575|回复: 10
打印 上一主题 下一主题
收起左侧

求大佬告知,stc单片机eeprom初始值设置参数问题

[复制链接]
跳转到指定楼层
楼主
ID:282747 发表于 2020-6-28 17:00 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
30黑币
stc单片机烧录程序时eeprom设置默认 485通讯地址,通讯波特率,可以通过指令修改通讯地址和波特率数值,现在遇到问题是不会设置eeprom中参数默认值

最佳答案

查看完整内容

STC没有用过的空白单片机EEPROM初始值0xff,如旧芯片下载选项中选EEPROM填充ff烧写芯片。初次上电,读取某一个或连续一串特定EEPROM地址是否0xff,如果是0xff即判断初次上电,擦除此扇区,在此地址写入特定数据作标识,其它地址可以写初始数据。再次上电时就以此标识作为判断依据
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-6-28 17:00 | 只看该作者
STC没有用过的空白单片机EEPROM初始值0xff,如旧芯片下载选项中选EEPROM填充ff烧写芯片。初次上电,读取某一个或连续一串特定EEPROM地址是否0xff,如果是0xff即判断初次上电,擦除此扇区,在此地址写入特定数据作标识,其它地址可以写初始数据。再次上电时就以此标识作为判断依据
回复

使用道具 举报

板凳
ID:636538 发表于 2020-6-28 17:37 | 只看该作者
STC是什么型号,eeprom是什么设置,最简单的你定义一个数值,写入EEPROM,再读出看看有问题吗,没有问题再仔细看自己的 485通讯地址,通讯波特率是不是设置看看有问题
回复

使用道具 举报

地板
ID:282747 发表于 2020-6-28 17:47 来自手机 | 只看该作者
SKYLAR123 发表于 2020-6-28 17:37
STC是什么型号,eeprom是什么设置,最简单的你定义一个数值,写入EEPROM,再读出看看有问题吗,没有问题再 ...

我是要通过485协议指令来设置波特率和地址,不是程序中设置
回复

使用道具 举报

5#
ID:213173 发表于 2020-6-28 20:51 | 只看该作者
stc单片机烧录程序时无法对内置eeprom写入数据,只能在程序中编写初次上电时写入初始数据的相关语句。空白eeprom寄存器都是0xff。
回复

使用道具 举报

6#
ID:282747 发表于 2020-6-28 22:26 来自手机 | 只看该作者
本帖最后由 shijie240 于 2020-6-28 22:38 编辑
wulin 发表于 2020-6-28 20:51
stc单片机烧录程序时无法对内置eeprom写入数据,只能在程序中编写初次上电时写入初始数据的相关语句。空白e ...

谢谢师傅,单片机上电是不是只要判断读取存储值是否为0xff,然后进行相关的存储读取操作
回复

使用道具 举报

7#
ID:282747 发表于 2020-6-29 08:13 来自手机 | 只看该作者
wulin 发表于 2020-6-29 07:46
STC没有用过的空白单片机EEPROM初始值0xff,如旧芯片下载选项中选EEPROM填充ff烧写芯片。初次上电,读取某 ...

茅塞顿开,谢谢师傅
回复

使用道具 举报

8#
ID:282747 发表于 2020-6-29 08:50 来自手机 | 只看该作者
wulin 发表于 2020-6-28 17:00
STC没有用过的空白单片机EEPROM初始值0xff,如旧芯片下载选项中选EEPROM填充ff烧写芯片。初次上电,读取某 ...

师傅,打扰了!再咨询一个问题    单片机检测温度>30°报警,拉低某一个io口电平,单片机检测报警数据电平拉低时间延长一段时间怎么做
回复

使用道具 举报

9#
ID:213173 发表于 2020-6-29 11:22 | 只看该作者
shijie240 发表于 2020-6-29 08:50
师傅,打扰了!再咨询一个问题    单片机检测温度>30°报警,拉低某一个io口电平,单片机检测报警数据电 ...

void Alarm()//延时报警
{
        static unsigned int i=0;//延时计数变量
        if(temperature>x)//x=预设报警温度值
        {
                i++;
                if(i>=50000)//延时时间
                {
                        i=50000;//复防止溢出
                        Buzzer=0;//响铃
                }
        }
        else
        {
                i=0;//清0
                Buzzer=1;//复位
        }
}
回复

使用道具 举报

10#
ID:282747 发表于 2020-6-29 13:02 来自手机 | 只看该作者
wulin 发表于 2020-6-29 11:22
void Alarm()//延时报警
{
        static unsigned int i=0;//延时计数变量

可能是我描述不清楚,检测到报警信号,拉低io口持续一段时间,定时器可以做延迟时间吗?
回复

使用道具 举报

11#
ID:213173 发表于 2020-6-29 13:16 | 只看该作者
shijie240 发表于 2020-6-29 13:02
可能是我描述不清楚,检测到报警信号,拉低io口持续一段时间,定时器可以做延迟时间吗?

定时器当然可以做延时。检测到报警信号给一个变量赋值,启动定时器在定时器中断中这个变量递减,减到0报警,关定时器。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表