0

单片机的寄存器有哪些(通用20篇)

浏览

5185

文章

29

篇1:标志寄存器的概念

全文共 2760 字

+ 加入清单

首先说一下标志寄存器概念。在8086cpu中标志寄存器都是16位的,而其中存储的信息被称为程序状态字(一段包含系统状态的内存或者是硬件区域)。标志寄存器既然是寄存器,那么它也是用来存储信息的,只是它存储信息的方式与其他的寄存器不同而已。其他的寄存器是一个寄存器包含一个信息,而标志寄存器则可以包含多个信息。而标志寄存器之所以可以存储多个信息,是因为它的存储方式。在标志寄存器中,信息是被存储在位中的。标志寄存器中的每一个位都可以代表特定的信息。

这是我在网上找的一个标志寄存器的示意图。通过这张图片我们可以知道在标志寄存器中,哪些是用到的,哪些是没用到的。我就不在赘述了。接下来我们看一下这些位的具体含义。

CF(carry flag):进位标志位。这个位是在进行无符号数运算的时候用到的。一般情况下,这个位记录了进行无符号运算的时候,运算结果的最高有效位向更高位的进位值,或从更高位的借位值。注意的是,这里的进位与借位,都是相对于二进制而言的。下面我们再找一张图来加深下理解。

PF(parity flag):奇偶标志位。这个位的判断需要我们将结果转为二进制来看,如果结果的低8位中有偶数个1,就将PF的值置1;如果是奇数个1,就置0。要注意的是一定是结果的低8位。

PF,奇偶标志位,flag的第2位记录相关指令执行后,其结果所有bit位中1的个数是否为偶数,若为偶数,则PF=1;若为奇数,PF=0.

执行

mov al,00000000b

add al,00000111b

mov al,00000000b

add al,00000011b

验证:

AF(auxiliary flag):辅助进位标志位。这个位用的不多,所以书上也没有讲,我就简单的查了一下资料。这个位表示加减法做到一半时有没有形成进位/借位,如果有则AF=1。这么说谁都听不懂,所以我们举个例子来说下。例如 MOV AL,00001110 MOV BL,00001000 ADD AL,BL 最后结果为AL=00010110这就是低四位向高四位进位。反之在减法中第三位不够减向第四位借位(注意数位是从第0位开始数的)叫低四位向高四位借位!像前面的AL中前四位为高四位,后四位为低四位。例如,当两个字节相加时,如果从低4位向高4位有进位时,则AF=1。

ZF(zero flag):零标志位。这个位就很简单了,判断结果是不是0。如果结果为0,就置1;不为0,就置0。

执行

mov ax,1

sub ax,1

mov ax,2

sub ax,1

可以看到 当计算ax结果为0时,ZF是ZR=1;结果为1(不为0)时,ZF是NZ=0.

SF(sign flag):符号标志位。既然是符号标志位,就是对有符号数据来说的。如果结果为负,就置1;结果为正,就置0。

SF,符号标志位,flag的第7位,记录相关指令执行后,其结果是否为负,若为负,则SF=1;若为非负,SF=0.

执行:

mov al,10000001b

add al,1

mov al,10000000b

add al,01111111b

验证:

当SF=1即为NG,表示:若指令进行有符号数运算,则结果为负

当SF=0即为PL,表示: 若指令进行有符号数运算,则结果为非负

TF(timer overblow flag):定时器溢出标志。这个位主要是用来在debug中进行-t指令时使用的。当cpu在执行完一条指令后,如果检测到TF位的值为1,则产生单步中断,引发中断过程。通过这个位,我们就可以在debug中对程序进行单步跟踪。

IF(interrupt flag):中断允许标志位。当IF=1时,cpu在执行完当前指令后响应中断,引发中断过程;当IF=0时,则不响应可屏蔽中断。

DF(direcTIon flag):方向标志位。在串处理指令中,控制每次操作后,si(指向原始偏移地址)、di(指向目标偏移地址)的增减。当DF=0时,每次操作后,si、di递增;DF=1时,每次操作后,si、di递减。我们可以使用cld指令将DF的值置为0,使用std指令将DF的值置为1。DF需要与rep、movsb等指令配合使用。

OF(overflow flag):溢出标志位。这个位是用来判断有没有溢出的。注意溢出这个概念只对于有符号数据而言,就如同进位只对于无符号数据而言。当OF=0时,说明没有溢出;当OF=1时,说明溢出了。

OF,溢出标志位,flag的第11位,超出机器所能表示的范围称为溢出若发生了溢出OF=1,若没有则OF=0

比如对于8位有符号数据,机器能表示范围是 -128~127;对于16位有符号数据,范围是 -32768~32767

执行:

mov al,64

add al,64

mov al,63

add al,64

验证:

下面有几个串传送指令

格式:movsb

功能:执行movsb指令相当于进行下面几步操作。

1) ((es)*16+(di)) = ((ds)*16+(si))

2) 如果df=0 则 (si)=(si)+1 (di)=(di)+1

如果df=1则: (si)=(si)-1 (di)=(di)-1

当然也可以传送一个字

格式:movsw

功能:将ds:si指向的内存单元中的字送入es:di中,然后根据标志寄存器df位的值,将si和di递增2或递减2.

movsb和movsw进行的是串传送操作中的一个步骤,一般来说,movsb和movsw都和rep配合使用,格式如下:

rep movsb

rep功能:根据cx的值,重复执行后面的串传送指令。由于每执行一次movsb指令si和di都会递增或递减指向后一个单元或前一个单元,则rep movsb就可以循环实现(cx)个字符的传送。

8086CPU提供下面两条指令对df位进行设置。

cld指令: 将标志寄存器的df位置0

std指令: 将标志寄存器的df位置1

1)编程,用串传送指令,将data段中的第一个字符串复制到它后面的空间中。

data segment

db ‘welcome to masm!’

db 16 dup (0)

data ends

code segment

mov ax,data

mov ds,ax

mov si, 0

mov es,ax

mov di,16

mov cx,16

cld

rep movsb

code ends

end

2)编程,用串传送指令,将F000段中的最后16个字符复制到data段中。

data segment

db 16 dup (0)

data ends

code segment

mov ax,0f000h

mov ds,ax

mov si, 0ffffh

mov ax,data

mov es,ax

mov di, 15

mov cx, 16

std

rep movsb

code ends

end

展开阅读全文

篇2:cc2530寄存器

全文共 941 字

+ 加入清单

CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB 的闪存。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短进一步确保了低能源消耗。

CC2530F256 结合了德州仪器的业界领先的黄金单元ZigBee 协议栈(Z-Stack™),提供了一个强大和完整的ZigBee 解决方案。

CC2530F64 结合了德州仪器的黄金单元RemoTI,更好地提供了一个强大和完整的ZigBee RF4CE 远程控制解决方案。

CLKCONCMD:时钟频率控制寄存器

D7位为32KHZ时间振荡器选择,,0为32KRC震荡,1为32K晶振。默认为1。

D6位为系统时钟选择。0为32M晶振,1为16M RC震荡。当D7位为0时D6必须为1。

D5~D3为定时器输出标记。000为32MHZ,001为16MHZ,010为8MHZ,011为4MHZ,100为2MHZ,101为 1MHZ,110为500KHZ,111为250KHZ。默认为001。需要注意的是:当D6为1时,定时器频率最高可采用频率为16MHZ。

D2~D0:系统主时钟选择:000为32MHZ,001为16MHZ,010为8MHZ,011为4MHZ,100为2MHZ,101为1MHZ,110为500KHZ,111为250KHZ。当D6为1时,系统主时钟最高可采用频率为16MHZ。

CLKCONSTA:时间频率状态寄存器。

D7位为当前32KHZ时间振荡器频率。0为32KRC震荡,1为32K晶振。

D6位为当前系统时钟选择。0为32M晶振,1为16M RC震荡。

D5~D3为当前定时器输出标记。000为32MHZ,001为16MHZ,010为8MHZ,011为4MHZ,100为2MHZ,101为 1MHZ,110为500KHZ,111为250KHZ。

IEN0:中断使能0,0为中断禁止,1为中断使能

IEN1:中断使能1,0为中断禁止,1为中断使能

IEN2:中断使能2,0为中断禁止,1为中断使能

展开阅读全文

篇3:单片机的应用领域有哪些

全文共 316 字

+ 加入清单

单片机也称为单芯片微控制器,不是执行某种逻辑功能的芯片,而是将计算机系统集成到单个芯片上。下面给大家说说单片机的应用领域有哪些

操作方法

1

单片机广泛用于医疗设备,例如医用呼吸机,各种分析仪,监视器,超声诊断设备和床呼叫系统。

2

在工业测控领域,一些测量系统通常由单片机构成,可实现工业领域的智能数据采集和处理,并可显示多功能数字显示和宽屏 范围自动切换。取代我们传统的模拟显示器等。

3

家用电器广泛用于单片机控制,从电饭煲,洗衣机,冰箱,空调,彩电,其他音频和视频设备,到电子称重设备和白色家电。

4

单片机广泛用于汽车电子,例如汽车中的发动机控制器,基于CAN总线的汽车发动机的智能电子控制器,GPS导航系统,ABS防抱死制动系统,制动系统和轮胎压力检测。

展开阅读全文

篇4:单片机八个流水灯左右依次点亮

全文共 179 字

+ 加入清单

操作方法

1

首先,打开proteus,可以看到界面上方有"库",点开,在库里选择做实验需要的元件。

2

如图所示,我们做流水灯实验所需要的元件,就是红色方框里面的元件,一定都要添加进来,要不然实验就做不成功。

3

接着,我们按照电路原理图,排布好元件,连好线,最后的电路如图所示。

4

我们把实验代码插入单片机,然后点击界面左下角的开始按钮,就可以运行电路。

5

如图所示,八个流水灯依次点亮。

展开阅读全文

篇5:寄存器与缓存的区别

全文共 2400 字

+ 加入清单

寄存器缓存的区别

这里的缓存是指的CPU的缓存。

按与CPU远近来分,离得最近的是寄存器,然后缓存,最后内存。

所以,寄存器是最贴近CPU的,而且CPU只与寄存器中进行存取。

(寄存的意思是,暂时存放数据,不中每次从内存中取,它就是一个临时放数据的空间,火车站寄存处就是这个意思)

而寄存器的数据又来源于内存。于是 CPU《---》寄存器《-----》内存 这就是它们之间的信息交换。

那为什么有缓存呢?

因为如果老是操作内存中的同一址地的数据,就会影响速度。于是就在寄存器与内存之间设置一个缓存。

缓存就把从内存提取的数据暂时保存在里面,如果寄存器要取内存中同一位置的东西,就不用老远巴巴地跑到内存中去取,直接从缓存中提取。

因为从缓存提取的速度远高于内存。当然缓存的价格肯定远远高于内存,不然的话,机器里就没有内存的存在,只有缓存的存在了,但如果全是缓存,相信没有几个人买 得起计算机了。

由此可以看出,从远近来看: CPU〈------〉寄存器〈----》缓存《-----》内存

注意一下,寄存器并不每次数据都可以从缓存中取得数据,万一不是同一个内存地址中的数据,那寄存器还必须

直接绕过缓存从内存中取数据。所以并不每次都得到缓存中取数据,这就是缓存的命中率,从缓存中取就命中,不从缓存中取从内存中取,就没命中。当然关于缓存命中率又是一门学问,哪些留在缓存中,哪些不留在缓存中,都是命中的算法。

从经济和速度的综合考虑,又有了一级缓存和二级缓存,当然一级缓存价格远高于二级缓存,它们的作用类似,但速度上一级缓存速度明显高于二级缓存,因为价格的原因就设置了二级缓存,也不知道将来 会不会能三级缓存呢?

磁盘缓存和内存缓存的区别

内存缓存

高速缓存(英语:cache,英语发音:/kæʃ/ kash [1][2][3],简称缓存),其原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。

原理

Cache一词来源于1967年的一篇电子工程期刊论文。其作者将法语词“cache”赋予“safekeeping storage”的涵义,用于电脑工程领域。

当CPU处理数据时,它会先到Cache中去寻找,如果数据因之前的操作已经读取而被暂存其中,就不需要再从随机存取存储器(Main memory)中读取数据——由于CPU的运行速度一般比主内存的读取速度快,主存储器周期(访问主存储器所需要的时间)为数个时钟周期。因此若要访问主内存的话,就必须等待数个CPU周期从而造成浪费。

提供“缓存”的目的是为了让数据访问的速度适应CPU的处理速度,其基于的原理是内存中“程序执行与数据访问的局域性行为”,即一定程序执行时间和空间内,被访问的代码集中于一部分。为了充分发挥缓存的作用,不仅依靠“暂存刚刚访问过的数据”,还要使用硬件实现的指令预测与数据预取技术——尽可能把将要使用的数据预先从内存中取到缓存里。

CPU的缓存曾经是用在超级计算机上的一种高级技术,不过现今电脑上使用的的AMD或Intel微处理器都在芯片内部集成了大小不等的数据缓存和指令缓存,通称为L1缓存(L1 Cache即Level 1 On-die Cache,第一级片上高速缓冲存储器);而比L1更大容量的L2缓存曾经被放在CPU外部(主板或者CPU接口卡上),但是现在已经成为CPU内部的标准组件;更昂贵的CPU会配备比L2缓存还要大的L3缓存(level 3 On-die Cache第三级高速缓冲存储器)。

概念的扩充

如今缓存的概念已被扩充,不仅在CPU和主内存之间有Cache,而且在内存和硬盘之间也有Cache(磁盘缓存),乃至在硬盘与网络之间也有某种意义上的Cache──称为Internet临时文件夹或网络内容缓存等。凡是位于速度相差较大的两种硬件之间,用于协调两者数据传输速度差异的结构,均可称之为Cache。

地址镜像与变换

主条目:CPU缓存#组相联

由于主存容量远大于CPU缓存的容量,因此两者之间就必须按一定的规则对应起来。地址镜像就是指按某种规则把主存块装入缓存中。地址变换是指当按某种镜像方式把主存块装入缓存后,每次访问CPU缓存时,如何把主存的物理地址(Physical address)或虚拟地址(Virtual address)变换成CPU缓存的地址,从而访问其中的数据。

缓存置换策略

主条目:CPU缓存#置换策略、分页和缓存文件置换机制

主存容量远大于CPU缓存,磁盘容量远大于主存,因此无论是哪一层次的缓存都面临一个同样的问题:当容量有限的缓存的空闲空间全部用完后,又有新的内容需要添加进缓存时,如何挑选并舍弃原有的部分内容,从而腾出空间放入这些新的内容。解决这个问题的算法有几种,如最久未使用算法(LRU)、先进先出算法(FIFO)、最近最少使用算法(LFU)、非最近使用算法(NMRU)等,这些算法在不同层次的缓存上执行时拥有不同的效率和代价,需根据具体场合选择最合适的一种。

磁盘缓存

磁盘缓存

16MB缓冲区的硬盘

磁盘缓存(Disk Buffer)或磁盘快取(Disk Cache)实际上是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。

磁盘缓存是为了减少CPU透过I/O读取磁盘机的次数,提升磁盘I/O的效率,用一块内存来储存存取较频繁的磁盘内容;因为内存的存取是电子动作,而磁盘的存取是I/O动作,感觉上磁盘I/O变得较为快速。

相同的技巧可用在写入动作,我们先将欲写入的内容放入内存中,等到系统有其它空闲的时间,再将这块内存的资料写入磁盘中。

大小

现在的磁盘通常有32MB或64MB缓存。旧的硬盘则有8MB或16MB。

展开阅读全文

篇6:什么是单片机

全文共 1173 字

+ 加入清单

对于单片机可能很多人还并不是很了解,其实单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备,下面详细介绍下什么是单片机。

什么是单片机?单片机的定义:

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等.

什么是单片机?应用分类:

单片机(Microcontrollers)作为计算机发展的一个重要分支领域,根据发展情况,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。

通用型

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

什么是单片机?应用范围:

单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

展开阅读全文

篇7:单片机和嵌入式的区别是什么

全文共 471 字

+ 加入清单

单片机是计算机发展的一个重要分支领域,一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心。接下来,我们一起来了解单片机和嵌入式的区别是什么吧。

一、硬件组成的区别:

单片机是在一块集成电路芯片中包含了微控制器电路,集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。

嵌入式系统是可以用单片机实现,也可以用其它可编程的电子器件实现。

二、应用对象的区别:

嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。

嵌入式系统就是一个专用系统。专用系统中,可编程器件的软件可以在系统构建过程中植入,也可以在器件制造过程中直接生成,以降低制造成本。控制逻辑复杂的单片机会需要操作系统软件支持;控制逻辑简单的嵌入式系统也可以不用操作系统软件支持。

展开阅读全文

篇8:一文看懂8086CPU寄存器的特点和作用

全文共 5371 字

+ 加入清单

8086数据寄存器介绍

通用寄存器

在8086CPU中,通用寄存器有8个,分别是AX,BX,CX,DX,SP,BP,SI,DI

下面介绍这几个通用寄存器:

数据寄存器(AX,BX,CX,DX):

数据寄存器有AX,BX,CX,DX四个组成,

由于在8086之前的CPU为8位CPU,所以为了兼容以前的8位程序,在8086CPU中,每一个数据寄存器都可以当做两个单独的寄存器来使用,由此,每一个16位寄存器就可以当做2个独立的8位寄存器来使用了。

AX寄存器可以分为两个独立的8位的AH和AL寄存器;

BX寄存器可以分为两个独立的8位的BH和BL寄存器;

CX寄存器可以分为两个独立的8位的CH和CL寄存器;

DX寄存器可以分为两个独立的8位的DH和DL寄存器;

除了上面4个数据寄存器以外,其他寄存器均不可以分为两个独立的8位寄存器;

注意在上面标志中的“独立”二字,这两个字表明AH和AL作为8位寄存器使用时,可以看做它们是互不相关的,也就是看做两个完全没有联系的寄存器X和Y即可,比如指令MOVAH,12H,CPU在执行时根本就不会知道AL中是什么鬼东西,因为它只认识AH。

下面给出一幅16位数据寄存器的结构图:

表示16位寄存器AX可以表示成两个8位寄存器,

其中AH表示高位的8位寄存器,AL表示低位的8位寄存器。

AX寄存器:

如上所说,AX的另外一个名字叫做累加寄存器或者简称为累加器,其可以分为2个独立的8位寄存器AH和AL;

在写汇编程序时,AX寄存器可以说是使用率最高的寄存器(不过,总共才那么14个寄存器,哪一个不经常使用咯?),既然AX是数据寄存器的话,那么理所当然,其可以用来存放普通的数据,由于其是16位寄存器,自然也就可以存放16位数据,但是因为其又可以分为2个独立的8位寄存器AH和AL,所以,在AH和AL中又可以独立的存放2个8位的数据,可以有以下代码(即将AX当做普通的寄存器使用,即可以用来暂存数据):

MOVAX,1234H;向寄存器AX传入数据1234H

MOVAH,56H;向寄存器AX的高8位寄存器AH中传入数据56H

MOVAL,78H;向寄存器AX的低8位寄存器AL中传入数据78H

3条语句的执行过程如下:

而既然AX又被称作为累加器,自然其还有一点点特殊的地方的:

AX寄存器还具有的特殊用途是在使用DIV和MUL指令时使用,DIV在8086CPU中是除法指令,而在使用除法的时候有两种情况,即除数可以是8位或者是16位的,而且除数可以存放在寄存器中或者是内存单元中,而至于被除数的话,自然,应该由AX来代替了,当除数是8位时,被除数一定会是16位的,并且默认是放在AX寄存器中,而当除数是16位时,被除数一定是32位的,因为AX是16位寄存器,自然,放不下32位的被除数,所以,在这里还需要使用另一个16位寄存器DX,其中DX存放32位的被除数的高16位,而AX则存放32位的被除数的低16位,同时,AX的作用还不仅仅是用来保存被除数的,当除法指令执行完成以后,如果除数是8位的,则在AL中会保存此次除法操作的商,而在AH中则会保存此次除法操作的余数,当然,如果除数是16位的话,则AX中会保存本次除法操作的商,而DX则保存本次除法操作的余数。

上面介绍的是AX寄存器在除法操作中的应用,下面还需要介绍一下AX在乘法操作中的应用,

当使用MUL做乘法运算时,两个相乘的数要么都是8位,要么都是16位,如果两个相乘的数都是8位的话,则一个默认是放在AL中,而另一个8位的乘数则位于其他的寄存器或者说是内存字节单元中,而如果两个相乘的数都是16位的话,则一个默认存放在AX中,另一个16位的则是位于16的寄存器中或者是某个内存字单元中。

同时,当MUL指令执行完毕后,如果是8位的乘法运算,则默认乘法运算的结果是保存在AX中,而如果是16位的乘法运算的话,则默认乘法运算的结果有32位,其中,高位默认保存在DX中,而低位则默认保存在AX中。

AX寄存器在DIV指令中的使用:

MOVDX,0H;设置32位被除数的高16位为0H

MOVAX,8H;设置32位被除数的低16位为8H

MOVBX,2H;设置16位除数为2H

DIVBX;执行计算

4条语句的执行过程如下:

AX寄存器在MUL指令中的使用:

MOVAX,800H;设置16位乘数为800H

MOVBX,100H;设置16位乘数为100H

MOVDX,0H;清空用来保存乘法结果的高16位

MULBX;执行计算

BX寄存器:

首先可以明确的是,BX作为数据寄存器,表明其是可以暂存一般的数据的,即在某种程度上,它和AX可以暂存一般性数据的功能是一样的,其同样为了适应以前的8位CPU,而可以将BX当做两个独立的8位寄存器使用,即有BH和BL,除了暂存一般性数据的功能外,BX作为通用寄存器的一种,BX主要还是用于其专属功能–寻址(寻址物理内存地址)上,BX寄存器中存放的数据一般是用来作为偏移地址使用的。

在8086CPU中,CPU是根据《段地址:偏移地址》来进行寻址操作的,而BX中存放的数据表示的是偏移地址的话,自然,便可以通过《段地址:[BX]》的方式来完成寻址操作了。

为了介绍BX在寻址当中的作用,下面我给出一副示意图:

上面的示意图表示:可以令BX=2,然后通过DS:[BX]来访问到内存中段地址为DS,且偏移量为2的内存单元了。

上面介绍的这种寻址方式是BX在寻址中最最简单的应用了,而对于稍微复杂的寻址方式,

还可以依赖于SI,DI,BP等寄存器来一起完成。

BX寄存器在寻址中的使用:

MOVBX,5H

MOVAH,11H

MOVAH,[BX];设置AX的值为偏移地址为BX中的值时所代表的内存单元

3条语句的执行过程如下:

从上图可以看出,在偏移地址为5时的内存单元中的数据位BBH,

而从这幅图上面就可以看出,确实通过[BX]找到了偏移地址为5处的内存单元,并且将内存单元移入了AH中。

CX寄存器:

CX寄存器作为数据寄存器的一种呢,其同样具有和AX,BX一样的特点,即可以暂存一般性的数据,同时还可以将其当做两个独立的8位寄存器使用,即有CH和CL两个8位寄存器,当然,CX也是有其专门的用途的,CX中的C被翻译为CounTIng也就是计数器的功能,当在汇编指令中使用循环LOOP指令时,可以通过CX来指定需要循环的次数,而CPU在每一次执行LOOP指令的时候,都会做两件事:

一件就是令CX=CX–1,即令CX计数器自动减去1;

还有一件就是判断CX中的值,如果CX中的值为0则会跳出循环,而继续执行循环下面的指令,当然如果CX中的值不为0,则会继续执行循环中所指定的指令。

CX寄存器在循环中的使用(输出5个白底蓝字的A):

MOVAX,0B800H

MOVDS,AX;使用80x25彩色字符模式,内存地址0xB8000-0xBFFFFF

MOVBX,0;从0xB8000开始

MOVCX,5H;循环5次

MOVDX,41H;A的16进制为41H

MOVAX,01110001B;显示白底蓝字

s:MOV[BX],DX;显示ASCII字符

ADDBX,1

MOV[BX],AX;设置字符显示属性

ADDBX,1

LOOPs

语句的执行过程如下:

DX寄存器:

DX寄存器作为数据寄存器的一种,同样具有和AX,BX,CX一样的特点,即可以暂存一般性的数据,同时还可以将其当做两个独立的8位寄存器使用,极有DH和DL,同时,DX作为一个通用寄存器的话,关于DX在其他方面的用途,当在使用DIV指令进行除法运算时,如果除数为16位时,被除数将会是32位,而被除数的高16位就是存放在DX中,而且执行完DIV指令后,本次除法运算所产生的余数将会保存在DX中,同时,在执行MUL指令时,如果两个相乘的数都是16位的话,那么相乘后产生的结果显然需要32位来保存,而这32位的结果的高16位就是存放在DX寄存器中。

DX寄存器在DIV指令中的使用(即2293812/256=8960余数为52):

MOVDX,0023H;32位被除数的高16位

MOVAX,0034H;32位被除数的低16位

MOVBX,100H;16的除数

DIVBX

语句的执行过程如下:

可以看到在语句结束以后,AX=2300H即十进制的8960,而DX=34H即十进制的52和我们的结果是一致的。

8086CPU各类寄存器特点及用途

8086有14个16位寄存器,这14个寄存器按其用途可分为通用寄存器、指令指针、标志寄存器和段寄存器等4类。

1、通用寄存器

通用寄存器有8个,又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个)。

数据寄存器分为:

AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。

BH&BL=BX(base):基址寄存器,常用于地址索引;

CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器。

DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位:AH,BH,CH,DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。

另一组是指针寄存器和变址寄存器,包括:

SP(StackPointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;

BP(BasePointer):基址指针寄存器,可用作SS的一个相对基址位置;

SI(SourceIndex):源变址寄存器可用来存放相对于DS段之源变址指针;

DI(DesTInaTIonIndex):目的变址寄存器,可用来存放相对于ES段之目的变址指针。

这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。

2、指令指针IP(InstrucTIonPointer)

指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(OffsetAddress)或有效地址(EA,EffectiveAddress)。

3、标志寄存器FR(FlagRegister)

8086有一个18位的标志寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。

OF:溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

DF:方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。

IF:中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:

(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;

(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

TF:跟踪标志TF。该标志可用于程序调试。TF标志没有专门的指令来设置或清楚。

(1)如果TF=1,则CPU处于单步执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将要执行的下一条指令。

(2)如果TF=0,则处于连续工作模式。

SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

ZF:零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

AF:下列情况下,辅助进位标志AF的值被置为1,否则其值为0:

(1)、在字操作时,发生低字节向高字节进位或借位时;

(2)、在字节操作时,发生低4位向高4位进位或借位时。

PF:奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

CF:进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。)

4、段寄存器(SegmentRegister)

为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:

CS(CodeSegment):代码段寄存器;

DS(DataSegment):数据段寄存器;

SS(StackSegment):堆栈段寄存器;

ES(ExtraSegment):附加段寄存器。

当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。

展开阅读全文

篇9:ade7758与单片机连接电路

全文共 1883 字

+ 加入清单

ADE7758是一款功能先进的数字电能表芯片,它与单片机PIC16F877 、LCD模块、电源等构成的一种多费率电子电能表电路。

ADE7758 是一种高精确度三相电能测量 IC,带有一个串行口,两路脉冲输出。ADE7758 集成了数字积分、参考基准电压源、温度敏感元件等,有可用于有功功率、复功率、视在功率、有效值的测量以及以数字方式校正系统误差(增益、相位和失调等)所必须的信号处理电路。该芯片适用于各种三相电路(不论三线制或者四线制)中测量有功功率、复功率、视在功率。 来自电流传感器和电压传感器的电压信号经信号放大 PGA1,PGA2 和模数变换 ADC 转换为对应的数字信号,

然后,电流信号经电流通道内的高通滤波器 HPF 滤除 DC 分量并数字积分后,与经相位校正 Φ 的电压信号相乘,产生瞬时功率;此信号经低通滤波 LPF2 产生瞬时有功功率信号;各相功率相加得到总的三相瞬时有功功率,经 DOUT 引脚输出。视在功率和复功率的计算与此类似。

ADE7758 有六路模拟量输入,分成电流和电压两个通道。 流通道由三对差分电压输入,分别是 IAP,IAN;IBP,IBN;ICP,ICN。这三个电流通道最大的信号电压变化范围为±0.5V。电流通道有一个可编程增益放大器(PGA1),放大器增益为 1,2 或 4。除了 PGA 功能外,用于 A/D 转换时,通道 1 还具有输入信号满刻度选择的功能。前面提到了,最大输入电压变化范围为±0.5V,利用增益寄存器的 3 和 4 位,ADC 的输入电压可以设置为±0.5V,±0.25V,±0.125V。这是利用 ADC 的基准参考端来实现的。

ade7758内部结构图

电压通道具有三路单端电压输入通道,分别为VAP,VBP和VCP。这些单电压输入端的最大输入电压变化范围为±0.5V。相对于VN来说,电流和电压通道都有一个PGA(可编程放大器),增益为1,2或4,由用户编程来决定,所有的输入通道的增益相同。

ADE7758提供系统的校正功能如:有效值偏移的校正、相位和功率的校正等等。引脚APCF的逻辑输出给出了有功功率的信息,引脚VARCF的输出提供了瞬时复功率和视在功率的信息。ADE7758具有一个波形取样寄存器,其值来自于ADC的输出。波形采样部分集成有一个用于短时持续低电平或高电平的监测电路,门槛电平和持续时间是由用户编程来决定的。三相中的任一相过零监测是同步进行的,过零监测的结果可用于测量三路电压输入中任一路的周期。

ADE7758的所有功能都是通过读、写片上寄存器来实现的,即ADE7758的各种设定和操作主要是对其众多寄存器的读和写。每个寄存器在读、写时,首先要执行一个写通信寄存器的操作,然后开始传输数据。 电能表的测控命令和测量信息可以多种方式与MCU通讯。MCU输入的命令字控制着ADE7758的工作模式、测量模式、波形采样模式、有效值偏差补偿量和中断模式等。例如:每相的电流通道在信号通路中都有一个乘法器。电流波形可以改变±50%,这主要是由写入12位有符号电流波形增益寄存器(AIGAIN,BIGAIN ,CIGAIN)中的2进制数决定的:如果7FFH写入这三个寄存器,则ADC的输出标定值将增加50%;如果800H被写入,则输出减小50%。

接口电路用来实现ADE7758与单片机的数据通信,一方面可以通过SPI口进行计量芯片ADE7758的初始化,另一方面ADE7758把数据处理的结果以脉冲形式或SPI口送出,供单片机进行计量处理。

ade7758与单片机连接电路

数据通过ADE7758 的SPI 串行接口读取。中断请求输出(IRQ)为开漏极,低电平有效。在ADE7758 中出现一个或多个中断事件时,IRQ输出变为低电平。通过状态寄存器显示中断事件的性质。ADE7758采用24引脚小外形封装(SOIC)。

ADE7758通过串口相连啊,就是连到芯片上的CS、DIN、SCLK、DOUT口。

ADE7758具有一个内置的SPI接口。它与MCU的串行接口由SCLK、DIN、DOUT和CS 四个信号来完成。当IRQ输出变为低电平时,MCU的ISR必须对中断状态寄存器进行读操作,以确定中断源。在对状态寄存器的内容进行读操作时,IRQ的输出在第一个字节传送的最后一个SCLK下降沿上被设定为高电平(对中断状态寄存器读出的命令)。直到下一次8位传送的最后一位(中断状态寄存器的内容)被移出之前,IRQ输出都保持高电平,若这时中断尚未决定,则IRQ输出将再次变为低电平。若没有任何中断处于等待状态,则IRQ输出将保持高电平。

展开阅读全文

篇10:8086CPU有哪些寄存器 各有什么用途

全文共 2755 字

+ 加入清单

8086概述

8086微处理器是Intel公司推出的第三代CPU芯片,它们的内部结构基本相同,都采用16位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的40脚双列直插组件(DIP)中。

8086CPU的编程结构

编程结构:是指从程序员和使用者的角度看到的结构,亦可称为功能结构。如图2-1所示是8086CPU的内部功能结构。

从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecuTIonUnit)。

(1)执行部件(EU)

功能:负责指令的执行。

组成:包括①ALU(算术逻辑单元)、②通用寄存器组和③标志寄存器等,主要进行8位及16位的各种运算。

(2)总线接口部件(BIU)

功能:负责与存储器及I/O接口之间的数据传送操作。具体来看,完成取指令送指令队列,配合执行部件的动作,从内存单元或I/O端口取操作数,或者将操作结果送内存单元或者I/O端口。

组成:它由①段寄存器(DS、CS、ES、SS)、②16位指令指针寄存器IP(指向下一条要取出的指令代码)、③20位地址加法器(用来产生20位地址)和④6字节(8088为4字节)指令队列缓冲器组成。

(3)8086BIU的特点

①8086的指令队列分别为6/4个字节,在执行指令的同时,可从内存中取出后续的指令代码,放在指令队列中,可以提高CPU的工作效率。

②地址加法器用来产生20位物理地址。8086可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16位,因此需要由一个附加的机构来计算出20位的物理地址,这个机构就是20位的地址加法器。

例如:CS=0FE00H,IP=0400H,则表示要取指令代码的物理地址为0FE400H。

(4)BIU与EU的动作协调原则

总线接口部件(BIU)和执行部件(EU)按以下流水线技术原则协调工作,共同完成所要求的信息处理任务:

①每当8086的指令队列中有两个空字节,或BIU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。

②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。

③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。

从上述BIU与EU的动作管理原则中,不难看出,它们两者的工作是不同步的,正是这种既相互独立又相互配合的关系,使得8086可以在执行指令的同时,进行取指令代码的操作,也就是说BIU与EU是一种并行工作方式,改变了以往计算机取指令→译码→执行指令的串行工作方式,大大提高了工作效率,这正是8086获得成功的原因之一。

(5)8086CPU内部寄存器

8086内部的寄存器可以分为通用寄存器和专用寄存器两大类,专用寄存器包括指针寄存器、变址寄存器等。

①通用寄存器

8086有4个16位的通用寄存器(AX、BX、CX、DX),可以存放16位的操作数,也可分为8个8位的寄存器(AL、AH;BL、BH;CL、CH;DL、DH)来使用。其中AX称为累加器,BX称为基址寄存器,CX称为计数寄存器,DX称为数据寄存器,这些寄存器在具体使用上有一定的差别,如表2-1所示。

②指针寄存器

系统中有两个16位的指针寄存器SP和BP,其中SP是堆栈指针寄存器,由它和堆栈段寄存器SS一起来确定堆栈在内存中的位臵;BP是基数指针寄存器,通常用于存放基地址。

③变址寄存器

系统中有两个16位的变址寄存器SI和DI,其中SI是源变址寄存器,DI是目的变址寄存器,都用于指令的变址寻址方式。

④控制寄存器

IP、标志寄存器是系统中的两个16位控制寄存器,其中IP是指令指针寄存器,用来控制CPU的指令执行顺序,它和代码段寄存器CS一起可以确定当前所要取的指令的内存地址。顺序执行程序时,CPU每取一个指令字节,IP自动加1,指向下一个要读取的字节;当IP单独改变时,会发生段内的程序转移;当CS和IP同时改变时,会产生段间的程序转移。

标志寄存器的内容被称为处理器状态字PSW,用来存放8086CPU在工作过程中的状态。

⑤段寄存器

系统中共有4个16位段寄存器,即代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。这些段寄存器的内容与有效的地址偏移量一起,可确定内存的物理地址。通常CS划定并控制程序区,DS和ES控制数据区,SS控制堆栈区。

(6)处理器状态字PSW

8086内部标志寄存器的内容,又称为处理器状态字PSW。其中共有9个标志位,可分成两类:一类为状态标志,一类为控制标志。其中状态标志表示前一步操作(如加、减等)执行以后,ALU所处的状态,后续操作可以根据这些状态标志进行判断,实现转移;控制标志则可以通过指令人为设臵,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。

PSW中各标志位的安排如图2-2所示,这些标志位的含义如下:①状态标志:6个

CF—进位标志位,做加法时最高位出现进位或做减法时最高位出现借位,该位臵1,反之为0。

PF—奇偶标志位,当运算结果的低8位中l的个数为偶数时,则该位臵1,反之为0。AF—半进位标志位,做字节加法时,当低四位有向高四位的进位,或在做减法时,低

四位有向高四位的借位时,该标志位就臵1。通常用于对BCD算术运算结果的调整。(例:11011000+10101110=110000110其中AF=1,CF=1)

ZF—零标志位,运算结果为0时,该标志位臵1,否则清0。

SF—符号标志位,当运算结果的最高位为1,该标志位臵1,否则清0。即与运算结果的最高位相同。

OF—溢出标志位,OF溢出的判断方法如下:

加法运算:

若两个加数的最高位为0,而和的最高位为1,则产生上溢出;若两个加数的最高位为1,而和的最高位为0,则产生下溢出;两个加数的最高位不相同时,不可能产生溢出。

减法运算:

若被减数的最高位为0,减数的最高位为1,而差的最高位为1,则产生上溢出;若被减数的最高位为1,减数的最高位为0,而差的最高位为0,则产生下溢出;被减数及减数的最高位相同时,不可能产生溢出。

如果所进行的运算是带符号数的运算,则溢出标志恰好能够反映运算结果是否超出了8位或16位带符号数所能表达的范围,即字节运算大于十127或小于-128时,字运算大于十32767或小于-32768时,该位臵1,反之为0。

展开阅读全文

篇11:基于单片机的蓝牙装置自动控制无线电台设计

全文共 1242 字

+ 加入清单

目前无线电台工作的方式均为单工方式,用户在使用过程中必须按下PTT开关才能进行收发的切换,这给用户造成了一定的麻烦和不便,如何能将用户的双手解放出来,利用一个有效装置自动控制无线电台的发送和接收是一个亟待解决的问题。无线蓝牙技术是一个可以在10m范围内进行有效通信的成熟技术,将蓝牙技术应用在单工方式工作的无线电台中,利用话音激活方式,用户讲话时控制电台PTT按键自动发送,从而实现了无线电台的自动控制。

本文以此为思路,通过研究无线蓝牙,设计和实现了将蓝牙和无线电台结合的电台自动控制装置,从而有效将用户的双手解放出来。给出了基于蓝牙装置自动控制无线电台的整个设计和实现过程,通过P89C58单片机和CMX5683及蓝牙装置实现了对无线电台的自动控制,应用在出租车上大大解放了司机的双手。

1 无线蓝牙及CMX683简介

无线蓝牙技术是一种新的无线通信技术,它通过无线发送和接收实现数据、话音等的可靠传输,它的通信范围一般在10 m范围内,是比较成熟的一项技术,目前广泛应用在手机、个人电脑等领域。CMX683芯片是一个在公用电话网中用来检测过程音的专用芯片,采用先进的DSP数字处理技术,无需任何软件设置,硬件连接后当输入相应的拨号音、忙音、回铃音等公用信令音后,该芯片就会在相应的端子中输出高电平,因此只需要通过检测和监测对应端的电平值就可以判断出此时的过程状态,也可以方便地实现话音的激活状态。

2 控制装置的具体实现

该装置不仅仅要实现电台之间的互相对通,还要实现对用户按键及DTMF信号的识别与处理,因此在设计时,要考虑到蓝牙装置的整体实现,也要考虑DTMF信号处理及话音激活的处理,这里采用了单片机、CMX683芯片、蓝牙发送和接收模块协调一致地完成了整个装置设计。

2.1 自动控制装置的硬件组成

来自对端的无线电台装置用户呼入,该装置要进行转发,设计时还要求远端用户能进行DTMF信号的发送,转发各振铃指示信号等,同时当用户讲话时,蓝牙模块能根据用户的话音控制PTT按钮,将电台的发送端自动接通,其硬件组成框图如图1所示。

该装置一般工作在接收的状态,蓝牙接口模块处在发送的状态,当远端的电台呼叫用户时,用户就可以通过电台接口和蓝牙接口接听到远端用户的话音,同时,该装置可以通过DTMF模块来判断来自电台的呼叫请求(如摘机)信号,单片机控制电话接口模块模拟摘机,将二线信号给CMX683处理,判断如果是话路空闲,那么启动该发送端给对端用户一个空闲指示音,该用户可以拨打对方的电话号码。在发送端,当用户通过蓝牙装置发送时,该装置接收到用户蓝牙的无线信号后,通过单片机来控制PTT按键,从而接通整个装置的发送通路,将话音发送出去。

2.2 自动控制装置软件设计

无线通信部分主要是设计蓝牙部分的发送和接收,图2给出了发送方的无线接收通信部分流程图。

主程序的C语言设计如下:

3 结语

整个系统设计结构简单,运行稳定可靠,有效拓展了无线电台的使用性能,同时可以应用在所有无线电台中,使用前景广阔。

展开阅读全文

篇12:烟雾传感器怎么和单片机连接

全文共 338 字

+ 加入清单

在正常情况下,受光器件是接收不到发光器件发出的光的,因而不产生光电流。在发生火灾时,当烟雾进入检测室时,由于烟粒子的作用,使发光器件发射的光产生漫射,这种漫射光被受光器件接收,使受光器件的阻抗发生变化,产生光电流,从而实现了烟雾信号转变为电信号的功能,探测器收到信号然后判断是否需要发出报警信号。因此,我们在日常生活中还需掌握烟雾传感器相关知识。以下来看烟雾传感器怎么和单片机连接

查一下烟雾传感器MQ2的工作原理,看看输出什么电压信号,如果是5V开关量就可以直接接到5V单片机的IO口。如果不是就考虑用三极管等放大。VCC接到单片机的5v上,GND直接接地,然后DO端(也就是输出端)随便接单片机的一个I/O口就可以,对这个I/O口进行高低电平的采样,就可以判断烟雾状况了。

展开阅读全文

篇13:单片机原理及应用是什么

全文共 258 字

+ 加入清单

单片机主要由运算器、控制器和寄存器三大部分构成。单片机现已渗透到我们日常生活中的各个领域,小到家用电器、仪器仪表,大到医疗器械、航空航天。比如单片机已广泛应用于发动机控制器、GPS导航系统、ABS防抱死系统、制动系统中。

还可以使用单片机构成多种多样的控制系统,如工厂流水线的智能化管理、电梯智能化控制、各种报警系统、与计算机联网构成二级控制系统等。

单片机采用超大规模集成电路技术,原理是把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM等功能集成到一块硅片上构成的一个小而完善的微型计算机系统。

展开阅读全文

篇14:不运用单片机和控制器如何驱动VGA显示器

全文共 583 字

+ 加入清单

VGA接口作为最常用的视频显示接口,可能是创客们最熟悉的接口之一了,但是对于很多只运用8位单片机的朋友来说,这个接口看起来又是最与之“绝缘”的接口。其主要原因就在于,想要驱动VGA接口的数据量过大,很多8位的单片机不具有这么快的速度为其提供数据。想要实现一块二十年前的显卡,现在看起来也不是一件非常简单的问题!

不过,如果不把思路局限在单片机中,而是只要以驱动VGA显示器为目标的话,实际上运用更加简单的方式就能够实现。比如Marcel的思路:他运用纯粹的逻辑门芯片和大容量的EEPROM来构成电路,形成了一块驱动VGA显示器的驱动板。而且工作起来一切正常!

信号之后则是帧信息。如果你已经知道了你所要显示的内容的话,那么你需要做的就只是以一定的速度向数据线中“泵”入数据。而Marcel的做法就基于这样的原理:运用两片并行的EEPROM分别储存RGB和帧信息,并通过一个由简单的电阻网络构成的DAC输出。输出信号直接送给VGA接口。至于时序,他通过几片74系列的计数器电路产生。标准时钟则来自于25.175MHz的晶振。

通过这样的规划,他成功的驱动了VGA显示器并显示出了图像,而整个规划甚至小到一块面包板即可承载。其实这个过程就有点像是由控制器所控制的DMA过程,数据直接由储存器送至输出端口。其实电子就是那么简单,只要正确的时间,正确的数据出现在正确的位置上即可!

展开阅读全文

篇15:寄存器和存储器的区别

全文共 1412 字

+ 加入清单

寄存器存储器、内存的区别

从范围来看,它们所指的范畴不一样。

寄存器是中央处理器内的组成部份。它跟CPU有关。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

存储器范围最大,它几乎涵盖了所有关于存储的范畴。寄存器,内存,都是存储器里面的一种。凡是有存储能力的硬件,都可以称之为存储器,这是自然,硬盘更加明显了,它归入外存储器行列,由此可见——。

内存既专业名上的内存储器,它不是个什么神秘的东西,它也只是存储器中的沧海一粟,它包涵的范围也很大,一般分为只读存储器和随即存储器,以及最强悍的高速缓冲存储器(CACHE),只读存储器应用广泛,它通常是一块在硬件上集成的可读芯片,作用是识别与控制硬件,它的特点是只可读取,不能写入。随机存储器的特点是可读可写,断电后一切数据都消失,我们所说的内存条就是指它了。

CACHE是在CPU中速度非常块,而容量却很小的一种存储器,它是计算机存储器中最强悍的存储器。由于技术限制,容量很难提升,一般都不过兆。

寄存器和存储器的区别

存储器在CPU外,一般指硬盘,U盘等可以在切断电源后保存资料的设备,容量一般比较大,缺点是读写速度都很慢,普通的机械硬盘读写速度一般是50MB/S左右。内存和寄存器就是为了解决存储器读写速度慢而产生的多级存储机制,从20世纪50年代开始,磁芯存储器曾一度成为主存的主要存储介质,但从20世纪70年代开始,逐步被半导体存储器所取代,目前的计算机都是用半导体存储器。现在的DDR2内存的读写速度一般为6~8GB/S,跟机器性能也有关系。

而寄存器(又称缓存)一般是指由基本的RS触发器结构衍生出来的D触发,就是一些与非门构成的结构,一般整合在CPU内,其读写速度跟CPU的运行速度基本匹配,但因为性能优越,所以造价昂贵,一般好的CPU也就只有几MB的2级缓存,1级缓存更小。使用寄存器可以缩短至零长度、节省存储空间,提高指令的执行速度。不同的寄存器有不同的作用,如:通用寄存器(GR)用以存放操作数、操作数的地址或中间结果;指令寄存器(IR)用以存放当前正在执行的指令,以便在指令执行的过程中,控制完成一条指令的全部功能。

CPU计算时,先预先把要用的数据从硬盘读到内存,然后再把即将要用的数据读到寄存器。最理想的情况就是CPU所有的数据都能从寄存器里读到,这样读写速度就快,如果寄存器里没有要用的数据,就要从内存甚至硬盘里面读,那样读写数据占的时间就比CPU运算的时间还多的多。所以评价一款CPU的性能除了频率,缓存也是很重要的指标。

从根本上讲,寄存器与RAM的物理结构不一样。 一般寄存器是指由基本的RS触发器结构衍生出来的D触发, 就是一些与非门构成的结构,这个在数电里面大家都看过; 而RAM则有自己的工艺,一般1Bit由六MOS管构成。所以, 这两者的物理结构不一样也导致了两者的性能不同。寄存器 访问速度快,但是所占面积大。而RAM相反,所占面积小, 功率低,可以做成大容量存储器,但访问速度相对慢一点。

1、寄存器存在于CPU中,速度很快,数目有限;存储器就是内存,速度稍慢,但数量很大;计算机做运算时,必须将数据读入寄存器才能运算。

2、存储器包括寄存器,存储器有ROM和RAM寄存器只是用来暂时存储,是临时分配出来的,断电,后,里面的内容就没了

展开阅读全文

篇16:PT2262单片机解码思路和原理

全文共 2712 字

+ 加入清单

PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。

编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。

当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。

单片机解码思路

红外线经一体化接收模块解码后送到单片机的外部中断0,单片机设置外部中断下降沿触发(即外部中断0为跳变沿触发方式,从高到低的负跳变触发进入中断处理函数进行解码操作);

首先我们把T0设置为16位定时器模式,工作在定时状态,初始化值为0,在晶振的工作频率为11.0592MHz时计满最大值计数值的时间为:71111us。由于同步码周期与地址数据周期都远小于定时器0的定时时间,所在定时器0正常工作时,是不会溢出的;

T1用作延时,设置其定时为1ms(本示例中没有用到T1功能);

在EX0=1(外部中断0启动)并且EA=1(使能所有中断)后,当下降沿到来时进入到中断处理函数,T0在TR0的控制下启动与停止计时;

当接收到下降沿后,先判断当前的电平状态,检测到是低电平时则把T0计时器归零开始计数低电平的时间宽度,电平状态发生变化时停止计数。取TH0和TL0之和即可根据该低电平的时间宽度值来识别是否为同步码。只有先识别出同步码,才开始接收后续脉冲数据进行24位解码操作。

判断电平宽度,检测是否为同步码时,事实上超过10ms即有可能为同步码。初步找出同步码后,根据同步码低电平宽度取得宽脉冲低电平宽度值,根据同步码低电平宽度取得窄脉冲低电平宽度值,由上面的PT2262编码格式图可以看出,同步码低电平持续时间是宽脉冲低电平持续时间的32倍,是窄脉冲低电平持续时间的10(或11)倍,后续的24位数据的宽、窄脉冲低电平持续时间宽度进行比较,满足一定的范围时,即可解析出发射端送出的编码。那么实现PT2262解码原理是什么呢?一起来了解一下。

单片机实现PT2262解码原理

1、ASK调制:

“幅移键控”又称为“振幅键控”,也有称为“开关键控”(通断键控),所以又记作OOK信号。ASK是一种相对简单的调制方式。幅移键控(ASK)相当于模拟信号中的调幅,只不过与载频信号相乘的是二进制数码而已。幅移就是把频率、相位作为常量,而把振幅作为变量,信息比特是通过载波的幅度来传递的。二进制振幅键控(2ASK), 由于调制信号只有0或1两个电平,相乘的结果相当于将载频或者关断,或者接通,它的实际意义是当调制的数字信号为“1”时,传输载波;当调制的数字信号为“0”时,不传输载波。一般载波信号用余弦信号,而调制信号是把数字序列转换成单极性的基带矩形脉冲序列,而这个通断键控的作用就是把这个输出与载波相乘,就可以把频谱搬移到载波频率附近。

2、几个周期:

2.1、时钟周期:也称为振荡周期或晶振周期,定义为时钟频率的倒数,即晶振的振荡频率的倒数,计为:T(时)=1/f(osc)。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us。

2.2、状态周期:状态周期是振荡周期的二倍。振荡周期也称为晶振周期,振荡周期是单片机的基本时间单位。振荡脉冲经二分频成为时钟信号,时钟信号的周期称为状态周期。若时钟晶振的振荡频率为fosc,则时钟信号的状态周期Tosc=(1/fosc)*2。(即为振荡频率的倒数的2倍)。例如:晶振频率为12MHZ,则时钟周期Tosc=(1/12us)*2。

2.3、机器周期:单片机的基本操作周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。一个操作周期内,单片机完成一项基本操作。

2.4、指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。

综上所述:一个机器周期 = 6个状态周期 = 12个时钟周期。

3、位码:

红外编码波形的基本单位,为分AD(地址码、数据码)位和SYNC(同步码)位,每“位”波形由两个脉冲周期构成,每个脉冲周期含有16个时钟周期。位码使用两个脉冲信号表示一个编码值,其中,两个连续窄脉冲表示编码值“0”;两个连续宽脉冲表示编码值“1”;一个窄脉冲和一个宽脉冲表示“F”,也就是地址码的“悬空”。即每个位码bit用2bit表示:00 或01或10表示0码;11表示1码。

如下图所示,编码芯片PT2262发出的编码信号经过整形电路之后得到的脉冲波形图。由:地址码、数据码、同步码组成。地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”; 两个宽脉冲表示“1”; 一个窄脉冲和一个宽脉冲表示“F”,也就是地址码的“悬空”;同步码为时间较长的低电平间隔,下图为PT2262编码图:

如上图,发射端每发送一次信号都会携带多组编码字码,每段编码字码值相同,二进制值为0B010101010101010100001100,对应的十六进制码值为:0x55550C。从图中可以看出,发送码的周期是相等的,只是脉冲宽度不同(宽脉冲与窄脉冲之比为3:1)。而同步码的低电平时间约为这个周期的8倍。

解码的关键是识别同步码,然后对后面的字码的脉冲宽度进行识别,就可以解出这个编码。PT2262每次发射时至少发射4组字码,每组字码由25个脉冲组成,前24个脉冲为地址和数据,最后一个脉冲和一低电平间隔组成同步码。

展开阅读全文

篇17:什么是Register Pressure寄存器不足 /

全文共 268 字

+ 加入清单

什么是Registerpressure寄存器不足) / Register Renaming(寄存器重命名)?

Register Pressure(寄存器不足) 软件算法执行时所需的寄存器数目受到限制。对于X86处理器来说,寄存器不足已经成为了它的最大特点,因此AMD才想在下一代芯片K8之中,增加寄存器的数量。

Register Renaming(寄存器重命名) 把一个指令的输出值重新定位到一个任意的内部寄存器。在x86架构中,这类情况是常常出现的,如:一个fld或fxch或mov指令需要同一个目标寄存器时,就要动用到寄存器重命名。

展开阅读全文

篇18:计算机中内存、cache和寄存器之间的关系

全文共 3321 字

+ 加入清单

寄存器cache)是CPU内部集成的,内存是挂在CPU外面的数据总线上的,访问内存时要在CPU的寄存器(Cache)填上地址,再执行相应的汇编指令,这时CPU会在数据总线上生成读取或写入内存数据的时钟信号,最终内存的内容会被CPU寄存器(Cache)的内容更新(写入)或者被读入CPU的寄存器(Cache)(读取)。如图:

CPU、内存、寄存器之间的关系cpu 取址 -》地址输入地址寄存器 -》 缓存命中即,则数据进入数据寄存器 -》 缓存未命中则进入内存 -》 内存TLB快表命中则数据块进入缓存,数据进入寄存器 -》 内存TLB快表未命中则局部数据块进入缓存和快表 -》 内存未命中则进入硬盘虚拟存储区

CPU里的寄存器

其实就是我们常说的:Cache,有1级 和 2级,(L1,L2)L1容量比较小,L2(集成在主板上,说使用的为静态RAM)会多一些,L1是集成在CPU内部的寄存器(L1与CPU 同步),访问它速度自然很快,但容量比较小,L1 64K L2现在最高的就2MB,这显然是不够的,所以我们都需要扩展它,内存(DDR RAM)就是扩展的“寄存器”,它的访问速度就比 Cache 速度慢!CPU 在运行某计算时,它会把使用频率高的数据放到L1,L2,把不常用的数据保存在RAM中,需要访问的时候再读入Cache,当然相比之下硬盘的速度就更低。

计算机中内存、cache和寄存器之间的关系

寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

内存包含的范围非常广,一般分为只读存储器(ROM)、随机存储器(RAM)和高速缓存存储器(cache)。

寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

Cache :即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1

Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。

总结:大致来说数据是通过内存-Cache-寄存器,Cache缓存则是为了弥补CPU与内存之间运算速度的差异而设置的的部件。

首先看一下计算机的存储体系(Memory hierarchy)金字塔:

其次我们看看一个计算机的存储体系

Register

寄存器是CPU的内部组成单元,是CPU运算时取指令和数据的地方,速度很快,寄存器可以用来暂存指令、数据和地址。在CPU中,通常有通用寄存器,如指令寄存器IR;特殊功能寄存器,如程序计数器PC、sp等。

Cache

缓存即就是用于暂时存放内存中的数据,若果寄存器要取内存中的一部分数据时,可直接从缓存中取到,这样可以调高速度。高速缓存是内存的部分拷贝。

CPU 《--- 》 寄存器《--- 》 缓存《--- 》内存

寄存器的工作方式很简单,只有两步:(1)找到相关的位,(2)读取这些位。

内存的工作方式就要复杂得多:

(1)找到数据的指针。(指针可能存放在寄存器内,所以这一步就已经包括寄存器的全部工作了。)

(2)将指针送往内存管理单元(MMU),由MMU将虚拟的内存地址翻译成实际的物理地址。

(3)将物理地址送往内存控制器(memory controller),由内存控制器找出该地址在哪一根内存插槽(bank)上。

(4)确定数据在哪一个内存块(chunk)上,从该块读取数据。

(5)数据先送回内存控制器,再送回CPU,然后开始使用。

内存的工作流程比寄存器多出许多步。每一步都会产生延迟,累积起来就使得内存比寄存器慢得多。

为了缓解寄存器与内存之间的巨大速度差异,硬件设计师做出了许多努力,包括在CPU内部设置缓存、优化CPU工作方式,尽量一次性从内存读取指令所要用到的全部数据等等。

RAM-memory

即内存,是用于存放数据的单元。其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。

HardDisk

硬盘

一条汇编指令大概执行过程是(不是绝对的,不同平台有差异):

取指(取指令)、译码(把指令转换成微指令)、取数(读内存里的操作数)、计算(各种计算的过程,ALU负责)、写回(将计算结果写回内存),有些平台里,前两步会合并成一步,某些指令也不会有取数或者回写的过程。

再提一下CPU主频的概念:首先,主频绝对不等于一秒钟可以执行的指令个数,每个指令的执行成本是不同的,比如x86平台里汇编指令INC就比ADD要快,具体每个指令的时钟周期可以参考intel的手册。

为什么要提主频?因为上面的执行过程中,每个操作都需要占用一个时钟周期,对于一个操作内存的加法,就需要5个时钟周期,换句话说,500Mhz主频的CPU,最多执行100MHz条指令。

仔细观察,上面的步骤里不包括寄存器操作,对于CPU来说读/写寄存器是不需要时间的,或者说如果只是操作寄存器(比如类似mov BX,AX之类的操作),那么一秒钟执行的指令个数理论上说就等于主频,因为寄存器是CPU的一部分。

然后寄存器往下就是各级的cache,有L1 cache,L2,甚至有L3的,以及TLB这些(TLB也可以认为是cache),之后就是内存,前面说寄存器快,现在说为什么这些慢:

对于各级的cache,访问速度是不同的,理论上说L1cache(一级缓存)有着跟CPU寄存器相同的速度,但L1cache有一个问题,当需要同步cache和内存之间的内容时,需要锁住cache的某一块(术语是cache line),然后再进行cache或者内存内容的更新,这段期间这个cache块是不能被访问的,所以L1cache的速度就没寄存器快,因为它会频繁的有一段时间不可用。

L1 cache下面是L2 cache,甚至L3 cache,这些都有跟L1 cache一样的问题,要加锁,同步,并且L2比L1慢,L3比L2慢,这样速度也就更低了。

最后说说内存,内存的主频现在主流是1333左右吧?或者1600,单位是MHz,这比CPU的速度要低的多,所以内存的速度起点就更低,然后内存跟CPU之间通信也不是想要什么就要什么的。

内存不仅仅要跟CPU通信,还要通过DMA控制器与其它硬件通信,CPU要发起一次内存请求,先要给一个信号说“我要访问数据了,你忙不忙?”如果此时内存忙,则通信需要等待,不忙的时候,通信才能正常。并且,这个请求信号的时间代价,就是够执行几个汇编指令了,所以,这是内存慢的一个原因。

另一个原因是:内存跟CPU之间通信的通道也是有限的,就是所谓的“总线带宽”,但,要记住这个带宽不仅仅是留给内存的,还包括显存之类的各种通信都要走这条路,并且由于路是共享的,所以任何请求发起之间都要先抢占,抢占带宽需要时间,带宽不够等待的话也需要时间。

以上两条加起来导致了CPU访问内存更慢,比cache还慢。

举个更容易懂的例子:

CPU要取寄存器AX的值,只需要一步:把AX给我拿来,AX就拿来了。

CPU要取L1 cache的某个值,需要1-3步(或者更多):把某某cache行锁住,把某个数据拿来,解锁,如果没锁住就慢了。

CPU要取L2 cache的某个值,先要到L1 cache里取,L1说,我没有,在L2里,L2开始加锁,加锁以后,把L2里的数据复制到L1,再执行读L1的过程,上面的3步,再解锁。

CPU取L3 cache的也是一样,只不过先由L3复制到L2,从L2复制到L1,从L1到CPU。

CPU取内存则最复杂:通知内存控制器占用总线带宽,通知内存加锁,发起内存读请求,等待回应,回应数据保存到L3(如果没有就到L2),再从L3/2到L1,再从L1到CPU,之后解除总线锁定。

展开阅读全文

篇19:寄存器、累加器、暂存器有什么区别

全文共 1285 字

+ 加入清单

暂存器-介绍

用来暂存由数据总线或通用寄存器送来的操作数,并把它作为另一个操作数。

暂存器是用来暂存由数据总线或通用寄存的东西。它是中央处理器内的其中组成部份。 暂存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、 数据和位址 。

寄存器定义

寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。

寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。

寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个 “8 位元寄存器”或 “32 位元寄存器”。寄存器现在都以寄存器档案的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存以及在数种机器上的其他方式来实作出来。

寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组。更适当的是称他们为 “架构寄存器”。

例如,x86 指令及定义八个 32 位元寄存器的集合,但一个实作 x86 指令集的 CPU 可以包含比八个更多的寄存器。

寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

什么是累加器

在中央处理器中,累加器 (accumulator) 是一种寄存器,用来储存计算产生的中间结果。如果没有像累加器这样的寄存器,那么在每次计算 (加法,乘法,移位等等) 后就必须要把结果写回到 内存,也许马上就得读回来。然而存取主存的速度是比从算术逻辑单元到有直接路径的累加器存取更慢。

累加器是寄存器吗

累加器的符号是A,顾名思义,其意思是加,但是其除了能做累加器外,(A)还能做寄存器。

对于累加器,有一些特别的指令是专门针对累加器的,比如在8086中的RL,以及mul等指令,而在51单片机中RL对应的寄存器只能是A,总之A是个很特殊的寄存器,除了能做寄存器还能作累加器。

寄存器、累加器、暂存器有什么区别

1、寄存器是CPU内部存储单元,即寄存器是CPU的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址等。

2、在CPU内部,累加器 (accumulator) 是一种寄存器,所有数学运算必须通过它进行传递和运算。

3、提到暂存器要从寄存器与存储器来讲:寄存器是CPU里的存储单元,与CPU离得近,所以CPU在运算时通常都会用寄存器当中转站。存储器是在CPU外部的存储器,例如,RAM,ROM。

暂存器顾名思义,就是暂时存放一定数量数据寄存器或存储器。例如,目标寄存器和结果寄存器都已有数据,需要第三个数据输入;编程时某一逻辑信号经常多次使用,中间结果需要暂时记忆。

展开阅读全文

篇20:单片机是什么

全文共 244 字

+ 加入清单

单片机有体积小、质量轻、价格便宜、集成度高、存储容量大、外部扩展能力强、控制功能强等特点;为学习、应用和开发提供了便利条件。

单片机的使用领域

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。

单片机又称单片微控制器,是一种集成式电路芯片,即把一个计算机系统集成到一个芯片上。单片机在电子技术中的开发,主要包括CPU开发、程序开发、 存储器开发、计算机开发及C语言程序开发。单片机开发产品拥有良好的稳定性和较长的使用寿命,可以长时间稳定运行10年或是20多年。

展开阅读全文