微处理器与微计算机系统 教材 : 单片机原理与应用及 C51 程序设计 ( 第 3 版 ) 清华大学出版社 主讲 : 谢维成 http://xweicheng.ys168.com scxweicheng@mail.xhu.edu.cn 西华大学电气与电子信息学院
第 1 章计算机基础知识 主要内容 : 1 有符号数的表示 2 微型计算机工作原理 3 单片机的概念及特点
A Historical Background ENIAC Electronic Numerical Integrator And Calculator [Computer] 电子数字积分计算机
ENIAC ENIAC
ENIAC ENIAC
ENIAC ENIAC
1.1 A Historical Background C. The Microprocessor Age (Intel) Date Part Data Bus Width Memory Size 4004 4 1979 8088 8 1M 1989 80486sx 32 4G+16kcache 1993 Petium 64 4G+16kcache 1997 Petium II 64 64G+32kl1 cache+512kl2cac he
Intel 4004 Intel 4004
Intel 8086/8088/80186 Intel 8086/8088/80186
Intel 8086/286/386/486 Intel 8086/286/386/486
Intel Petium I-IV Pentium 4 Intel Petium II Pentium 80386
The Moore s Law: the number of transistors integrated in a chip will double every 18 or 24 mouths
1.1 信息在计算机中的表示 1.1.1 数在计算机内的表示 计算机中的数通常有两种 : 无符号数和有符号数 无符号数 <----- 二进制形式表示 例如 :123 表示成 01111011B 有符号数 --- 机器数, 它的数值称为机器数的真值 13
1.1.1 数在计算机内的表示 符号位 数值位 + 0-1 机器数在计算机中有三种表示法 : 原码 反码和码 14
1. 原码 格式 : 符号位 绝对值 例 1-1 求 +67-25 的原码 ( 机器字长 8 位 ) 因为 +67 =67=1000011B -25 =25=11001B 所以 [+67] 原 =01000011B [-25] 原 =10011001B 注意 : (1) 原码表示范围为 -(2 n-1-1)~+(2 n-1-1), 例如 : 8 位的范围为 -127~+127 (2) 原码表示时,-0 的编码为 10000000,+0 的编码为 00000000 ( 假设机器字长为 8 位 ) 15
2. 反码 格式 : 正数 负数 符号位 0 绝对值 符号位 1 绝对值各位取反 注意 : (1) 反码表示范围为 -(2 n-1-1)~+(2 n-1-1), 例如 :8 位的范围为 - 127~+127 (2) 反码表示时,-0 的编码为 11111111,+0 的编码为 00000000 ( 假设机器字长为 8 位 ) 16
3. 码 格式 : 正数负数 +1 符号位 0 绝对值符号位 1 绝对值各位取反 例 1-3 求 +67-25 的码 ( 机器字长 8 位 ) 因为 [+67] 原 =01000011B [-25] 原 =10011001B 所以 [+67] =01000011B [-25] =11100111B 注意 : (1) 码表示范围为 -(2 n-1-1)~+(2 n-1 ), 例如 :8 位的范围为 - 128~+127 (2) 码表示时,-0 的编码为 00000000,+0 的编码为 00000000 ( 假设机器字长为 8 位 ) 17
求运算 : [X] 求 [-X] 例 1-4 已知 +25 的码为 00011001B, 用求运算求 -25 的码 因为 [25] 求 [-25] 所以 [-25] =11100110+1=11100111B 18
4. 码的加减运算 码的加 减法运算规则如下 : [X+Y] =[X] +[Y] [X-Y] =[X] - [Y] =[X] +[-Y] =[X] +{[Y] } 求 即 : 码表示时, 求两个数之和 [X+Y], 直接用 两个数相加 ([X] +[Y] ); 求两个数之差 [X-Y], 可以直接用两个数相减 [X] -[Y], 也可以先对 减数 [Y] 求运算, 然后再与被减数 [X] 相加 19
例 1-5 假设计算机字长为 8 位, 完成下列码运算 1 (+25)+(+32) 因为 [+25] =00011001B [+32] =00100000B [+25] =0 0 0 1 1 0 0 1 + [+32] =0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 所以 [(+25)+(+32)] =[+25] +[+32] =00111001B=[+57] 2 (+25)+(-32) 因为 [+25] =00011001B [-32] =11100000B [+25] =0 0 0 1 1 0 0 1 + [-32] =1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 所以 [(+25)+(-32)] =[+25] +[-32] =11111001B=[-7] 20
3 (+25)-(+32) 因为 [+25] =00011001B [+32] =00100000B {[+32] } 求 =11011111+1=11100000B [+25] =00011001 - [+32] =00100000 借位 1 自动丢失 [+25] =00011001 + [-32] =11100000 1 11111001 11111001 所以 [(+25)-(+32)] =[+25] +[-32] = [+25] +{[+32] } 求 =11111001B=[-7] 21
4(+25)-(-32) 因为 [+25] =00011001B [-32] =11100000B {[-32] } 求 =00011111+1=00100000B - [+25] = 00011001 [-32] = 11100000 [+25] =00011001 + [+32] =00100000 1 00111001 00111001 借位 1 自动丢失 所以 [(+25)-(-32)] =[+25] + [-32] = [+25] +{[-32] } 求 =00111001B=[+57] 22
5. 十进制数的表示 十进制编码又称为 BCD 码 分压缩 BCD 码和非压缩 BCD 码 压缩 BCD 码又称为 8421 码, 它是用四位二进制编码来表示一位十进制符号 十进制符号 压缩 BCD 编码 十进制符号 压缩 BCD 编码 0 0000 5 0101 1 0001 6 0110 2 0010 7 0111 3 0011 8 1000 4 0100 9 1001 例如 : 十进制数 124 的压缩 BCD 码为 0001 0010 0100 十进制数 4.56 的压缩 BCD 码为 0100.0101 0110 23
非压缩 BCD 码是用八位二进制来表示一位十进制符号, 其中低四位二进制编码与压缩 BCD 码相同, 高四位任取 例如 : 十进制数 124 的非压缩 BCD 码为 0011 0001 0011 0010 0011 0100 24
1.1.2 字符在计算机内的表示 美国信息交换标准代码 ASCII 码 American Standard Code for Information Interchange 数字符号 0~9:30H 39h 26 个大写字母 :41H 5AH 26 个小写字母 :61H 7AH 回车 :0DH 换行 :0AH 25
1.2 微型计算机的基本结构和工作原理 现在的计算机采用冯 诺伊曼结构, 由运算器 控制器 存贮器 输入设备和输出设备五大部分组成 集成运算器和控制器的这一块集成电路称为中央处理器或微处理器, 简称 CPU 1.2.1 微型计算机的发展 1971 年诞生, 一般分为以下几代 : 第一代 (1971~1973):4 位和低档 8 位微处理器第二代 (1974~1977): 中高档 8 位微处理器第三代 (1978~1984):16 位微处理器第四代 (1985~1992):32 位微处理器 第五代 (1993~1999): 超级 32 位 Pentium( 奔腾 ) 微处理器 第六代 (2000 年以后 ):64 位高档微处理器 26
1.2.2 微型计算机的基本结构 微型计算机由中央处理器 存储器 输入 / 输出设备和系统总线等组成 随机存储器 RAM 只读存储器 ROM 数据总线 ( 双向 ) 中央处理器 (CPU) 地址总线 ( 单向 ) 控制总线 I/O 接口电路 I/O 接口电路 I/O 设备 1 I/O 设备 2 27
1.2.3 微处理器 由运算器 控制器 寄存器组和片内总线组成 地址总线 (20 位 ) AX BX CX DX 通用寄存器 AH AL BH BL CH CL DH DL B P S P S I D I 暂存器 ALU 数据总线 (16 位 ) 地址加法器 数据总线 (16 位 ) C S D S S S E S I P 内部通信寄存器 总线控制逻辑 8086 总线 A L U E U 控制器 队列总线 (8 位 ) 指令队列 1 2 3 4 5 6 标志寄存器 指令执行部件 (EU) 总线接口部件 (BIU) 28
内部分为两个部分 : 1 执行单元 (EU) 执行部件由运算器 (ALU) 通用寄存器 标态寄存器和 EU 控制系统等组成 EU 从 BIU 的指令队列中获得指令, 然后执行该指令, 完成指今所规定的操作 2 总线接口单元 (BIU) 总线接口部件 BIU 同外部总线连接, 为执行部件 EU 完成全部的总线操作, 并且计算 形成 20 位的内部存储器的物理地址, 达到寻址 1M 字节内存地址空间的目的 29
内部寄存器 8086 CPU 有 14 个 16 位寄存器, 分为 5 个组 AX AH AL BX BH BL CX CH CL DX DH DL 15 SP BP SI DI 累加器基址寄存器计数器数据寄存器堆栈指针基址指针源变址目的变址 通用数据寄存器指针和变址寄存器 15 IP FLAGS 指令指针标志寄存器 控制寄存器 15 0 CS 代码段 DS SS ES 数据段堆栈段附加段 段寄存器 30
1) 通用寄存器组 AX 称为累加器, 是算术运算时使用的主要寄存器, 所有外部设备的输入输出指令只能使用 AL 或 AX 作为数据寄存器 BX 称为基址寄存器, 可以用作数据寄存器, 在访问存储器时, 可以存放被读写的存储单元的地址, 是具有双重功能的寄存器 CX 称为计数寄存器, 可以用作数据寄存器, 在字符串操作 循环操作和移位操作时用作计数器 DX 称为数据寄存器, 它可以用作数据寄存器, 在乘 除法中 作为辅助累加器, 在输入输出操作中存放接口的地址 31
2) 指针和变址寄存器组 主要用来存放操作数的偏移地址 ( 即操作数的段内地址 ) SP 称为堆栈指针寄存器, 在堆栈操作中存放栈顶的偏移地址 BP 称为基址指针寄存器, 常用作堆栈区的基地址寄存器 SI 称为源变址寄存器, 主要用于在字符串操作中存放源操作数的偏移地址 DI 称为目的变址寄存器, 主要用于在字符串操作中存放目的操作数的偏移地址 32
3) 段寄存器组段寄存器用来存放段的基址 ( 即段的起始地址的高 16 位 ) CS 称为代码段段寄存器, 代码段用来存放程序代码 CS 中存放当前正在执行的代码段的段基址 DS 称为数据段段寄存器, 数据段用于存放当前使用的数据 DS 中存放当前数据段的段基址 SS 称为堆栈段段寄存器, 堆栈段是内存中一段特殊的存储区 SS 中存放堆栈段的段基址 ES 称为附加数据段段寄存器, 程序需要第二个数据段时, 可以使用 ES 存放的该数据段的段基址 33
4) 指令指针寄存器指令指针寄存器 IP(instruction pointer) 是一个 16 位的寄存器,IP 存放下一条要执行的指令的偏移地址 8086 中, 由 CS 和 IP 控制着程序的执行顺序 在程序执行时, 由 EU 控制器控制, 通过 BIU 部件从 CS 和 IP 指向的内部存储器中取出当前执行的指令送执行部件执行, 在取出的同时, 指令指针寄存器 IP 会自动调整 ( 加上当前指令的字节数 ) 以指向下一条指令, 以便程序能自动往后执行 当程序发生转移时, 就必须把新的指令地址 ( 目标地址 ) 装入 CS 和 IP, 这通常由转移指令来实现 34
5) 标志寄存器 标志寄存器 FLAGS 共有 9 个标志位, 其中 6 个为状态标志位,3 个为控制标志位 O D I T S Z A P C C 进位标志位 P 奇偶标志位 A 半加标志位 Z 零标志位 S 符号标志位 O 溢出标志位 T 陷阱标志位 ( 单步标志位 ) I 中断允许标志位 D 方向标志位 35
1.2.4 存储器 指内部存储器 ( 又称为主存或内存 ) 它是微型计算机的存储和记忆装置, 用来存放微型计算机执行的程序和 数据 地址指令或数据 存储单元内容和存储单元地址 3000H 3001H 3002H 3003H 54H A3H 56H 3BH 0 0 1 1 1 0 1 1 36
1. 存储器的基本结构 ------- 半导体存储器 AB 地址译码器 地址 00 01 02 FF 单元内容 00 单元 01 单元 02 单元 FF 单元 控制逻辑 I/O 缓冲器 DB 主要由地址译码器 存储矩阵 控制逻辑和三态双向缓冲器等部分组成 CB 图 1.10 存储器结构图 37
对内存单元的操作有两种 : 读和写 (1) 读操作 2) 存储器中的地址译码器对它进行译码, 找到 05H 号存储单元 地址 单元内容 AB 05 地址译码器 05 0 单元内容 2BH I/O 缓冲器 2BH 1)CPU 通过地址总线送地址号 05H 至存储器地址译码器 读信号 FF 单元内容 控制逻辑 DB 3)CPU 发出读的控制命令,05H 号存储单元中的内容 2BH 就出现在数据 38 总线
(2) 写操作 地址 2) 存储器中的地址译码器对它进行译码, 找到 06H 号存储单元 单元内容 3) 数据寄存器中的内容 1AH 经数据总线送给存储器 AB 06 地址译码器 06 0 单元内容 1AH I/O 缓冲器 1AH 1)CPU 通过地址总线送地址号 06H 至存储器地址译码器 FF 单元内容 控制逻辑 DB 4)CPU 发出写的控制命令, 于是数据总线上的信息 1AH 就可以写入到 06H 号存储单元中 写信号 39
2. 存储器的分类 随机读写存储器 RAM(Random Access Memory) 和只读存储器 ROM(Read Only Memory) 3.8086 中的存储器 总存储空间为 1M 字节, 地址 20 位 由于 8086 的寄存器都是 16 位, 不能直接提供 20 地址, 因此, 为了管理方便,8086 把 1M 空间分成若干块 ( 称为 逻辑段 ), 各个逻辑段之间可在实际存储空间中完全分开, 也可以部分重叠, 甚至可以完全重叠 每个逻辑段容量不超过 64K 字节, 这样就可用 16 位寄存器提供地址访问 40
物理地址与逻辑地址 物理地址 : 送给存储器的 20 位地址 逻辑地址 : 程序中访问存储器的地址, 段基址 : 偏移地址 转换 : 物理地址 = 段基址 16 + 段内偏移地址 偏移地址 (16 位 ) 段寄存器 (16 位 ) 0000 Σ 地址加法器 例如 : 段基址 : 偏移地址分别是 1200H:0345H 则物理地址 =1200H 16 +0345H =12345H 物理地址 (20 位 ) 41
1.2.5 输入 / 输出设备及 I/O 接口电路 1.I/O 接口的功能 (1) 数据的寄存和缓冲功能 (2) 信号转换功能 (3) 设备选择功能 (4) 外设的控制和监测功能 (5) 中断或 DMA 管理功能 (6) 可编程功能 2. 外部设备与 CPU 之间的数据传送方式 (1) 无条件传送方式 (2) 查询传送方式 (3) 中断传送方式 42
3.8086 中的常用接口电路简介 8255A 是 Intel 公司生产的可编程并行 I/O 接口芯片 8253 是 Intel 公司生产的可编程计数 / 定时器接口电路 8251A 是 INTEL 公司生产的可编程的串行通讯接口芯片 8259A 是 Intel 公司生产的可编程中断控制器芯片 43
1.2.6 总线 总线是连接多个设备或功能部件的一簇公共信号线, 它是计算机各组成部件之间信息交换的通道 按总线在微机结构中所处的位置不同, 可把总线分为以下四类 : (1) 片内总线 : (2) 片级总线 : (3) 系统总线 : (4) 外部总线 : 按总线功能可分三类 (1) 地址总线 (AB): (2) 数据总线 (DB): (3) 控制总线 (CB): 44
1.2.7 微型计算机工作过程 存储程序 和 程序控制 指令是指计算机完成一个基本操作的命令 指令系统是一个计算机所能够处理的全部指令的集合 一条指令一般包括两个部分 : 操作码和操作数 例如计算 3+5=? 在执行程序之前需要做好如下几项工作 : (1) 用助记符号指令 ( 汇编语言 ) 编写程序 ( 源程序 ); (2) 用汇编软件 ( 汇编程序 ) 将源程序汇编成计算机能识别的机器语言程序 ; (3) 将数据和程序通过输入设备送入存储器中存放 45
假设上面例子的汇编语言源程序和机器语言程序如下 : 汇编语言 机器语言 功能 MOV AL,03H 1011 0000 0000 0011B ; 把 01 送入累加器 A ADD AL,05H 0000 0100 0000 0101B ;02 与 A 中内 容相加, 结果存入 A HLT 11110100B ; 停止操作 编译好的机器语言程序有 5 个字节, 设放于存储器地址为 00H 开始的单元处 46
47
1. 执行第一条指令的过程 ----(1) 取第一条指令 +1 5 存储器 B0H 01H 04H 02H F4H 3E AB 3 AR 00 1 00 2 PC PLA ID 7 B0H 内部数据总线 F ALU J 2 I 2 AL IR 6 B0H BL DB 4 DR CPU 读 48
取第一条指令 1) 当前程序计数器 PC 或 IP 内容 (00H) 送地址寄存器 AR 2) PC 自动加 1, 等于 01H, 指向下一个存储器单元 这里指向第一条指令的操作数 3) 地址寄存器 AR 的内容 00H 通过地址总线 AB 送至存储器, 经地址译码器译码选中相应的 00H 单元 4) CPU 发出存储器 读 命令 5) 在读命令的控制下, 所选中的 00H 单元的内容读至数据总线 DB 上 6) 读出的内容经数据总线 DB 送至数据寄存器 DR 7) 指令译码 因为取出来的是指令的操作码, 所以数据寄存器 DR 的内容被送至指令寄存器 IR 中, 然后再送至指令译码器 ID, 译码后由控制器发出执行这条指令的各种控制命令 49
1. 执行第一条指令的过程 ----(2) 执行第一条指令 5 存储器 B0H 01H 04H 02H F4H 3E AB 3 AR 01 +1 2 01 1 PC PLA ID IR 内部数据总线 F ALU J 2 I 2 01H AL DB 6 4 读 01H DR 7 CPU BL 50
执行第一条指令 1) 将当前程序计数器 PC 或 IP 的内容 01H 送至地址寄存器 AR 2) PC 自动加 1, 等于 02H, 这里指向下一条指令, 为取下一条指令作准备 3) 地址寄存器 AR 的内容 01H 通过地址总线 AB 送至存储器, 经地址译码器译码后选中存储器 01H 单元 4) CPU 发出存储器 读 命令 5) 在读命令的控制下, 所选中的 01H 存储单元的内容 01H 读至数据总线 DB 上 6) 读出的内容经数据总线 DB 送至数据寄存器 DR 7) 因为经过译码已经知道读出送到累加器 AL, 所以数据寄存器 DR 的内容 01H 通过内部数据总线送至累加器 AL 于是第一条指令执行完毕, 操作数 01H 被送到累加器 AL 中 51
2. 执行第二条指令的过程 -----(1) 取第二条指令 与取第一条指令同 2) 执行第二条指令 5 存储器 B0H 01H 04H 02H F4H 3E AB 3 AR 03 +1 2 03 1 PC PLA ID IR 内部数据总线 F 9 ALU 8 I 1 I 2 7 03H 10 A DB 6 4 读 02H DR CPU B 52
执行第二条指令 1) 将当前程序计数器 PC 或 IP 的内容 03H 送至地址寄存器 AR 2) PC 自动加 1, 等于 04H, 这里指向下一条指令, 为取下一条指令作准备 3) AR 通过地址总线把地址 03H 送至存储器, 经过译码, 选中相应的单元, 4) CPU 发出存储器 读 命令 5) 在读命令的控制下, 所选中的 03H 存储单元的内容 02H 读至数据总线 DB 上 6) 读出的内容经数据总线 DB 送至数据寄存器 DR 7) 数据寄存器 DR 的内容通过内部数据总线送至 ALU 的一个输入端 8) 累加器 AL 中的内容 01H 送 ALU 的另一个输入端, 在 ALU 中执行加法操作 9) 相加的结果 03H 由 ALU 输出至累加器 AL 中 53
3. 执行第三条指令的过程 第二条指令执行结束后, 程序计数器 PC 的值为 04H, 指向第三条指令在存储器中的首地址, 进入第三条指令的执行过程 第三条指令的处理与前面完全相同, 第三条指令的操作码 F4H(HLT) 取出经译码器译码后就停机 整个程序执行完毕 54
1.3 单片机及其特点 1.3.1 单片机的基本概念 单片机属于微型计算机的一种, 是把微型计算机中的微处理器 存储器 I/O 接口 定时器 / 计数器 串行接口 中断系统等电路集成在一块集成电路芯片上形成的微型计算机 因而被称为单片微型计算机, 简称为单片机 单片机按照用途可分为通用型和专用型两大类 在单片机使用上注意以下几个相互有相同点也有区别的概念 (1) 单板机 : (2) 单片机 :(3) 多板机 :
1.3.2 单片机的主要特点 (1) 在存储器结构上, 单片机的存储器采用哈佛 (Harvard) 结构 ROM 和 RAM 是严格分开的 ROM 称为程序存储器, 只存放程序 固定常数和数据表格 RAM 则为数据存储器, 用作工作区及存放数据 (2) 在芯片引脚上, 大部份采用分时复用技术 (3) 在内部资源访问上, 通过用特殊功能寄存器 (SFR) 的形式 (4) 在指令系统上, 采用面向控制的指令系统 (5) 内部一般都集成一个全双工的串行接口 (6) 单片机有很强的外部扩展能力 56
1.3.3 单片机发展及其主要品种 1. 4 位单片机 2. 8 位单片机 在 1978 年以前各厂家生产的 8 位单片机, 由于集成度的限制, 一般都没有串行接口, 只提供小范围的寻址空间 ( 小于 8KB), 性能相对较低, 称为低档 8 位单片机 在 1978 年以后, 集成电路水平提高, 出现了一些高性能的 8 位单片机, 它们的寻址能力达到了 64KB, 片内集成了 4-8KB 的 ROM, 片内除了带并行 I/O 口外, 还有串行 I/O 接口, 甚至有些还集成 A/D 转换器 这类单片机称为高档 8 位单片机 3. 16 位单片机 4. 32 位单片机 57
1.3.4 单片机的应用 1. 单机应用 (1) 工业自动化控制 (2) 智能仪器仪表 (3) 计算机外部设备和智能接口 (4) 家用电器 2. 多机应用 3. 单片机的等级 (1) 民用级或商用级 温度适应能力在 0 C~70 C, 适用于机房和一般的办公环境 (2) 工业级 温度适应能力在 -40 C~85 C, 适用于工厂和工业控制中, 对环境的适应能力较强 (3) 军用级 温度适应能力在 -65 C~125 C, 运用于环境条件苛刻, 温度变化很大的野外 主要用在军事上 58
作业 作业 : 1 2 3 5 8 10 11 59