单片机是如何烧录程序的(单片机烧录不了程序怎么回事)

单片机(Micro Control Unit):全称微型控制单元,简称单片机(MCU),从字面意思我们可以了解到,它就是一个微型的计算机系统。然后我们下面通过比较来了解下它为什么时一个微型计算机系统。

单片机是如何烧录程序的(单片机烧录不了程序怎么回事)

电脑主板

我们首先来看下我们熟悉的电脑主板,可能有人会问,我是来学单片机的,你给我介绍主板干嘛?我们这里是用主板来做一个类比,我们看了上面一大堆东西,估计很多人用了很长时间的也不知道单片机和代码是怎么回事。

电脑主板块包CPU,北桥,南桥;其中南桥下面主要掌管着这些低速设USB,PCI,SATA,BIOS等外设。

"CPU"

CPU之所以加了引号是因CPU指的是中央处理单元,而我们手机的处理器不仅仅只有中央处理功能。CPU,GPU,5GWIFI模组,还有人工智APU;对比下主板是不是发现有什么共同点。没错,手机处理器将这些外设全部集成到一个芯片里面去了,其实像现在最CPU也是朝着这个方向做的,目前已经有很CPU把显卡集成进去了。

有时候我们其实用不到CPU和手机处理器这么强悍的性能和诸多功能,我只要控制I/O、串口通信等。那些不要的东西给它裁剪掉,加上简单的计算单元,然后把它的可靠性提高。这样就形成了单片机。

单片机内部组成

51单片机同样包CPU8051内核)SRAM()可怜1K,闪()也只有区区的几K,然后外围的模块基本就是下载代码用ISPEEPROM,看门狗,复位模块,串口模块,中断模块,基本输入输I/O模块。

因为单片机主要应用在一些对价格比较敏感的领域,所以这类单片机种类也比较多,51是我们常用的单片机,主要应用的场合有数码家(洗衣机,电饭锅,电磁炉,微波),工业现场数据采集与传输等,但是随着它的价格优势下降和易上手程度,慢慢的市场32位单片机被取代STM3251单片机的内部结构复杂很,51有的东西它都有,并且51更强大51单片机没有的模块它也有,调试功能模块RTC模块USB模块CAN总线模块ADCSPII2C

单片机是如何工作的?

先举一个例子:我们要住宾馆,我们是通过什么来找到你要住地方,那就是房间号,因为房间号是酒店预先编好的。然后我们就可以通过唯一的房间号,找到这个房间。

单片机也一样,我们所有的外设都是挂在单片机的可以访问的地址上,我们要对单片机进行预先定义地址,不然我们就找不到哪个设备对应那个地址,也就没办法操作。其实单片机地址是我们虚构出来的,为了便于实际使用中的方便而已。

CPU如何执行程序的?

1、我们先来看下两位全加器

A = 01B = 1H

B = 11B = 3H

A + B = 1 + 3 = 4 = 100B

2、那么数字电路是如何进行加减乘除运算的?

注意:我们这里不考虑一些特殊的情况,我8位数最大能表示的数255,所以只考虑数值小255的情况,更深入的探讨大家可以去寻找更专业的资源学习。

加法运算:

假设我们要进8+13运算:

十进制运算8+13= 21

二进制运算0000 1000 + 0000 1101 = 00010101

减法运算:

加法是进位,减法需要考虑的则是借位,小学时对加减法的经验是这样的,但是计算机不是这么处理的。计算机只有加法,没有减法。那 int a = b – c怎么得出来结果的呢?首先要了解一个概——补码

计算机中对于有符号数,用最高位作为符号位0+1;其余数位用作数值位,代表数值。比 Byte类型的取值范围 -128 ~ 127。其中,表示数值的只 7位,首位表示正负。

补码规定,正数 0的补码就是其原码(原码、反码的定义这里就不多赘述),负数的补码是其正数的原码取反再 1

举个例子,求 -10的补码:十进 10的原码( 8位举例) 0000 1010,其反码 1111 0101,取反后再 1即为其补1111 0110。因此,10的补码 1111 0110

不知道写到这里,大家有没有发现什么端倪?我们再回到减法计算来a = b – c实际上等同a = b + ( -c )

1,减>被减数

12 – 5= 0000 1100 + 1111 1011= (1)0000 0111= 7乘法的流程。

·5 * 3 = 0000 0101 * 0000 0011

·第一步5 + 5 = 10

·00000 0101 + 0000 0101 = 0000 1010

·第二步10 + 5 = 15

·0000 0101 + 0000 1010 = 0000 1111

CPU中有乘法器,但是我们发现实际的最终操作流程还是加法和位移操作计算的乘法运算。我们写的代码中的乘法到底是用乘法器运算还是转化成加法运算,我们也并不太确定,有些编译器编译的时候会对代码进行优化,选取最优的一种算法来计算结果。

除法运算:

除法可以通过减法来实现,比10 / 3等价10一直3直到被减数小 3,减 3次,那10 / 3的结果就3了,余数为减完剩下的1

其实上面已经提到了乘法器,除法的原理同样也类似(这里不说浮点数的除法,只说整数的除法),但是稍微复杂一点。

晶振在单片机中是起什么作用?

上面的运算,我们都是通过手动的方式来进行的我们知道数字电路本身是不工作的,它也不能工作,否则电路就会出乱子,它必须依赖其它电路产生的高低电平才能驱动它工作,我们把这种有规律的高低电平定为脉冲,单片机也是数字电路,它又是怎么工作的?我们必须要有一个能源源不断产生脉冲的电路,它才能持续不断的工作下去,这也就是晶振在单片机电路中为什么被称作的原因,我们把这去掉,相应的整个单片机系统也会罢工。

为什么有些单片机没有晶振?我们知道单片机工作只要有持续不断的脉冲输入就行,我们有些场合对单片机没有精确的时间要求,所以一般使用内部自带的振荡器为单片机提的时钟脉冲也能确保单片机正常工作,所以在有些地方我们就看不到晶振。那是因为内部自带RC振荡电路。

复位CPU执行程序需要有一个初始状态,通过复位可以进入到一个初始状态。这样单片机知道自己的起始位置,它才能按照既定的方式运行程序。

本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回我要入,与我们一起成长,喜欢的可以点个赞关注我们!

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 sumchina520@foxmail.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.dasum.com/159696.html