51单片机的工作原理详解
扫描二维码
随时随地手机看文章
1.ROM:只读存储器,单片机的只读存储区大多用于存储程序固又称程序存储器。
51单片机是EPROM,所谓的EPROM是可擦除的只读存储器。可以把原来的程序擦除了,再写一个新的进去。
解析51单片机的工作原理
想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。
51单片机与许多单片机的工作原理是一样的它们都遵循冯诺依曼架构,简单来说就是数据区和代码区是区分开来的。在单片机中的具体表现就是数据RAM区和程序ROM区。
我们就要比较广泛的51单片机为例来了解单片机的工作原理。
一、微处理器
主要包括算数逻辑运算单元和控制部件。
先来说ALU,它执行的是单片机的算数工作。逻辑运算单元执行单片机的逻辑运算(如:与、或、非、==、!、!=、同或、异或、||、&&等等)。实际上C语言也是在执行以上这些逻辑运算和数学运算。
至于控制部件,它是控制单片机的程序计数器PC向程序存储器获取指令和操作数的主要部件,在取得操作数之后经过译码和控制电路把相应的指令转换成不同的电控制信号,让ALU、SFR、外设GPIO、ADC、定时器、中断等这些外设能够正常运作。
二、数据存储区
数据存储区是运行系统栈SP和程序局部变量、数组等数据的区域。
上图所示的程序是51单片机毫秒延时函数,局部变量j、i在RAM中的r3和r5寄存器中,入参n在r7寄存器中,R0-R7寄存器组在RAM中,其实左边调试栏中的寄存器均在RAM中运行。总之,RAM是运行数据的地方,而代码(指令)则是存放在ROM区的。
三、程序存储区
程序存储区是存储常量和代码的区域。
如下图所示:在.m51文件中标红箭头处最左边的“C:”的地方表示的是代码在ROM中,“D:”表示数据在RAM中,“B:”则表示位。
从中我们也可以看出main以及Delay_ms这些函数的地址都是存在ROM中的,也就是我们的所说的代码区。总之,C语言编译成机器码后,其指令和常数全局变量等就存储于ROM中了(PS:掉电不丢失的地方)。
四、中断系统
中断就是当中断管脚有外部信号输入的时候(中断管脚可以设置上升沿、下降沿、高电平或者低电平作为触发中断的条件),微控制器接收到这个控制信号后正在执行的任务会暂时停止,去处理中断里面的任务,处理完成中断任务后又继续从原先中断停止的地方继续执行。21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):
分别说明如下:
1、ACC---是累加器,通常用A表示
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表:
下面我们逐一介绍各位的用途
CY:进位标志。
8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0例:78H+97H(01111000+10010111)
AC:辅助进、借位(高半字节与低半字节间的进、借位)。
例:57H+3AH(01010111+00111010)
F0:用户标志位
由用户(编程人员)决定什么时候用,什么时候不用。
RS1、RS0:工作寄存器组选择位
通过修改PSW中的RS1、RS0两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度。对于提高CPU的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中,不需要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用。
0V:溢出标志位
运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。
P:奇偶校验位
它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。