① STC单片机程序会丢失吗
会的,受电源浪涌、电磁干扰等影响,FLASH也会可能出现数据被篡改的可能性。
② 单片机串口通信数据丢失原因
单片机串口通信数据丢失很大一部分原因是:mscomm的inputlen设置设置有问题;
解决方案:
mscomm的inputlen设置为0吧(读取整个缓冲区),读完一次,清空一次缓冲区试试;
参考如下:
窗体初始化事件中建议将mscomm的这几个属性做如下设置:
mscomm.inbuffersize=8 '接收缓冲区大小
mscomm.rthreshold=4 '促发oncomm事件的字符数
mscomm.inputlen=0 '默认读取整个缓冲区
mscomm.inputmode=cominputmodetext '以文本方式接收
mscomm.inbuffercount=0 '清空缓冲区
oncomm事件中,建议处理完接收数据后用mscomm.inbuffercount=0清空缓冲区
③ 换单片机要重新写数据吗
需要。
两种单片机的架构,使用的库,寄存器完全不同。与寄存器配置相关的,时钟相关的代码都要进行修改。
单机片,又称单片微控制器,把一个计算机系统集成到一个芯片上,就成了一台计算机。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。
④ 单片机的串口中断被其他中断打断后 数据会丢失么
通常在中断子程序中都要有保护现场的程序段,对被打断的中断的数据进行保护的。用C语言写程序时会自己加入的。用汇编写程序要自己加保护现场的指令。
如果怕数据丢失,可以设置串口为高级别的中断源,就不能被其它中断打断了。
通常,串口的接收一般用中断,每次中断只接收一个字节,中断程序不要太长,及时保存接收的数据。或者在串口中断时,关掉EA,这样也不会被其它中断所打断。
其实,这些都不必担心,只要做好保护现场,数据是不会丢失的。
⑤ 请教一个菜鸟问题:51单片机用内部数据存储器存储数据时重新上电数据会不会丢失
直接存储是不行的,单片机本身的RAM是掉电就没有的。一般使用EEPROM,常用的有24c01等,采用I2C协议进行读写数据,怎么使用这类芯片的程序网上搜一下能搜出几吨来。可以自己搜索一下,由于你使用的51单片机,可以直接用IO口来模拟I2C协议,很简单的。
需要注意的一点就是,要注意E2P芯片的寿命(一般是读写100万次,足够了)。
存储数据的时候,可以对操作数和存储的数据进行比较,不相等则存储,比如:
if (ReadI2c()!=data)
{ SaveI2c();}
这样可以增加使用寿命,比有些每隔1秒钟进行存储的会好多了。
碰到要存储的是时间的时候,并且是每秒钟存的话,由于寿命的原因,则要另外想办法,常用的有:
1.在掉电瞬间的时候去存储数据,这种方法要硬件上给予检测电路来告知现在掉电了,然后程序就对时间进行存储,这种方法的弊端是“必须要有检测电路”。
2.考虑到上述的问题,可以开辟多块空间来存储“时间”,每次上电依次使用不同的空间,但是为了要有“使用哪一块的判断条件”,所以必须再多一个空间存储“判断”:每次程序开始,将“判断++”,然后根据其来决定使用哪一块的“时间空间”。
/*************************************************************/
希望能有帮助,上述是对掉电记忆来讲比较不错的的方法了。
⑥ 单片机 51的一个项目的参数是放在ram里面的,下次在上电应该数据会丢失啊但是,下面,一定采纳
这是一条 伪指令 设置 setno 变量为 23h,
至于在程序中 怎么使用 这个 setno 变量 是另外回事,
如果在 变量中 存放 一个什么 数据 (这个数据是存放在 23h RAM 中)
你们关闭电源后 过 一段时间 再打开电源 这个变量 中的数据 就不一定 了。
这要看你 单片机 的电 是否 完全 放尽。如果 放尽电后肯定 保存不住的。
⑦ 单片机掉电后存在静态RAM中的数据是否回丢失
一般会丢失,要视乎你用的是什么芯片,如果是51系列的是会丢失的。
⑧ 单片机数据丢失
1、I2C协议没写好,所以,没写正确,这个属于协议层
2、I2C没问题,但在写的时候,没有控制好地址或数据本身,即在调用驱动过程中或调用前参数已经发生了变化而你没有发觉,所以你要好好看看程序,耐心排除BUG
个人感觉,第二种问题居多