单片机详解

合集下载

单片机常用算法设计详解

单片机常用算法设计详解

单片机常用算法设计详解一、排序算法排序是将一组数据按照特定的顺序进行排列的过程。

在单片机中,常见的排序算法有冒泡排序、插入排序和快速排序。

冒泡排序是一种简单直观的排序算法。

它通过反复比较相邻的两个元素,如果顺序不对则进行交换,直到整个数组有序。

这种算法的优点是实现简单,容易理解,但效率较低,对于大规模数据的排序不太适用。

插入排序的基本思想是将待排序的元素插入到已经有序的部分中。

它从第二个元素开始,将其与前面已排序的元素进行比较,并插入到合适的位置。

插入排序在小规模数据时表现较好,但其平均和最坏情况下的时间复杂度不如快速排序。

快速排序则是一种高效的排序算法。

它选择一个基准元素,将数组分为小于和大于基准元素的两部分,然后对这两部分分别进行快速排序。

快速排序在大多数情况下具有较好的性能,但在最坏情况下可能会退化为 O(n²)的时间复杂度。

在单片机中选择排序算法时,需要根据数据规模和对时间效率的要求进行权衡。

二、查找算法查找是在一组数据中寻找特定元素的过程。

常见的查找算法有顺序查找和二分查找。

顺序查找是从数组的开头依次比较每个元素,直到找到目标元素或遍历完整个数组。

它适用于数据无序的情况,但效率较低。

二分查找则要求数组必须是有序的。

通过不断将数组中间的元素与目标元素进行比较,缩小查找范围,直到找到目标元素。

二分查找的时间复杂度为 O(log n),效率较高,但需要数据有序。

在单片机应用中,如果数据经常需要查找且能保持有序,应优先考虑二分查找。

三、数据压缩算法在单片机系统中,为了节省存储空间和传输带宽,常常需要使用数据压缩算法。

常见的数据压缩算法有哈夫曼编码和 LZW 编码。

哈夫曼编码是一种无损数据压缩算法。

它根据字符出现的频率构建一棵哈夫曼树,然后为每个字符生成唯一的编码。

频率高的字符编码较短,频率低的字符编码较长,从而实现数据压缩。

LZW 编码则是一种字典编码算法。

它通过建立一个字典,将重复出现的字符串用较短的编码表示,从而达到压缩的目的。

单片机的内部结构及工作原理解析

单片机的内部结构及工作原理解析

单片机的内部结构及工作原理解析单片机(Microcontroller)是指集成了中央处理器(CPU)、存储器(ROM、RAM)、输入/输出(I/O)接口和定时器/计数器等功能模块的一种超大规模集成电路。

在现代电子设备中,单片机已经广泛应用于各个领域,如家电、智能设备、汽车电子等。

而了解单片机的内部结构及工作原理,对于进行嵌入式系统开发和电子产品设计具有重要的意义。

一、内部结构单片机主要分为中央处理器(CPU)、存储器、输入/输出接口(I/O)和定时器/计数器等几个主要部分。

1. 中央处理器(CPU):单片机的核心部分是CPU,它负责执行各种指令并控制整个单片机的操作。

CPU主要包括运算器、控制器和时序发生器。

运算器是负责执行各种运算操作的部分,包括算术运算、逻辑运算等。

控制器负责解析和执行指令,控制整个系统的工作。

时序发生器则负责产生各种时钟信号来同步整个系统的工作。

2. 存储器:单片机中的存储器分为可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-Only Memory,ROM)和随机存储器(Random Access Memory,RAM)等几种类型。

PROM用于存储程序代码和常量数据,ROM用于存储不可更改的程序代码和数据,而RAM用于存储临时变量、中间结果等。

存储器的容量和类型取决于单片机的规格和需求。

3. 输入/输出接口(I/O):单片机通过输入/输出接口与外部设备进行数据交换。

输入接口用于接收外部信号或数据,如按键、传感器等。

输出接口用于向外部设备发送信号或数据,如LED灯、液晶显示器等。

单片机通常提供多个通用输入/输出引脚(General Purpose Input/Output,GPIO)来扩展外部设备的连接。

4. 定时器/计数器:定时器和计数器是单片机中重要的功能模块,用于产生精确的时间延迟和计数功能。

定时器用于产生周期性的定时信号,计数器则用于对外部事件的计数。

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解

单片机内部存储器结构与数据存取方法详解单片机是一种集成了处理器、内存和外设等功能于一体的微电子器件,广泛应用于各种电子设备中。

其中,内部存储器是单片机的核心组成部分之一。

本文将详细介绍单片机内部存储器的结构和数据存取方法。

一、单片机内部存储器的结构单片机的内部存储器主要包括随机存取存储器(RAM)和只读存储器(ROM)两部分。

1. 随机存取存储器(RAM)RAM是单片机内部的易失性存储器,用于存储数据、程序临时数据和运行时数据。

单片机内部的RAM可以根据存取速度和使用要求的不同,分为片内RAM 和片外RAM两种。

片内RAM是单片机芯片内部集成的存储器,速度较快。

它可以分为片内可读写RAM(RW-RAM)和片内只读RAM(RO-RAM)两种类型。

片内可读写RAM可以被程序读取和修改,存储媒介是电容或电子触发器。

而片内只读RAM则只能被程序读取,不能被修改。

片内RAM的容量相对较小,一般在几十到几百字节之间。

片外RAM是连接在单片机芯片外部的存储器,速度较慢。

它可以进一步分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)两种类型。

SRAM是基于触发器构建的,数据存储在触发器中,读写速度快且无需刷新。

DRAM则是基于电容构建的,存储数据需要定期刷新,但容量较大。

2. 只读存储器(ROM)ROM是单片机内部的非易失性存储器,用于存储程序和常量数据。

ROM的内容在出厂时就被写入,一般无法被程序修改。

单片机内部的ROM可以分为只读存储器(ROM)和可编程只读存储器(PROM)两种类型。

ROM存储器内容固定不变,其中包含了单片机的初始化程序和系统代码。

PROM存储器则可以通过特殊的编程操作烧写程序和数据,但一旦写入后无法擦除和修改。

这类存储器在生产流程中被用于定制特殊功能的单片机。

二、单片机内部存储器的数据存取方法单片机内部存储器的数据存取方法根据存储器的类型和连接方式而有所不同。

1. RAM的数据存取方法对于片内RAM,数据的存取可以通过直接读写特定的RAM地址来实现。

详解单片机各大分类

详解单片机各大分类

详解单⽚机各⼤分类单⽚机是⼀种集成电路芯⽚,是采⽤超⼤规模集成电路技术把具有数据处理能⼒的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O⼝和中断系统、定时器/计时器等功能(可能还包括显⽰驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到⼀块硅⽚上构成的⼀个⼩⽽完善的微型计算机系统,在⼯业控制领域的⼴泛应⽤。

从上世纪80年代,由当时的4位、8位单⽚机,发展到现在的32位300M的⾼速单⽚机。

单⽚微型计算机简称单⽚机,是典型的嵌⼊式微控制器(Microcontroller Unit)单⽚机芯⽚常⽤英⽂字母的缩写MCU表⽰单⽚机,单⽚机⼜称单⽚微控制器,它不是完成某⼀个逻辑功能的芯⽚,⽽是把⼀个计算机系统集成到⼀个芯⽚上。

相当于⼀个微型的计算机,和计算机相⽐,单⽚机只缺少了I/O设备。

概括的讲:⼀块芯⽚就成了⼀台计算机。

它的体积⼩、质量轻、价格便宜、为学习、应⽤和开发提供了便利条件。

同时,学习使⽤单⽚机是了解计算机原理与结构的最佳选择。

它最早是被⽤在⼯业控制领域。

由于单⽚机在⼯业控制领域的⼴泛应⽤,单⽚机由芯⽚内仅有CPU的专⽤处理器发展⽽来。

最早的设计理念是通过将⼤量外围设备和CPU集成在⼀个芯⽚中,使计算机系统更⼩,更容易集成进复杂的⽽对体积要求严格的控制设备当中。

INTEL的Z80是最早按照这种思想设计出的处理器,当时的单⽚机都是8位或4位的。

其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列单⽚机系统。

因为简单可靠⽽性能不错获得了很⼤的好评。

尽管2000年以后ARM已经发展出了32位的主频超过300M的⾼端单⽚机,直到⽬前基于8031的单⽚机还在⼴泛的使⽤。

在很多⽅⾯单⽚机⽐专⽤处理器更适合应⽤于嵌⼊式系统,因此它得到了⼴泛的应⽤。

事实上单⽚机是世界上数量最多处理器,随着单⽚机家族的发展壮⼤,单⽚机和专⽤处理器的发展便分道扬镳。

现代⼈类⽣活中所⽤的⼏乎每件电⼦和机械产品中都会集成有单⽚机。

单片机的工作过程以及原理

单片机的工作过程以及原理

单片机的工作过程以及原理单片机是一种专用的小型计算机芯片,它集成了处理器核心、存储器和各种外设接口等组成部分。

它广泛应用于嵌入式系统中,是现代电子产品中的重要组成部分。

本文将详细介绍单片机的工作过程和原理。

一、单片机的工作过程:1.初始化阶段:初始化是单片机启动的第一个阶段,其目的是准备单片机所需的各种资源。

在这个阶段,单片机会执行一系列预定义的操作,如清除寄存器、设置工作模式、配置外设接口等。

2.执行阶段:执行阶段是单片机进行计算、控制和通信等任务的阶段。

在这个阶段,单片机根据程序的指令和数据,通过寄存器、算术逻辑单元(ALU)和存储器等功能模块进行计算、存储和控制。

单片机的执行可以分为两个层次:指令层和操作层。

(1)指令层:指令层是单片机执行的最基本单位,包括指令的获取、解码和执行等过程。

指令的获取是指从存储器中读取指令,并将其送入指令寄存器中。

单片机采用顺序读取的方式获取指令,即按照指令的地址从存储器中读取指令,并将地址自动增加,以获取下一条指令。

指令的解码是指根据指令的格式和功能,将其解析成相应的操作。

单片机根据指令的操作码和操作数,通过控制逻辑单元将指令解码成相应的操作。

指令的执行是指根据指令的操作,进行计算、存储和控制等操作。

单片机根据指令的操作码和操作数,通过寄存器和算术逻辑单元进行相应的运算和存储,同时进行控制相关的外设接口。

(2)操作层:操作层是单片机执行的高级单位,包括各种操作的组合和执行过程。

在操作层,单片机根据程序的逻辑和需要,进行各种任务的操作。

例如,单片机可以进行算术运算、逻辑运算、移位运算、存储和读取数据等。

同时,单片机可以通过外设接口与外部设备进行通信和控制。

例如,单片机可以通过串口和计算机进行通信,通过IO口控制LED灯和蜂鸣器等外设。

3.终止阶段:终止阶段是单片机工作的最后阶段,其目的是释放已占用的资源,并保存必要的状态信息。

在这个阶段,单片机会执行一些清理工作,如关闭外设接口、保存相关寄存器的值等。

51单片机基本结构详解

51单片机基本结构详解

51单片机基本结构详解51单片机(也称为8051单片机)是一种8位微控制器,由Intel公司于1980年代推出。

它是目前市场上最广泛使用的低成本单片机之一,被广泛应用于各个领域,包括家电、工业控制、仪器仪表等。

本文将详细介绍51单片机的基本结构。

一、51单片机的总体结构51单片机的总体结构主要分为五个部分,包括中央处理器(CPU)、存储器、IO口、定时器/计数器以及串行通信接口。

1. 中央处理器(CPU)51单片机中心的核心是一个8位的CPU,负责执行指令集中的操作。

它包括一个累加器(Accumulator)用于存放运算结果,以及一组寄存器用于存放操作数和地址。

2. 存储器51单片机的存储器主要包括内部RAM和内部ROM。

内部RAM用于存放程序和数据,容量通常较小,而内部ROM则用于存储不变的程序指令。

3. IO口51单片机提供了多个通用IO口,用于与外部设备进行数据交互。

这些IO口既可以作为输入口用于接收外部信号,也可以作为输出口用于发送信号控制外部设备。

4. 定时器/计数器51单片机内置的定时器/计数器模块可用于产生精确的时间延时和计数应用。

它能够协助实现各种时间相关的功能,如PWM输出、测速和脉冲计数等。

5. 串行通信接口51单片机的串行通信接口可用于与其他设备进行数据的串行传输。

常见的串行通信协议包括UART、SPI和I2C等。

二、51单片机的工作原理51单片机的工作原理可以概括为以下几个步骤:1. 程序存储器中的指令被复制到内部RAM中。

2. CPU从内部RAM中取出指令并执行。

3. 根据指令的要求,CPU可能会与IO口、定时器/计数器或串行通信接口进行数据交互。

4. 执行完指令后,CPU将结果存回内部RAM或IO口。

三、51单片机的应用领域51单片机由于其成本低、技术成熟、易于开发和应用广泛等优点,被广泛应用于各个领域。

1. 家电控制51单片机可以用于家电控制,如空调、洗衣机、电视机等。

单片机的结构及工作原理

单片机的结构及工作原理

单片机的结构及工作原理
单片机是一种集成电路芯片,它由CPU核心、存储器、I/O端口、定时器/计数器、中断控制器以及其他外围电路组成。

单片机的工作原理如下:
1. 开机复位:单片机通电后,会执行复位操作。

当复位信号触发时,CPU会跳转到预定的复位向量地址,开始执行复位操作。

2. 初始化:执行复位操作后,单片机会进行初始化。

这包括设置输入/输出端口的初始状态、初始化定时器和计数器等。

3. 执行指令:一旦初始化完成,单片机会开始执行存储器中的指令。

指令通常存储在Flash存储器中,单片机会按照程序计
数器(PC)的值逐条执行指令。

4. 控制流程:单片机执行程序时会根据条件跳转、循环、分支等控制流程操作来改变指令执行顺序。

5. 处理输入输出:单片机可以从外部设备(如传感器、键盘等)读取输入信号,并根据程序逻辑给出相应的输出信号。

6. 中断处理:单片机具有中断控制功能,可以在特定条件下立即中断当前程序,并执行中断服务程序。

中断通常用于及时响应外界事件。

7. 系统时钟:单片机需要一个时钟源来同步指令和数据的处理。

时钟源可以是外部晶振、内部振荡器或者其他时钟源,它们提供基准频率给单片机。

单片机的工作基于时钟信号和电压供应,控制执行指令、处理输入输出等任务。

通过程序设计和外部电路连接,单片机可以应用于各种领域,如家用电器、自动化控制、通信等。

单片机指令系统及其执行过程的详解

单片机指令系统及其执行过程的详解

单片机指令系统及其执行过程的详解单片机是现代电子设备中不可或缺的组成部分,其指令系统和执行过程对于单片机的工作和性能起着至关重要的作用。

本文将详细介绍单片机指令系统的组成和执行过程,并探讨其在实际应用中的意义。

一、单片机指令系统的组成单片机的指令系统由指令集、寄存器和地址计算单元组成。

1. 指令集指令集是单片机能够执行的所有指令的集合。

它包含了各种不同类型的指令,如算术指令、逻辑指令、数据传输指令等。

不同的单片机具有不同的指令集,但通常都包括基本的算术和逻辑运算指令,以及控制流指令(如条件分支和循环)。

2. 寄存器寄存器是单片机内部用于存储数据和执行运算的存储器组件。

常见的寄存器包括通用寄存器、标志寄存器、程序计数器等。

通用寄存器用于存储临时数据,标志寄存器用于存储运算结果的状态信息,程序计数器用于存储当前正在执行的指令地址。

3. 地址计算单元地址计算单元用于计算指令中的操作数的地址。

它根据指令中的寻址方式和地址模式,将指令中的操作数地址计算出来,并将其传递给存储器或寄存器。

二、单片机指令执行过程单片机的指令执行过程包括指令取指、指令译码和指令执行三个阶段。

1. 指令取指在指令取指阶段,程序计数器(PC)从存储器中读取下一条指令的地址,并将其存储在指令寄存器(IR)中。

同时,PC的值自动递增,准备读取下一条指令。

2. 指令译码在指令译码阶段,单片机将指令寄存器中的指令译码为对应的操作。

根据指令的类型和操作码,单片机确定需要执行的具体操作,如运算、数据传输或控制流操作。

3. 指令执行在指令执行阶段,单片机根据译码结果执行具体的操作。

这包括算术和逻辑运算、数据传输等。

执行结果可以存储在寄存器中,也可以写入存储器。

同时,单片机还会根据程序的控制流进行条件分支或循环。

三、单片机指令系统的应用意义单片机指令系统的优化对于提高单片机的执行效率和性能至关重要。

通过合理设计指令集,可以充分发挥单片机的计算和控制能力,提高其运算速度和响应能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(第六课)上两次我们做过两个实验,都是让P1.0这个管脚使灯亮,我们能设想:既然P1.0能让灯亮,那么其它的管脚可不能呢?看一下,它是8031单片机管脚的说明,在P1.0旁边有P1.1,P1.2….P1.7,它们是否都能让灯亮呢?除了以P1开头的外,还有以P0,P2,P3开头的,数一下,一共是32个管脚,前面我们以学过7个管脚,加上这32个这39个了。

它们都以P字开头,只是后面的数字不一样,它们是否有什么联系呢?它们能不能都让灯亮呢?在我们的实验板上,除了P10之外,还有P11 -> P17都与LED相连,下面让我们来做一个实验,程序如下:MAIN: MOV P1,#0FFHLCALL DELAYMOV P1,#00HLCALL DELAYLJMP MAINDELAY:MOV R7,#250D1:MOV R6,#250D2:DJNZ R6,D2DJNZ R7,D1RETEND将这段程序转为机器码,用编程器写入单片机中,结果如何?通电以后我们能看到8只LED全部在闪动。

因此,P10->P17是全部能点亮灯的。

事实上,凡以P开头的这32个管脚都是能点亮灯的,也就是说:这32个管脚都能作为输出使用,如果不用来点亮LED,能用来控制继电器,能用来控制其它的执行机构。

程序分析:这段程序和前面做过的程序比较,只有两处不一样:第一句:原来是SETB P1.0,现在改为MOV P1,#0FFH,第三句:原来是CLR P1.0,现在改为MOV P1.0,#00H。

从中能看出,P1是P1.0->P1.7的全体的代表,一个P1就表示了所有的这八个管脚了。

当然用的指令也不一样了,是用MOV指令。

为什么用这条指令?看图2,我们把P1作为一个整体,就把它当作是一个存储器的单元,对一个单元送进一个数能用MOV指令。

二、第四个实验除了能作为输出外,这32个管脚还能做什么呢?下面再来做一个单片机实验,源程序如下:MAIN: MOV P3,#0FFHLOOP: MOV A,P3MOV P1,ALJMP LOOP先看一下这个实验的结果:所有灯全部不亮,然后我按下一个按钮,第(1)个灯亮了,再按下另一个按钮,第(2)个灯亮了,松开按钮灯就灭了。

从这个实验现象结合电路来分析一下程序。

从硬件电路的连线能看出,有四个按钮被接入到P3口的P32,P33,P34,P35。

第一条指令的用途我们能猜到:使P3口全部为高电平。

第二条指令是MOV A,P3,其中MOV 已经知道,是送数的意思,这条指令的意思就是将P3口的数送到A中去,我们能把A当成是一个中间单元(看图3),第三句话是将A中的数又送到P1口去,第四句话是循环,就是持续地重复这个过程,这我们已见过。

当我们按下第一个按钮时,第(3)只灯亮了,所以P12口应当输出是低电平,为什么P12口会输出低电平呢?我们看一下有什么被送到了P 1口,只有从P3口进来的数送到A,又被送到了P1口,所以,肯定是P3口进来的数使得P12位输出电平的。

P3口的P32位的按钮被按下,使得P32位的电平为低,通过程序,又使P12口输出低电平,所以P3口起来了一个输入的作用。

验证:按第二、三、四个按钮,同时按下2个、3个、4个按钮都能得到同样的结论,所以P3口确实起到了输入作用,这样,我们能看到,以P字开头的管脚,不仅能用作输出,还能用作输入,其它的管脚是否能呢?是的,都能。

这32个管脚就称之为并行口,下面我们就对并行口的结构作一个分析,看一下它是怎样实现输入和输出的。

并行口结构分析:1、输出结构<并行口结构图>先看P1口的一位的结构示意图(只画出了输出部份):从图中能看出,开关的打开和合上代表了管脚输出的高和低,如果开关合上了,则管脚输出就是低,如果开关打开了,则输出高电平,这个开关是由一根线来控制的,这根数据总线是出自于CPU,让我们回想一下,数据总线是一根大家公用的线,很多的器件和它连在一起,在不一样的时候,不一样的器件当然需要不一样的信号,如某一时刻我们让这个管脚输出高电平,并要求保持若干时间,在这段时间里,计算机当然在忙个不停,在与其它器件进行联络,这根控制线上的电平未必能保持原来的值不变,输出就会发生变化了。

怎么解决这个问题呢?我们在存储器一节中学过,存储器中是能存放电荷的,我们不妨也加一个小的存储器的单元,并在它的前面加一个开关,要让这一位输出时,就把开关打开,信号就进入存储器的单元,然后马上关闭开关,这样这一位的状态就被保存下来,直到下一次命令让它把开关再打开为止。

这样就能使这一位的状态与别的器件无关了,这么一个小单元,我们给它一个很形象的名字,称之为“锁存器”。

2、输入结构这是并行口的一位的输出结构示意图,再看,除了输出之外,还有两根线,一根从外部管脚接入,另一根从锁存器的输出接出,分别标明读管脚和读锁存器。

这两根线是用于从外部接收信号的,为什么要两根呢?原来,在51单片机中输入有两种方式,分别称为‘读管脚’和‘读锁存器’,第一种方式是将管脚作为输入,那是真正地从外部管脚读进输入的值,第二种方式是该管脚处于输出状态时,有时需要改变这一位的状态,则并不需要真正地读管脚状态,而只是读入锁存器的状态,然后作某种变换后再输出。

请注意输入结构图,如果将这一根引线作为输入口使用,我们并不能保证在任何时刻都能得到正确的结果(为什么?)参考图2输入示意图。

接在外部的开关如果打开,则应当是输入1,而如果闭合开关,则输入0,但是,如果单片机内部的开关是闭合的,那么不管外部的开关是开还是闭,单片机接受到的数据都是0。

可见,要让这一端口作为输入使用,要先做一个‘准备工作’,就是先让内部的开关断开,也就是让端口输出‘1’才行。

正因为要先做这么一个准备工作,所以我们称之为“准双向I/O口”。

以上是P1口的一位的结构,P1口其它各位的结构与之相同,而其它三个口:P0、P2、P3则除入作为输入输出口之外还有其它用途,所以结构要稍复杂一些,但其用于输入、输出的结构是相同的。

看图()。

对我们来说,这些附加的功能不必由我们来控制,所以我们就不去关心它了。

(第七课)(通过前面的学习,我们已知单片机的内部有ROM、有RAM、有并行I/O口,那么,除了这些东西之外,单片机内部究竟还有些什么,这些个零碎的东西怎么连在一起的,让我们来对单片机内部的寄存器作一个完整的功能分析吧!下图中我们能看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O 口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在一个51单片机的内部包含了这么多的东西。

<单片机内部结构图>对上面的图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到对应I/O口的锁存器就能了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表1表1<特殊功能寄存器地址映象表(一)><特殊功能寄存器地址映象表(二)><特殊功能寄存器地址映象表(三)>下面,我们介绍一下几个常用的SFR,看图2。

ACC:累加器,常常用A表示。

这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后我们将学到指令,能发现,所有的运算类指令都离不开它。

2、B:一个寄存器。

在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW:程序状态字。

这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们能了解CPU的当前状态,并作出对应的处理。

它的各位功能请看表2表2PSW也称为标志寄存器,了解这个对于了解单片机原理非常的重要,存放各有关标志。

其结构和定义如下:下面我们逐一介绍sfr各位的用途(1)CY:进位标志。

用于表示Acc.7有否向更高位进位。

8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。

这样就没事了。

例:78H+97H(01111000+10010111)(2)AC:辅助进位标志也叫半进位标志。

用于表示Acc.3有否向Acc.4进位例:57H+3AH(01010111+00111010)(3)F0:用户标志位,由我们(编程人员)决定什么时候用,什么时候不用。

(4)RS1、RS0:工作寄存器组选择位。

这个我们已知了。

RS1、RS0 = 00 ——0区(00H~07H)RS1、RS0 = 01 ——1区(08H~0FH)RS1、RS0 = 10 ——2区(10H~17H)RS1、RS0 = 11 ——3区(18H~1FH)(5)0V:溢出标志位。

表示Acc在有符号数算术运算中的溢出,什么是溢出我们稍后再谈吧。

(6)P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。

若为奇数,则P=1,不然为0。

例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。

4、DPTR(DPH、DPL):数据指针,能用它来访问外部数据存储器中的任一单元,如果不用,也能作为通用寄存器来用,由我们自已决定如何使用。

16位,由两个8位寄存器DPH、DPL组成。

主要用于存放一个16位地址,作为访问外部存储器(外RAM和ROM)的地址指针。

5、P0、P1、P2、P3:这个我们已经知道,是四个并行输入/输出口的寄存器。

它里面的内容对应着管脚的输出。

6、SP:堆栈指针。

(专用于指出堆栈顶部数据的地址。

)堆栈介绍:日常生活中,我们都注意到过这样的现象,家里洗的碗,一只一只摞起来,最晚放上去的放在最上面,而最早放上去的则放在最下面,在取的时候正好相反,先从最上面取,这种现象我们用一句话来概括:“先进后出,后进先出”。

请大家想想,还有什么地方有这种现象?其实比比皆是,建筑工地上堆放的砖头、材料,仓库里放的货物,都是“先进后出,后进先出”,这实际是一种存取物品的规则,我们称之为“堆栈”。

在单片机中,我们也能在RAM中构造这样一个区域,用来存放数据,这个区域存放数据的规则就是“先进后出,后进先出”,我们称之为“堆栈”。

为什么需要这样来存放数据呢?存储器本身不是能按地址来存放数据吗?对,知道了地址的确就能知道里面的内容,但如果我们需要存放的是一批数据,每一个数据都需要知道地址那不是麻烦吗?如果我们让数据一个接一个地放置,那么我们只要知道第一个数据所在地址单元就能了(看图2)如果第一个数据在27H,那么第二、三个就在28H、29H了。

相关文档
最新文档