单片机入门基础数字电路之什么是半加器,什么是全加器?
本文主要介绍半加器和全加器,通过逻辑电路和其真值表了解它们的原理,以了解单片机、CPU是怎么工作的。在进入这个主题之前,要先了解布尔逻辑和逻辑门,这对本文的阅读,或者阅读其他数字电路资料非常重要。
什么是加法器?
加法器是一种计算器,用于将两个二进制数相加。这个计算器不是指带有按钮的计算器,这是一种可以与许多其他电路集成以实现广泛应用的电路。有两种加法器:
1. 半加器
2. 全加器
半加器
在半加器和其它逻辑门的帮助下,我们可以设计能够执行简单加法的电路。
让我们先来看看一位二进制的加法。
0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 10
一位二进制加法器是最小单元,上面的算式可以看到1+1=10,有2位输出。
因此,上述加法算式可以写成
0+0 = 00
0+1 = 01
1+0 = 01
1+1 = 10
这里'10'的输出'1'为进位。结果显示在下面的真值表中。
先看看实现半加器的逻辑图。
从真值表和逻辑图中可以清楚地看出,这个 1 位加法器用异或门和进位的与门实现,输出“Sum”。
对于复杂的加法,可能存在多位数相加的情况。这需要更合适的加法器来帮助——全加器 。
全加器
两个半加器电路可以实现一个全加器。第一个半加法器将用于将 A 和 B 相加以产生部分和。后一个半加法器用于将 CIN 与前一个半加法器产生的和相加,以获得最终的 S 输出。任何半加器逻辑产生进位,就会有一个输出进位。因此,COUT 将是半加器进位输出。看看下面全加器逻辑电路的实现。
这种类型的加法器比半加法器的实现稍微复杂。半加器和全加器的主要区别在于全加器具有三个输入和两个输出。前两个输入是加数“A”和 “B”,第三个输入是前面一步的运算进位CIN,如1+1=10,结果“10”中的“1”就是CIN,用于下一次相加运算的输入。
从上面的真值表和全加器逻辑图,我们可以看到,输出S是输入 A 与 B 的半加器运算结果和进位CIN的异或运算。我们还必须注意,只有当“A”,“B”“CIN”输入中的任意两个输入为高电平时,COUT 才会为真。
把全加器复杂的逻辑图抽象出来,用以下图来表示:
使用这种抽象类型的符号,我们把多个全加器组合,从前一个单元全加器输出一个进位,并将这个进位发送到下一个全加器,可以组成多位加法器。
在计算机中,对于多位运算,每个位由一个全加器表示。因此,要把4位二进制数相加,可以通过两个由4个全加器组合形成的多位加法器来完成。
上面为数字电路的加法器相关介绍,错误之处欢迎指出。
跟电师傅学单片机(12):单片机算术运算加减法指令图文新解
单片机算术运算类指令(24条)
算术运算指令是8位二进制数进行加、减、乘、除四则运算,以及加1、减1、十进制调整等。
本节介绍其中加减法12条指令。
加减法指令示意图
1:不带进位加法指令(4条)
ADD:不带进位标志CY的加法,功能是累加器A中的内容与源操作数所确定单元中的内容相加,其结果仍存在A中。
ADD A,Rn;属于寄存器寻址方式。指令功能是将寄存器Rn中的内容与累加器A中的内容相加,其结果送回A中。
ADD A,direct;属于直接寻址方式。指令功能是将直接地址direct中的内容与累加器A中的内容相加,其结果送回A中。
ADD A,@Rn;属于寄存器间接寻址方式。指令功能是将寄存器间接寻址单元中的内容与累加器A中的内容相加,其结果送回A中。
ADD A,#data;属于立即数寻址方式。指令功能是将立即数data与累加器A中的内容相加,其结果送回A中。
2:带进位加法指令(4条)
ADDC:带进位标志CY的加法,功能是累加器A中的内容与源操作数所确定单元中的内容相加,其结果仍存在A中。与ADD指令类似,不同之处是在执行加法时,还要将进位标志CY的内容一起加进去。
进位加法计算
标志寄存器PSW示意图
标志寄存器PSW功能图
CY:是标志寄存器PSW中的一个进位标志位。标志寄存器PSW也称程序状态字PSW,用于存放程序运行状态信息。
单片机系统上电或复位时,PSW初始值为00H。
3:减法指令(4条)
SUBB:带借位减法指令,与带进位加法指令类似,指令功能是把累加器A中的内容减去源操作数所确定单元中的内容和进位标志CY,其结果送回A中。
注意:在减法指令里面,只有带借位的减法,没有不带借位的减法,做减法运算时,如果是低8位时,必须把CY清零。
相关问答
单片机加法 add和addc到底是怎样运算的?比如:MOVA,#25HA=?MOV...[最佳回答]ADD只是两个数相加,忽略以前加法运算的进位.ADDC把进位也算进去了你给的程序MOVA,#25HA=?将0x25给寄存器AMOV40H,#1AH40H=?将0x1a给ram中地址0...
单片机 心率机可以加什么模块?单片机心率监测机可以加入多个模块,如蓝牙模块、液晶屏、WiFi模块或者GSM模块等。蓝牙模块可以与手机连接,实现数据传输和控制;液晶屏可以显示心率数据,即时...
请用 单片机 实现输出LCD显示器,实现简单的加减法运算,按+键加...用单片机驱动LCD并不难,但要注意细节:初始化LCD接口、配置按键输入、编写加减...在这个函数里增加或减少计数器值,并更新LCD显示。记得要控制好电源管理,因为...
单片机 c语言怎么写 加法 ?#include"stdio.h"voidmain(){inta,b,c;scanf("%d%d",&a,&b);c=a+b;...
为什么高位数相加要用addc?这是51单片机的一条加法指令,可以完成带进位Cy的加法运算。指令的形式是:ADDCA,源操作数,加法是在A中完成的,加法计算时的两个数一个数是A中原有的数...
单片机 ,累加器A计算-1加1,计算后A里面为0吗?_作业帮[最佳回答]因为-1在单片机中表示是0FEH,最高位为1表示为负,剩余位取反,0FEH和1相加,肯定是0了,CY有进位
怎么实现 单片机 多个函数功能同时执行?多个函数功能同时执行是不可能的。由于单片机本身的条件限制。对于你的问题可以采用如下方法解决。1.加锁存器,也就是说你把IO口状态改变后,锁存器会自动锁...
stc 单片机 控制步进马达加减速?stc的单片机控制步进马达加减速的方法是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。调整单片机发...
adc0809跟51 单片机 连接的时候需要加锁存器和反向器,为什么呢?AD7705跟51相连还需要加?adc0809跟51单片机连接的时候需要加锁存器和反向器,这是因为adc0809采用并行输出形式,单片机需要正确的时序逻辑才能正确操作adc0809。AD7705是16位串行控制A...
两个 单片机 串口之间通信加120电阻有什么作用?求教?这只有在RS485通信模式式下,才在两条通信线通的终端并联一个120殴的电阻,这是总线的终端电阻,起到阻抗匹配作用的。因RS485的总线比较长,信号在总线上会产生...