1、第0章 计算机的基础知识,单片机原理、接口及应用,内 容 提 要,微型计算机的基本结构和工作原理计算机中的数制与码制小结,0.1.1 微机的系统结构,微机系统,软件,硬件,主机,外围设备,微处理器 (CPU),运算器 控制器 寄存器,存储器 (内存),RAM ROM,输入/输出接口 (I/O接口),并行、串行接口 定时器、A/D、D/A,总线,系统软件 应用软件 程序设计语言,外部设备,辅助设备,输入设备 输出设备 辅助存储器,电源电路 时钟电路,CPU是计算机的控制核心,它的功能是执行指令,完成算数运算、逻辑运算,并对整机进行控制。存储器用于存储程序和数据。输入/输出接口(又称I/O接口)是
2、CPU和外设之间相连的逻辑电路,外设必须通过接口才能和CPU相连。不同的外设所用接口不同。每个I/O接口也有一个地址,CPU通过对不同的I/O接口进行操作来完成对外设的操作。存储器、I/O接口和CPU之间通过总线相连。用于传送程序或数据的总线称为数据总线;地址总线用于传送地址,以识别不同的存储单元或I/O接口;控制总线用于控制数据总线上数据流送的方向、对象等。,0.1.2 微机的基本工作原理,存储程序、执行程序是微机的工作原理,取指令,译码,执行是微机的基本工作过程。单片机是微型计算机的一种,是将计算机主机(CPU、存储器和I/O接口)集成在一小块硅片上的微机,又称微控制器。它专为工业测量与设
3、计而设计,具有三高优势(集成度高、可靠性高、性价比高),他的特点是小而全(体积小,功能全),主要应用于工业检测与控制、计算机外设、智能仪器、仪表、通信设备、家用电器等,特别适合于嵌入式微型机应用系统。,0.1.3 微机的主要技术指标,微型计算机主要有如下一些技术指标: 字长:CPU并行处理数据位,由此定为8位机、16位机、32位机等。 存储容量:存储器单元数,例如256B、8KB、1MB等(1B即一个字节,也就是一个8位二进制数,是计算机数据的基本单位)。 运算速度:CPU处理速度,它和内部的工艺结构以及外接的时钟频率有关。 时钟频率:在CPU极限频率以下,时钟频率越高,执行指令速度越快,对单
4、片机而言,有6MHz、12MHz、24MHz等。,0.2.1 计算机中的数,计算机中的数字电路具有两种不同的稳定状态且能相互转换,即“0”和“1”两种状态。计算机处理的一切信息均用二进制数表示,但是二进制数书写起来太长,所以微型计算机中的二进制数都采用十六进制来缩写。十六进制数用09、AF等16个数码表示十进制数015。为了区别十进制数、二进制数及十六进制数3种数制,在数的后面加一个字母以进行区别。用B(binary)表示二进制数制;D(decimal)或不带字母表示十进制数制;H(hexadecimal)表示十六进制数制。,表0-1 不同进位记数制对照表,二进制数和十六进制数间的相互转换将二
5、进制数从右(最低位)向左每4位为1组分组,若最后一组不足4位,则在其左边添加0,以凑成4位,每组用1位十六进制数表示。如:1111111000111B1 1111 1100 0111B0001 1111 1100 0111B1FC7H十六进制数转换位二进制数,只需用4位二进制数代替1位十六进制数即可。如:3AB9H=0011 1010 1011 1001B,十六进制数和十进制数间的相互转换将十六进制数按权展开相加,如:1F3DH=163116215161316013=4096125615163113=409638404813=7997 十进制整数转换为十六进制数可用出16取余法,即用16不断地
6、去除待转换的十进制数,直至商等于0为止。将所得的各次余数,依倒叙排列,即可得到所转换的十六进制数。如将38947转换为十六进制数,其方法及算式如下: 即38947=9823H,0.2.2 计算机中数的几个概念,1.机器数与真值 机器数:机器中数的表示形式,它将数的正、负符号和数值部分一起进行二进制编码,其位数通常为8的整数倍。 真值:机器数所代表的实际数值的正负和大小,是人们习惯表示的数。 2。数的单位 位(bit):一个二进制数中的1位,其值不是1便是0。 字节(Byte):一个字节,就是一个8位的二进制数。 字(Word):两个字节,就是一个16位的二进制数。 双字:两个字,即四个字节,一
7、个32位二进制数。只有8位、16位或32位机器数的最高位才是符号位。,0.2.3 计算机中的有符号数的表示,有符号数有原码、反码和补码三种表示法。 1.原码数值部分用其绝对值,正数的符号位用“0”表示,负数的符号位用“1”表示。如:X1=5=+00000101B X1原=00000101BX2=-5=-00000101B X2原=10000101B符号位,8位原码数的范围为FFH7FH(-127127)。原码数00H和80H的数值部分相同、符号位相反,它们分别为+0和-0。16位原码数的数值范围为FFFFH7FFFH(-3276732767)。原码数0000H和8000H的数值部分相同、符号位
8、相反,它们分别为+0和-0。原码表示简单易懂,而且与真值的转换方便。但若是两个异号数相加,或两个同号数相减,就要做减法。为了把减运算转换为加运算,从而简化计算机的结构,就引进了反码和补码。,(2)反码正数的反码与原码相同;负数反码:符号位不 变,数值部分按位取反。例 求8位反码机器数:x1= +4 x1原= 00000100B x1反= 00000100B04Hx2= -4 x2原= 10000100B x2反= 11111011B = FBH,(3)补码 正数的补码与原码相同;负数补码为其反码加1。 例:求 8位补码机器数: x1=+4: x1原=x1反=x1补= 00000100=04H
9、x2= - 4: x2原 = 10000100 x2反 = 11111011 x2补 = x2 反+1= 1111100=FCH8位补码数的数值范围为-128127(80H7FH)。16位补码数的数值范围为8000H7FFFH(-3276832767)。字节80H和字8000H的真值分别是-128(-80H)和-32768(-8000H)。补码数80H和8000H的最高位既代表了符号为负,又代表了数值为1。,快速求法:将负数原码的最前面的1和最后一个1之间的每一位取反。例如 x=-4: x原 = 10000100 x补 = 11111100=FCH取反 两数互补是针对一定的“模”而言,“模”即
10、计数系统的过量程回零值,例如时钟以12为模(12点也称0点),4和8互补,一位十进制数3和7互补(因为3710,个位回零,模为10110),两位十进制数35和65互补(因为3567100,十进制数两位回零,模为102100),而对于8位二进制数,模为28100000000B=100H,同理16位二进制数,模为21610000H由此得出求补的通用方法:一个数的补数模该数,这里补数是对任意的数而言,包括正、负数。而补码是针对符号机器数而言。,设有原码机器数X, X0, X补=X原 当 X0, X补= 模-X 例如对于八位二进制数: x1=+4: x1补= 00000100=04H; x2= - 4
11、: x2补 = 100H-4=FCH 对于16二进制位数: x2=+4: x2补= 0004H; x2= -4: x2补 = 10000H-4=FFFCH,几点说明: 根据两数互为补的原理,对补码求补码就可以得到其原码,将原码的符号位变为正、负号,即是它的真值例如求补码数FAH的真值 。因为FAH为负数求补码 FAH补86H=-6 例如求补码数78H的真值 。因为78H为正数求补码 78H补78H=+120 一个用补码表示的机器数,若最高位为0,则其余几位即为此数的绝对值;若最高位为1,其余几位不是此数的绝对值,必须把该数求补(按位取反(包括符号位)加1),才得到它的绝对值。如:X=-15 -
12、15补F1H11110001B 求补得00001110100001111B=15, 当数采用补码表示时,就可以把减法转换为加法。 例1:64-10=64+(-10)=54 64补=40H=0100 0000B 10补=0AH=0000 1010B -10补=1111 0110B 做减法运算过程: 用补码相加过程结果相同,其真值为36H(=54)。由于数的八位限制,最高位的进位是自然丢失的(再计算机中。进位被存放在进位标志CY中的。)用补码表示后,减法均可以用补码相加完成。因此,在微机中,凡是符号数一律是用补码表示的。用加法器完成加、减运算,用加法器和移位寄存器完成乘、除运算,简化计算机硬件结构
13、。,例2: 34-68=34+(-68)-34 34=22H=0010 0010B 68=44H=0100 0100B -68补=1011 1100B 做减运算过程: 用补码相加过程:结果相同。因为符号位为1,对其求补,得其真值:-00100010B,即为-34(-22H)。 由上面两个例子还可以看出, 1)用补码相加完成两数相减,相减若无借位,化为补码相加就会有进位;相减若有借位,化作补码相加就不会有进位。 2)补码运算后的结果为补码,需再次求补才能得到运算结果的真值。,0.2.4 进位和溢出,例3 10550155 10569H 5032H若把结果视为无符号数,为155,结果是正确的。若将
14、此结果视为符号数,其符号位为1,结果为-101,这显然是错误的。其原因是和数155大于8位符号数所能表示的补码数的最大值127,使数值部分占据了符号位的位置,产生了溢出,从而导致结果错误。又如:-105-50=-155CY=1 两个负数相加,和应为负数,而结果01100101B却为正数,这显然是错误的。其原因是和数-155小于8位符号数所能表示的补码数的最小值-128,也产生了溢出。 结论:当两个补码数相加结果超出补码表示范围,就会产生溢出,导致结果错误。 计算机中设立了溢出标志位OV,通过最高位的进位(符号位的进位)CY和次高位进位(低位向符号位的进位)CY-1异或产生。,例4 74744A
15、H+4AH0 1 0 0 1 0 1 00 01 1 0 0 1 0 1 01 0 0 1 0 1 0 0 CY CY-1=0 1=1有溢出 OV1 CY CY-1 无进位 CY=0由上两例中,例3的 OV=1、CY=1,例4中OV=1、CY=0,可见溢出和进位并非有必然的联系,这是由于两者产生的原因是不同的,两者判断的方法也是是不同的。重述如下:溢出OV:两个补码数相加结果超出补码表示范围而产生,OV= CY CY-1进位CY: 当运算结果超出计算机位数的限制(8位、16位),会产生进位,它是由最高位计算产生的,在加法中表现为进位,在减法中表现为借位。,0.2.5 BCD码,生活中人们习惯于
16、十进制数,计算机只能识别二进制数,为了将十进制数变为二进制数,出现了BCD码,即二进制代码表示的十进制数。故名思意,它即是逢十进一,又是一组二进制代码。用4位二进制数编码表示1位十进制数称为压缩的BCD码,8位二进制数可以放2个十进制数位。也可以用8位二进制数表示1个十进制数位,这种BCD码称为非压缩的BCD码。十进制数和BCD码的对照表见表0-2,表0-2 BCD编码表,例:求十进制数876的BCD码压缩的BCD码 :876BCD = 1000 0111 0110B=876H 非压缩的BCD码:876BCD=00001000 00000111 00000110B080706H又如,十进制数1
17、994的压缩的BCD码1944H1994的非压缩的BCD码01090404H,0.2.6 BCD码的运算,BCD码运算应该得到BCD码结果,由于计算机是按二进制运算,结果不为BCD码,因此要进行十进制调整。调整方法为:当计算结果有非BCD码或产生进位/借位时,加法进行 +6、减法进行 -6 调整运算。例:计算BCD码 78+69=? 0111 1000 78H + 0110 1001 + 69H 1110 0001 E1H不调整,结果为二进制 + 0110 0110 + 66H调整, 高4位产生非BCD码+6,和低4位有半 进位+6 1 0100 0111 147 调整结果:147 (带进位一
18、起)为十进制结果,例:计算BCD码 38-29=? 0011 1000 38H - 0010 1001 - 29H0000 1111 0FH - 0000 0110 - 06 低4位有半借位-6调整 高4位未产生非 BCD且无借位不调整0000 1001 9 结果:9 在计算机中,有专门的调整指令完成调整操作。,0.2.7 ASCII码,表-3 常用字符的ASCII码)美国标准信息交换码ASCII码,用8位二进制编码表示字符,用于计算机与计算机、计算机与外设之间传递信息,每一个符号都有对应的ASCII码,常用数字和字母ASCII码如表1-所列,在程序中,字符可用ASCII码表示,也可以用加引号
19、的字符表示,例如字符4,可以用34H表示,也可以用4表示,此时,它只有符号的意义,而无数量的概念。,表-3 常用字符的ASCII码),0.3 小 结,1了解计算机的系统结构,明确单片机是微机的一种。 2计算机的基本数制是二进制,所有的信息都是以二进制数的形式存放,为方便阅读,以十六进制表示,对于二、十、十六几种进制之间的转换要求十分熟练。 3计算机中的有符号数一律以补码表示,补码、原码。真值之间的转换要求十分熟练。 4计算机中的计算一律为二进制运算,符号位也参与运算,运算中会产生进位和溢出,应明确概念,掌握判断方法 5编码是用一组特定的数码表示一定的字符,计算机常用的编码有BCD码和ASCII码,应记住常用的字符编码。,特别提出的是,计算机只识别0 和1,是有符号数还是无符号数、是补码还是原码、是BCD码、ASCII码还是一般的二进制数计算机是不能识别的,完全是人的认定,人根据不同的认定作不同的分析和处理。例如FFH 作为无符号,它代表255,作为有符号原码,它代表127,作为有符号补码,它代表1;又如32H,视作ASCII码它是字符2, 视作BCD码,它是十进制数32,视作二进制数它是50这就是根据不同的认定作不同的分析,编程作不同的处理,如:认定是BCD码,运算后加调整指令,如果认定不是BCD码,而是一般的二进制数,运算后不加调整指令。,