单片机原理与应用:基于Keil+Proteus
上QQ阅读APP看书,第一时间看更新

1.4 微型计算机的组成与工作原理

1.4.1 微型计算机的组成

一个完整的微型计算机应用系统由两大部分组成:硬件部分和软件部分。硬件是组成计算机的物理实体,软件则是对硬件使用和管理的程序。

微型计算机应用系统的硬件由微型计算机和外部设备组成。而微型计算机包含微处理器(CPU)、存储器(存放程序指令或数据的ROM、RAM等)、输入/输出口(I/O接口)及其他功能部件(如定时/计数器、中断系统、串行口)等,它们通过地址总线(AB)、数据总线(DB)和控制总线(CB)连接起来,如图1.2所示。

图1.2 微型计算机的组成

在一般微机中,计算机的几个基本组成部分被做成若干块芯片和电路板,通过“主板”相连,是一个“多板、多片”系统。单片机(Single Chip Microcomputer)也是一种微型计算机,不同的是单片机将几个基本组成部分——CPU、存储器、输入输出接口等,全部集成到一块集成电路芯片中,使得这样一块集成电路芯片就是一部简单的微型计算机,具备了一般计算机的功能,可进行简单运算和控制。

随着微电子、半导体技术的发展,许多半导体公司在单片机内部还集成了许多外围功能电路和外设接口,如定时/计数器、中断、串行通信、模拟/数字转换(ADC)、脉冲宽度调制(PWM)等单元。这些单元已经突破了微型计算机传统的体系结构,突出了单片机的控制特性,使单片机的功能越来越强大,应用也越来越广泛。国际上目前习惯称单片机为微控制器(Micro Control Unit, MCU),这个名称更能确切反映单片机的本质。而在国内,仍然非常习惯地称之为“单片机”,本书中我们使用“单片机”一词。

1.微处理器CPU

微处理器是微型计算机的核心单元,决定了单片机的运算能力和处理速度,它由运算器和控制器组成,其典型的内部结构如图1.3所示。运算器负责进行加、减、乘、除等算术运算和与、或、非、异或等逻辑运算。运算器一般包括算术逻辑运算单元ALU、累加器A、暂存寄存器TMP和标志寄存器F等。控制器负责协调和控制系统工作,让CPU有序地执行指令。控制器一般包括程序计数器指针PC、指令寄存器IR、指令译码器ID、定时和控制逻辑电路、少量通用寄存器和专用寄存器等。

1)算术逻辑单元ALU。由加法器和其他逻辑电路组成,其基本功能是进行加法和移位操作,并由此实现其他各种算术和逻辑运算。

2)累加器A。用来存放参与运算的一个操作数,以及存放运算的结果。

图1.3 CPU内部结构框图

3)暂存寄存器TMP。用来存放参与运算的另一个操作数。

4)标志寄存器F。用来保存ALU操作结果的条件标志,反映运算的状态等,如进位标志、溢出标志、奇偶标志等。

5)程序计数器PC。CPU是根据程序计数器PC中的地址,到程序存储器中去读取相应地址单元中的指令码和数据。

6)指令寄存器IR。存放从程序存储器中读出的指令操作码。

7)指令译码器ID。是分析指令操作码的部件,指令操作码经译码后产生相应于某一特定操作的信号。

8)定时和控制逻辑电路。可分为定时和微操作两部分。定时部件用来产生脉冲序列和各种节拍脉冲,每种节拍脉冲对应于一种微操作。微操作控制部件根据指令译码器产生的信号,按一定时间顺序发出一系列节拍脉冲,作为一系列微操作控制信号来完成指令规定的全部操作。

2.总线

总线是用于传送信息的公共路径。总线可以分为数据总线、地址总线、控制总线,采用总线结构可以减少信息传输线的根数,提高系统的可靠性,增加系统的灵活性。

(1)数据总线DB

数据总线用来在微处理器与存储器以及输入/输出接口之间传送指令代码和数据信息。通常微处理器的位数和数据总线的位数一致,8位微处理器就有8根数据线。数据总线是双向的,既可以从CPU输出,也可以从外部输入到CPU。

(2)地址总线AB

地址总线用于传送地址信息。当微处理器与存储器或及外部设备交换信息时,必须指明要与哪个存储单元或哪个外部设备交换。因此,地址总线必须和所有存储器的地址线对应连接,也必须和所有I/O接口设备相连。这样,当处理器对存储器或外围设备读/写数据时,只要把单元地址码或外围设备的设备码送到地址总线上便可选中对象。地址总线是单向的,即地址总是从CPU传向存储器或外围设备。地址线的数目决定了CPU可以直接访问的存储器的单元数目,如在8位单片机中,它通常为16根,CPU可直接访问的存储器的单元数目为216=65536=64KB。

(3)控制总线CB

控制总线用来传送使微机各个部件协调工作的定时信号和控制信号,从而保证正确执行指令所要求的各种操作。控制总线是双向总线,可分为两类,一类是由CPU发向存储器或外部设备进行某种控制,例如读、写操作控制信号;另一类由存储器或外部设备发向CPU表示某种信息或请求,例如忙信号、A/D转换结束信号、中断请求信号等。控制总线的数目与微处理器的位数没有直接关系,一般受引脚数量的限制,控制总线的根数不会太多。

3.存储器

存储器是用来存放程序和数据的部件。一般包括程序存储器和数据存储器。

● 程序存储器ROM——用于存放用户程序,只允许读操作,ROM的信息可在断电后长期保存。

● 数据存储器RAM——用于存放程序运行时一些需要临时保存的工作变量和数据。RAM存放的信息可随机“读出”或“写入”,其中存放的内容是易失性的,即掉电后会丢失。

(1)存储器的结构

存储器由存储体、地址译码器和读/写控制电路组成,如图1.4所示。

图1.4 存储器结构

● 存储体——存储数据信息的载体。由一系列存储单元组成,每个存储单元都有确定的地址。存储单元通常按字节编址,一个存储单元为一个字节,每个字节能存放一个8位二进制数。就像一个大仓库,分成许多房间,大仓库相当于存储体,房间相当于字节,房间都有编号,编号就是地址。

● 地址译码器——将CPU发出的地址信号转换为对存储体中某一存储单元的选通信号。相当于CPU给出地址,地址译码器找出相应地址房间的钥匙。通常地址是8位或16位二进制数,输入到地址译码器,产生相应的选通线,8位地址能产生28=256个选通信号,即能选通256个单元。16位地址能产生216=65536=64K个选通信号,即能选通64K个单元。

● 读/写控制电路——接收CPU读指令或写指令,确定已被选通存储单元与数据总线的连通方向(传输方向)。若是读指令,则将被选通存储单元中的内容传送到数据总线上;若是写指令,则将数据总线上的数据传送到被选通的存储单元中。

(2)存储器的读操作

以将地址为30H单元中的数据60H读出为例,其读操作时序如图1.5所示,具体操作过程如下:

● CPU将地址码30H送到地址总线上,经存储器地址译码器选通地址为30H的存储单元。

● CPU发出“读”信号,存储器读/写控制开关将数据传输方向拨向“读”。

● 地址为30H的存储单元中的数据60H送到数据总线上。

● CPU将数据总线上的数据60H读入指定的寄存器。

(3)存储器的写操作

以将数据55H写入存储器地址A0H的存储单元中为例,其写操作时序如图1.6所示,具体操作过程如下:

● CPU将地址码A0H送到地址总线上,经存储器地址译码器选通地址为A0H的存储单元。

● CPU将数据55H送到数据总线上。

● CPU发出“写”信号,存储器读/写控制开关将数据传送方向拨向“写”。

● 数据总线上的数据55H送入已被选中的地址为A0H的存储单元中。

图1.5 存储器读操作时序

图1.6 存储器写操作时序

需要指出的是,初学者往往容易把存储单元的地址与存储单元里的内容(数据)混淆,如上述读写例子中的30H、A0H是地址码,60H、55H为数据码,二者均用十六进制数表示,不能搞错。

4.输入/输出接口

微型计算机的输入/输出设备也称为外部设备,简称I/O设备。常见的输入设备有键盘、鼠标、扫描仪等,常见的输出设备有显示器、打印机等。如果这些设备与CPU交换信息,并对它们进行输入/输出控制,一般不能与CPU直接连接,必须有输入/输出接口电路,简称I/O接口电路,以完成I/O设备寻址、数据缓冲、输入输出控制等。常见的I/O接口有并行和串行两种。

● 并行I/O口——单片机的重要资源,用于并行通信,负责实现CPU与并行设备的联系。它可以使单片机和存储器或外设之间并行地传送数据。

● 串行I/O口——用于串行通信,负责实现CPU与串行设备或其他单片机的联系。它可以把单片机内部的并行数据一位一位地向外传送,也可以一位一位地接收外部送来的数据并把它们变成并行数据送给CPU处理。

1.4.2 微型计算机的工作原理

微型计算机是按照程序存储式原理工作,只能被动执行人们事先编制好的程序。程序是指令有规律的集合,而指令是微机生产厂家规定好的微机完成一项操作命令。微机对指令的处理有4个步骤:取指、译码、取操作数、执行。参考图1.7,以执行下列指令为例。

图1.7 微型计算机的工作原理

微型计算机的具体工作步骤如下:

● CPU根据程序计数器指针PC的值到程序存储器ROM相应单元读取指令代码,即CPU按PC给出的地址0000H经地址缓冲器输出到地址总线上,选通程序存储器ROM的0000H地址单元,然后PC=PC+1=0001H,程序存储器ROM将0000H地址单元中的内容E5H输出到数据总线上。

● CPU将E5H读入到指令寄存器IR后,再经过指令译码器进行译码,译出CPU即将要进行的一系列操作。

● CPU按PC给出的地址0001H经地址缓冲器输出到地址总线上,选通程序存储器ROM的0001H地址单元,然后PC=PC+1=0002H;接着CPU根据程序存储器ROM中0001H地址单元中的内容30H地址到内部数据存储器RAM中取操作数20H,即CPU将30H经地址缓冲器输出到地址总线上,选通内部RAM的30H地址单元,内部RAM将30H地址单元的内容20H输出到数据总线上。

● CPU将数据总线上的20H读入到累加器A中,完成MOV A,30H指令的执行。

● CPU再根据PC=0002H经地址总线到程序存储器ROM的0002H单元读取指令代码35H,然后PC=PC+1=0003H。

● CPU将指令代码35H读入到指令寄存器IR,经指令译码器译码,译出即将进行的操作。

● CPU按PC=0003H经地址总线到程序存储器ROM的0003H单元读取内容40H,再根据40H选通内部RAM的相应单元,内部RAM将40H地址单元中的内容55H输出到数据总线上。

● CPU将55H读入到算术逻辑运算单元与累加器A中的内容20H进行加法运算,并将计算结果75H存入累加器A中,从而完成ADD A,40H指令的操作。