只要你有毅力和决心,按照我们的“连载”一步步走下去,未来你一定能遨游单片机的世界。 单片机的组成:单片机如果要自动完成计算,它最重要的部分应该有哪些? 我们以算盘为例,计算一道算术题。 例如:111+109188-19932。 现在要进行计算,首先需要一个算盘,然后是纸和笔。 我们记录下要计算的问题,然后第一步计算109188,加上111并将结果写在纸上,然后计算19932,然后从前面的结果中减去它,得到最终的结果。 。 现在,我们用单片机来完成上述过程。 显然,它首先要有一个代替算盘进行计算的部件,那就是“计算器”; 其次,它必须有一个可以起到纸和笔作用的装置,即它必须能够记住原始问题,原始数据和中间结果也必须被记住,以便单片机能够自动进行计算和编译的各种命令。 这种类型的设备称为“存储器”。 此外,还需要一种可以代替人类的控制器。 它可以根据预先给定的命令发送各种控制信号,从而使整个计算过程逐步进行。 但仅有这三个部分还不够。 需要输入原始数据和命令,输出计算结果。 它们都需要按顺序完成,有时还需要等待。 如上例,计算109188时,数字111不能同时进入运算单元。 因此,有必要在微控制器上设置一个“门”,它根据控制器的命令进行动作,并在运算单元需要时允许新的数据进入。
或者说,当运算器得到最终结果后,就输出结果,中间结果不能随意“溜出”单片机。 这种对输入输出数据进行一定管理的“门”电路在单片机中称为“端口”。 在微控制器中,基本上有三种类型的信息流动。 一类是数据,即各种原始数据(如上例中的111、109等)、中间结果(如从19932得到的商6、余数7等)、程序(程序的集合)命令)等。这样,外部设备通过“端口”进入单片机,然后存储在存储器中。 运算过程中,数据从存储器读入运算器进行运算,运算的中间结果存储在存储器中。 或者最终由操作者通过“入口”输出。 用户想让单片机执行的各种命令(程序)也以数据的形式从存储器发送到控制器,由控制器解释(解码),然后转变成各种控制信号,以便执行诸如如加法、减法、乘法等。 except 等函数的各种命令。 因此,这类信息称为控制命令,即控制器控制运算单元逐步进行计算和处理,并控制存储器的读取(取出数据)和写入(存储数据)。 第三类信息是地址信息,其作用是告诉运算器和控制器从哪里获取命令和数据、将结果存储在哪里以及通过哪个端口输入输出信息等。 半导体存储器存储器工作原理分为只读存储器和读写存储器两种。 前者存储调试好的固定程序和常量,后者存储一些随时可能改变的数据。
顾名思义,数据一旦存储在只读存储器中,就只能读出而不能更改(EPROM、E2PROM等类型的ROM可以通过一定的方法更改和写入数据——编者注)。 读写存储器可以随时存储或读取数据。 存储器的内部结构见下图。 这是半导体存储器的结构图(图中有4个字节)。 存储器的工作原理。 存储器用于存储数据。 其中它实际上是用高电平或低电平来存储数据的,也就是说,它实际上存储的是电平的高电平或低电平状态,而不是我们习惯认为的。 有了这样的结构,我们就可以开始存储数据了,比如我们要放一个像1234这样的数字,那么它是如何工作的呢? 看上面的图片。 这是存储器内部结构示意图。 记忆就像一个小抽屉。 一个小抽屉里有8个,都是单片机。 8位小盒子。 每个小盒子用于存储 1 位电荷。 电荷通过与其连接的电线传输或释放。 至于小盒子里的电荷如何存储,我们不需要担心。 您可以将电线想象成一根小水管。 盒子里的电荷就像水一样。 内存中的一个小抽屉很容易理解。 我们称之为1个单元相当于1个字节,1个小盒子相当于1个比特。 00011010。我们只需要把第2个小盒子里的电荷储存起来,把其他小盒子里的电荷放出去就足够了。 但问题又出现了。 存储器具有许多并行连接的相同单元线。 看看D7-D0。 当充电时,电荷将被释放。 当电荷被释放到所有字节单元中时,每个单元中的电荷将被释放。 在这种情况下,无论内存有多少个字节单元,它只能存储相同的数字。 这当然不是我们想要的,所以我们要在结构上稍作改变,看上图。 每个单元都有一条线连接到解码器。 我想把数据放入哪个单元,我通过解码器向那个单元发送信号,解码器通过这条线。 打开相应的开关,使电荷可以自由进出。 那么可以随意向内存写入或读取数据吗? 其实你不能继续看上图。 还有另一根连接到 D7-D0。 控制器是用来做什么的? 该线称为写/读控制线。 当我们向内存写入数据时,首先要把这个开关切换到写入端。 当我们要读取数据时,首先要切换开关。 读出端和片选端是为了区分不同的内存设置。 如果你不明白也没关系。 稍后会有介绍。 首先,让我们看一下解码器的工作原理。 半导体存储器的解码简介。 我们知道1根线可以代表2种状态,2根线可以代表4种状态,3根线可以代表8256种状态,那么需要多少根线才能代表呢? 想一想,是否是8内存片选和总线的概念。 这就是解码的问题。 解决了,我们来关注另一个问题。 每个字节发送 8 个以连接到存储器。 除了连接其他设备,问题又来了。 由于这8根线在存储器和微控制器之间并不是专用的,如果总是有某个单元连接到这8根线的话,就无法工作。 例如,这个内存单元中的值为11111111,另一个内存单元中的值为00000000。那么无论这条线是高电平还是低电平,我们都必须将它们分开。 方法当然很简单。 当外部导线连接到集成电路的引脚时,它们并不直接连接到各个单元。 而是在中间添加了一组开关。 这组开关就是上面提到的控制器。 看上一张图,我们通常让开关如果确实要向这个内存写入数据或者从内存中读取数据,那么就把开关切换到相应的位置。 这组开关由三根引线组成,分别选择读控制端、写控制端和片选端。 写数据时,控制器首先选择芯片,然后发出相应的写信号。 将开关切换到相应的位置,传输的数据电荷被写入芯片。 如果要读取读信号,则先选择芯片,然后发出读信号。 开关也切换到相应的位置。 数据是在“如果有冲突,会同时选择两个内存吗?”的位置发出来的。 只要系统设计得好,就不会发生这种情况。 如果确实同时选择了两个存储器,则电路有故障。 这8条线路不是专用的,而是被许多设备共享的。 所以我们称它们为数据总线。 公交车的英文名称是BUS。 任何人都可以在行车道上行走。 微控制器中有16条地址线51。 这些将在后面解释。 没有必要死记硬背它们。 它们也连接在一起。 我们称它们为地址总线。 看上图,似乎向内存写入或读取数据并不容易。 幸运的是,这些都是计算机自动完成的,不需要我们操心。 从上面的介绍,我们已经了解了如何使用。 CPU是单片机传输数据的主要处理中心。 事实上,人们常常将运算单元和控制器结合起来,称之为中央处理器——CPU。
单片机除了执行计算之外,还需要完成控制功能。 所以计数和计时是密不可分的。 因此,在微控制器中设置了定时器和计数器。 至此,我们已经知道了单片机的基本组成部分,即单片机是由中央处理器(即CPU中的运算单元和控制器)、只读存储器(通常表示为ROM)、读写存储器(又称随机存储器(通常表示为RAM)、输入/输出端口(又分为并行口和串行口,表示为I/O口)等。其实还有一个单片机内部有时钟电路,它可以让单片机有节奏地进行运算和控制,另外还有所谓的“中断系统”,它起到“通讯室”的作用,当单片机控制对象的参数达到某个值时,当需要干预的状态时,可以通过这个“通讯室”通知给CPU,以便CPU根据外部事件的优先级采取适当的响应措施。现在我们知道了单片机的组成部分,剩下的问题是如何将它们的各个部分连接成一个相互关联的整体? 其实,单片机内部有一条“纽带”将它们连接起来,就是所谓的“内部总线”。 这条总线就像一座大城市的“主干线”,CPU、ROM、RAM、I/O端口、中断系统等分布在这条“总线”的两侧并与其相连。 因此,所有的指令和数据都可以通过内部总线进行传输,就像大城市中的各种物品通过主干道进行传输一样。
单片机的指令系统和汇编语言程序:我们已经描述了单片机的几个主要部件,它们构成了单片机的硬件。 所谓硬件,就是看得见、摸得着的实体。 然而,仅靠这样的硬件,就只有实现计算和控制功能的可能。 单片机要真正能够进行计算和控制,还必须有软件的配合。 软件主要指各种程序。 只有将各种正确的程序“填充”(存储)到单片机中才能有效地工作。 单片机之所以能够自动进行计算和控制,正是因为人们用步骤以命令的形式一步步实现计算和控制,即指令(Instructions)预先存储在存储器中,单片机是在CPU的控制下进行的。 接下来,将指令一一拿出来,翻译并执行。 对于两个数字相加的简单操作,当要操作的数字已存储到内存中后,需要执行以下步骤: 第 1 步:将第一个数字从其存储单元(Location)中取出,并将其发送给操作员。 步骤2:从所在存储单元中取出第二个数,送入运算单元; 第三步:添加; 第四步:将相加结果发送到指定的内存单元。 所有这些获取、发送、添加、存储等都是一个操作(Operation)。 我们以命令的形式写下计算机需要执行的各种操作。 这是一个指令。
但如何识别并执行这些操作呢? 这是由设计者在设计单片机时给它的指令系统决定的。 一条指令对应一个基本操作; 单片机所能执行的所有指令都是单片机的指令系统(Iustruction Set)。 不同类型的微控制器有不同的指令系统。 让我们重点关注数据、地址和指令之间的差异。 刚学的时候特别难区分:数据、地址、指令:之所以把这三者放在一起,是因为这三者的本质是同一个数字,或者说都是“0”和的序列“1”。 换句话说,地址和指令也是数据。 命令:微控制器芯片设计者指定的数字。 它与我们常用的命令助记符有着严格的一一对应关系,单片机的开发者无法更改。 地址:是查找单片机内外存储单元和输入输出端口的依据。 内部单元的地址值已经由芯片设计者指定,不能更改。 外部单元可以由微控制器开发人员确定,但有一些地址单元。 是必须的(具体参见程序的执行过程)。 数据:这是微处理器处理的对象,在不同的应用电路中数据有所不同。 一般来说,正在处理的数据可能有几种情况:1个地址(如MOVDPTR,#1000H),即地址1000H(相当于门牌号)发送到DPTR。 2为模式字或控制字(如MOV TMOD、#03H),3为控制字。