单片机原理及接口技术 前修课程:数模电、微机原理
学习目的:掌握MCS-51单片机的硬件组成、运行原理和指令集,提高软硬件应用技术。 应用对象:家用电器、仪器仪表、自动控制系统。 优势:价格便宜、功能齐全。
学习要求: 理论学习 48 实验 16
第一章 微机基础知识 §1-1 微处理器、微机和单片机的概念 §1-2 计算机中数制和编码 §1-3 计算机中数的表示方法 §1-4 二进制数的运算
§1-1微处理器、微机和单片机的概念 一、微处理器:(芯片) 微处理器(CPU)是微机的核心部件,完成控 制和运算功能。 1.运算器(ALU):完成算术运算和逻辑运算的场所 算术运算:加、减、乘、除,BCD码运算 逻辑运算:与、或、异或、测试 2.控制器:由程序计数器、指令寄存器、指令译码 器、时序发生器、操作控制器。 负责整机控制,协调各部件工作。
3.寄存器阵列 通常CPU的寄存器有: 累加器 A 、数据寄存器DR 、程序计数器PC 、指令寄存器IR、指令译码器ID等
二、微型计算机:(计算机) 微处理器(CPU) 存储器:存放程序和数据 输入输出接口:用于将外部设备与CPU和存储器相连接 系统总线:CPU向存储器及接口电路提供地址、数据及控制信息的通路
三、微型计算机系统 微型计算机 输入输出设备 系统软件
四、单片机 单片机的全称为单片微型计算机(Single Chip Microcomputer)。 将微处理器(CPU)、一定容量的ROM和RAM、定时/计数器、并/串行口等电路集成在一块芯片上,构成单片微型计算机,简称单片机。
五、单片机的发展史 四个阶段 第一阶段:单片机初级阶段。单片机的发展始于 1974年,到了1976年,Intel公司推出了MCS-48系 列单片机,将CPU、存储器、I/O接口、定时器/计 数器集成在一块芯片上,使计算机完成了单芯片化。 第二阶段:单片机完善阶段。此阶段单片机的功能 及体系结构得到了不断的完善。 1980年,Intel公 司在MCS-48系列单片机的基础上增添了I/O串行口, 增大了存储器容量,完善了中断系统(设置了5个 中断源,2个优先级),定时器/计数器为16位的, 在内部存储器上设置了位地址空间,提供位操作指 令,推出了高性能的MCS-51系列单片机。
第三阶段:微控制器形成阶段。为了更高的测 控应用,需要对单片机的外围接口电路进行增 强与完善,如数模转换器(D/A)、模数转换 器(A/D)、高速I/O接口、程序监视定时器 (WDT)等,尽量将外围功能集成在芯片内部。 第四阶段:微控制器技术成熟阶段。随着技术 的不断成熟,国内外对单片机的开发和研制竞 争异常激烈,极大地丰富了微控制器的类型, 功能不断地完善,成本降低,外围电路减少, 可靠性不断提高。
所谓的数制是指数的制式,是人们利用符号计数的一种科学方法。 §1-2 计算机中数制和编码 一、数制及数制转化 1、数制 所谓的数制是指数的制式,是人们利用符号计数的一种科学方法。 一个r进制数按权展开,其表达式为:
二进制 B (Binary) 八进制 Q或O (Octal) 十六进制 H (Hexadecimal) 十进制 D或者省略 (Decimal)
2、进制转换 不同数制之间的相互转换
1)任意进制转换十进制(N-十转换) 加权求和 N——计数的基数 Ni——第i位的权 a.11010.01B = 1×24+1×23+0×22+1×21+0×20+0×2-1+1×2-2 = 26.25D b.19B.ABH = 1×162+ 9×161+ 11×160+ 10×16-1+11×16-2 = 256 +144 +11 + 0.625+0.04296875 = 411.66796875D
2)十-二转换 整数部分——除2(基)取余法 小数部分——乘2(基)取整法 a.97.6875=?B 整数部分97 高 低 97D = 2 97 2 48 2 24 2 12 2 6 2 3 2 1 余数为1, 余数为0, 97D = 1100001B
97.6875 = 1100001.1011B 小数部分0.6875 0.6875 × 2 1.3750 整数部分为1, 0.3750 余下的小数部分 × 2 0.7500 整数部分为0, 0.7500 余下的小数部分 × 2 1.5000 整数部分为1, 0.5000 余下的小数部分 × 2 1.0000 整数部分为1, 0.0000 余下的小数部分为0,结束 低 高 0.6875D = 0.1011B
注意: 任何十进制整数都可以精确地转换 成一个二进制整数,但任何十进制小数 却不一定可以精确地转换成一个二进制 小数。
3)二-十六转换 1110110101100.10101B = ?H 四位一画,两头补0 1110110101100.10101 0001110110101100.10101000 1 D A C . A 8 ↓ ↓ ↓ ↓ ↓ ↓ 1110110101100.10101B = 1DAC.A8H
4)十六-二转换(注意舍0) 39F.E1AH = ?B 3 9 F . E 1 A ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 001110011111 . 111000011010 39F.E1AH = 0011 1001 1111.1110 0001 1010B = 11 1001 1111.1110 0001 101B
5)十-十六、十-八转换 97.6875=?H 97.6875=?Q 余数为1, 余数为6, 16 97 16 6 商为0 余数为1, 余数为4, 8 97 8 12 8 1 商为0 0.6875 16 11.000 0.000 整数部分为11,即B 余下的小数部分为0, 结束 0.6875 × 8 5.5000 整数部分为5, 0.5000 余下的小数部分 4.0000 整数部分为4, 0.0000 余下的小数部分 结束 97.6875=61.BH=141.54Q
二进制数、八进制数、十进制数和十六进制数之间的对应关系 整 数 小 数 二进制 八进制 十进制 十六进制 0000B 00Q 0H 0B 0Q 0001B 01Q 1 1H 0.1B 0.4Q 0.5 0.8H 0010B 02Q 2 2H 0.01B 0.2Q 0.25 0.4H 0011B 03Q 3 3H 0.001B 0.1Q 0.125 0.2H 0100B 04Q 4 4H 0.0001B 0.04Q 0.0625 0.1H 0101B 05Q 5 5H 0.00001B 0.02Q 0.03125 0.08H 0110B 06Q 6 6H 0.000001B 0.01Q 0.015625 0.04H 0111B 07Q 7 7H … 1000B 10Q 8 8H 1001B 11Q 9 9H 1010B 12Q 10 AH 1011B 13Q 11 BH 1100B 14Q 12 CH 1101B 15Q 13 DH 1110B 16Q 14 EH 1111B 17Q 15 FH
1、BCD码——二-十进制码 二、计算机中常用编码 一种二进制形式的十进制码,用4位二进制数表示一位十进制数,最常用的是8421BCD码。
8421BCD码表
字母、数字、符号等的二进制编码。是一种字符编码,是美国信息交换标准代码的简称。 2、ASCII码 字母、数字、符号等的二进制编码。是一种字符编码,是美国信息交换标准代码的简称。 共128种字符,每个ASCII码占用1个字节,最高位为0,后7位进行编码。 当作符号的数字0~9的ASCII码:30H~39H 字母A~Z的ASCII码: 41H~5AH 字母a~z的ASCII码: 61H~7AH
ASCII码表
§1-3 计算机中数的表示方法 以二进制形式 存储和运算 每类数据占据固定长度的二进制数位。 处理整数(无符号数,带符号数),浮点数。
一、机器数与真值 1.机器数 规定带符号数的最高位为符号位,通常用“0”表 示正数,“1”表示负数。 例如:8位计算机中+65D = 01000001B, -65D = 11000001B。 计算机中以二进制形式表示的数为机器数,而把这 个数本身代表的真实值称为机器数的真值(一般用十进 制表示)。
2.机器数的字长 1word = 16bit 1byte = 8bit 1double word = 32bit
二、数的定点和浮点表示 用机器数来表示带小数点的数通常有两种表示方法, 即定点表示法和浮点表示法。 二、数的定点和浮点表示 用机器数来表示带小数点的数通常有两种表示方法, 即定点表示法和浮点表示法。 在定点表示法中,小数点在数中的位置是固定不变的。 定点表示法的优点是运算规则简单,但它能表示数的范围没有相同位数的浮点表示法大。 浮点数是都由阶码和尾数两部分组成,其中阶码部分包括阶符和阶码,尾数部分包括数符和尾数。 浮点表示法的优点是数的表示范围大,缺点是运算规则复杂,通常要阶码和尾数分别进行运算。
最高位是符号位,符号位之后是该数的绝对值。 三、有符号数 用0表示正数,用1表示负数,这种表示数的方法, 称为带符号数,带符号数有3种表示形式。 1.原码 记作(±N)原码 最高位是符号位,符号位之后是该数的绝对值。 1 符 号 位 数值部分 ① +22 1 符 号 位 数值部分 ②-22
n位原码表示数的范围: -(2n-1-1) ~2n-1-1 0有两种表示方式: (+0)原码=0000 0000B 8位原码表示数的范围:-127~+127 0000 0000B~0111 1111B 0~127 即 0~27-1 1000 0000B~1111 1111B 0~-127 即0~-(27-1) n位原码表示数的范围: -(2n-1-1) ~2n-1-1 0有两种表示方式: (+0)原码=0000 0000B (-0)原码=1000 0000B 不适合进行计算 原码表示带符号带符号数相当简便、直观,适用乘法、除法或同符号数相加。但对于不同符号的数进行加、减运算时就变得复杂了。
例:N1 = +10101B,N2 = -10101B,试写出N1和N2在8位 字长的计算机中原码。 解: 数值不变 “0”表示正数 (N2)原=10010101B 数值不变 “1”表示正数
2.反码 记作(±N)反码 正数的反码与其原码相同; 负数的反码在其正数原码的基础上按位求反。 0有两种表示方式: (+0)反码=0000 0000B (-0)反码=1111 1111B 不适合进行计算 n位反码表示数的范围: -(2n-1-1) ~2n-1-1。
例:求+13,-13的反码。 解: (+13)反码 = (+13)原码 = 00001101B (-13)原=1 0 0 0 1 1 0 1B (-13)反=1 1 1 1 0 0 1 0B 各位取反 符号位不变
3.补码 记作(±N)补码 正数的补码与其原码相同; 负数的补码在其正数原码(无符号数)的基础上求反加1。 ① +112 ②-112 (+112)原码=0111 0000B (+112)补码=0111 0000B (-112)补码=1001 0000B 0111 0000B→(求反)1000 1111B →(+1)1001 0000B 求补运算← →求反加1
从右边开始首先碰到的0和第一个1不变,其余按位求反。 (+112)原码=0111 0000B (-112)补码=1001 0000B 0的表示方式只有一种: (+0)补码=0000 0000B (-0)补码=1111 1111B+1=(1) 0000 0000B =0000 0000B 求补的方法二: 从右边开始首先碰到的0和第一个1不变,其余按位求反。 (+112)原码=0111 0000B (-112)补码=1001 0000B 左 右 8位补码表示数的范围:-128~+127 n位补码表示数的范围:-2n-1~2n-1-1
注意: 1)补码≠负数 2)求补≠补码 3)使用补码可以把两个数的减法化为加法 98-76=98+(-76) 01100010B-01001100B=01100010B+10110100B 0110 0010B 0110 0010B -0100 1100B +1011 0100B 0001 0110B 0001 0110B
例:二进制数1000 0000B分别作原码、反码和补码看,其十进制真值分别是多少? 判断:1开头,负数 真值:-0 原码: 反码:在正数原码的基础上按位求反得到 正数原码: 真值:-127 补码:在正数原码的基础上求反+1得到 取反: 正数原码(无符号数): 真值:-128 1 符号位 数值部分 1 1 1
四、无符号数 无符号数二进制表示没有符号位,皆为数值位。 8位无符号二进制数表示数的范围:0~+255 n位无符号二进制数表示数的范围:0~+2n-1
一些典型值
§1-4 二进制数的运算 1.加法运算 二进制加法运算的法则为: 0+0 = 0 1+0 = 0+1 = 1 一、算术运算 1.加法运算 二进制加法运算的法则为: 0+0 = 0 1+0 = 0+1 = 1 1+1 = 10 (向近邻高位有进位) 1+1+1 = 11 (向近邻高位有进位)
1011 0110 B X + 1101 1001 B Y 11000 1111 B X+Y 解: 按照二进制数加法运算法则,得到: 例:设有两个二进制数X =10110110,Y = 11011001,试求该两个二进制数的相加和,X+Y= ? 解: 按照二进制数加法运算法则,得到: 1011 0110 B X + 1101 1001 B Y 11000 1111 B X+Y
2.减法运算 二进制数减法法则: 0-0 = 0 1-0 = 1 1-1 = 0 0-1 = 1 (向近邻高位借位1)
例:设有两个二进制数X = 11011001,Y = 10010111,试求该两个二进 制数的相减,X-Y= ? 解: 按照二进制数的减法法则,得到: 1101 1001B - 1001 0111B X-Y = 0100 0010B
3.乘法运算 二进制数乘法法则: 1×0 = 0×1 = 0 1×1 = 1
例:设有两个二进制数X =1101,Y = 1011,试求该两个二进制数的相乘,X×Y= ? 解: 1101B × 1011B 1101 1101 0000 + 1101 X×Y = 10001111B
4. 除法运算 除法运算是乘法运算的逆运算。与十进制数除 法运算类似。 够减,商1。不够减商0,再多看一位。
例:设有两个二进制数X =10101011,Y = 110,试求该两个二进制数的相除,X÷Y= ? 解: 按照二进制数除法法则,得到: 11100 110) 10101011 110 1001 110 110 110 11 所以,X÷Y = 11100B……余11B
二、逻辑运算 1. 逻辑乘(与)运算 其运算法则为: 0∧0 = 0 1∧0 = 0∧1 = 0 1∧1 = 1
例:设有两个二进制数X =10110110,Y = 11011001,试 求该两个二进制数的逻辑与运算,X∧Y= ? 解: 按照逻辑与运算法则,得到: 1011 0110B ∧ 1101 1001B X∧Y = 1001 0000B
2. 逻辑加(或)运算 其运算法则为: 0∨0 = 0 1∨0 = 0∨1 = 1 1∨1 = 1
例:设有两个二进制数X =10110110,Y = 11011000,试求该两个二进制数的逻辑或运算,X∨Y= ? 解: 按照逻辑或运算法则,得到: 1011 0110B ∨ 1101 1000B X∨Y = 1111 1110B
1 = B 01010100 1 X = 3. 逻辑非(取反)运算 其运算法则为: 3. 逻辑非(取反)运算 其运算法则为: 1 = 例:设有两个二进制数X =10101011,试求该二进制数的逻辑非运算 解: 按照逻辑非运算法则,得到: B 01010100 1 X =
4.逻辑异或运算 逻辑异或运算又称为逻辑半加运算,是不考虑进位的加运 算,其运算法则为: 相同为0,相异为1 = Å
例:设有两个二进制数X =10110110,Y =11011000,试求该两个二进制数的逻辑异或运算,X Y= ? Å 10110110B 11011000B X Y = 01101110B 解: Å