简化单片机的几个基本概念,你都了解吗?
我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令。
那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?
这个地方就是单片机内部的只读存储器即ROM。
<strong>01、单片机数的本质和物理现象</strong>
我们知道,计算机可以进行数学运算,这令我们非常难以理解,它们只是一些电子元器件,怎么可以进行数学运算呢?
我们人类做数学题如37+45是这样子做的,先在纸上写37,然后在下面写45,然后大脑运算最后写出结果,运算的原材料是37和45,结果是82都是写在纸上的,计算机中又是放在什么地方呢?
为了解决这个问题,先让我们来做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用‘0’和‘1’来代替这两种状态:规定亮为‘1’不亮为‘0’。
现在放上三盏灯,一共有几种状态呢?我们列表来看一下:000 / 001 / 010 / 011 / 100 / 101 / 110 / 111。
博客分享:单片机内部FLASH的字节操作
一般32位单片机的内部FALSH是不支持字节操作的,有的可以按字节读取,但是不能按字节写入。
而且,一般单片机内部FALSH擦除的最小单位都是页,如果向某页中的某个位置写入数据,恰好这个位置的前面存了其他数据,那么就必须把这页擦除,存的其他数据也会丢失。
实际上就是说内部的FALSH不好做改写的操作,如果有很多数据需要存放,最好是分页存储。这也是FALSH与E2PROM最大的区别,后者支持按字节操作且无需擦除,即使某一个地址写坏了,也不影响其他地址。
下面介绍一种方法让内部FLASH"支持"字节操作,且同一页的其他数据不受影响。
<strong>方法原理很简单,下面简单介绍下原理:</strong>
1.根据要写入地址,计算出该地址位于哪一页;
2.读出整个页,存入缓存BUF;
3.将要写入的数据按位置更新到BUF中;
4.擦除该页;
5.写入整个BUF。
可以看出这种方法弊端很明显:
1.耗时长 每次写都要读整个BUF,然后还要先把数据存到BUF里,然后再写入整个BUF;
2.FALSH擦写次数增加,降低使用寿命;