单片机的发展历史
单片机是单片微型计算机(Single chip microcomputer)的简称,又称为微控制器(Micro Control Unit,MCU)。目前,众多厂商将单片机称为微控制器,虽然这样看上去比单片机的名字显得更高级些,但是单片机这个词更能反映其本质特点。单片机是20世纪70年代中期发展起来的一种超大规模集成电路芯片。典型的,大家通常所说的8051单片机,属于MCS-51单芯片系统的一种,它是由英特尔(Intel)公司于1981年开发出来的。然后,英特尔公司将MCS-51的核心技术授权给了很多公司,所以有很多公司在设计以8051为核心的单片机系统。典型地,Atmel、飞利浦和STC公司等。随着半导体技术的不断发展,相继出现了16位和32位的单片机系统。特别是近几年来,ARM公司相继推出了更高性能的单片系统,成为单片系统应用的一个热点领域。但是,作为传统领域的8051单片机性能也得到了很大的提高,和20世纪80年代相比,其处理能力提高了几十倍。因此,仍有非常广阔的市场。
单片机的概念及组成
从字面上来说,单片机一词中的“单片”是指一个芯片,“机”是指小型计算机系统。这个小型计算机系统的功能部件主要包括:中央处理单元、程序存储器、随机访问存储器、中断系统、计数器/定时器、外设接口模块,以及连接各个功能部件的总线,下面对单片机的各个功能部件进行说明
CPU(Central Processing Unit)是单片机系统的大脑和中枢,
它可以完成下面最基本的功能:
1与不同地址空间的不同类型存储器交换信息。通过对存储器的读
和写操作,完成CPU和存储器的信息交换过程。
2执行逻辑和算术指令,基本和常用的指令包括:加/减运算、逻辑
按位或运算、逻辑按位与运算、逻辑按位异或运算、移位运算等。
程序计数器
PC(Program Counter)指向保存将要执行程序指令的存储器地址。然后,通过读操作,从PC所指向的储存器的地址,获取具体的指令内容。指令中包含着操作码和操作数。如果在执行指令的过程中,并不是顺序的执行指令,比如遇到调转指令,那么PC将加载新的所要运行指令的地址,并且从指向Flash新的地址位置的地方执行程序。
指令译码单元
从实现的本质来说,指令译码单元就是一个复杂的有限自动状态机(Finite State Machine,FSM),它用于对来自程序存储器的指令内容进行翻译。从而,用于确定将要执行的指令,这些指令表示CPU下一步所要执行的逻辑操作行为。这些逻辑操作行为,实际上就是一系列的控制序列。
算术逻辑单元
ALU(Arithmetic Logic Unit)是CPU中最为重要的核心单元。通过指令译码单元发出的控制序列,从寄存器、存储器中取出需要运算的数据,并将其送到ALU,执行所要求的算术运算或者逻辑运算。
控制寄存器和状态寄存器组
对于CPU来说,其内部的控制寄存器组用于设置CPU的工作模式,比如:设置CPU的工作模式;而状态寄存器组用于反映CPU当前的工作状态,比如:CPU执行加法运算的过程中,是否出现溢出、进位等
程序存储器
程序存储器用于保存将要执行的程序代码。通常地,程序存储器是非易失性的,即一旦将程序固化到存储器中,除非重新固化程序到存储器,否则程序一直保存在存储器中。即使给单片机断电,在下次上电时,原来固化在程序存储器中的程序仍然存在。 从工艺来说,大多数单片机的程序存储器采用Flash工艺,极少数的单片机采用一次可编程(One-Time-Programmable,OTP)工艺。当采用Flash工艺时,设计者可以多次修改和固化程序;当采用OTP工艺时,一旦程序固化,设计者就再也没有机会修改程序。
随机访问存储器
RAM(Random Access Memory)存储器保存着在程序中所需要用到的数据。典型的,在STC 8051单片机中,提供了用于不同目的RAM。通过不同的指令,实现对这些RAM资源的访问。
中断系统
中断系统用于CPU对外部紧急事件的处理。当CPU正在执行当前的程序时,如果外部设备发出了紧急事件的请求,也就是通常所说的中断请求信号时,如果CPU允许立即处理当前紧急事件时,则打断当前正在执行的程序,从而对紧急事件进行处理,也就是通常所说的用于处理紧急事件的程序,即:中断服务程序。
当CPU开始对外部紧急事件进行处理时,会通过中断系统通知外部设备CPU已经开始处理紧急事件。这样,外部设备会做出相应的判断。
定时器/计数器
在单片机中,定时器/计数器单元作为一个最基本的功能单元。通过这个单元,可以对不同事件进行同步。典型地,当定时器中的计数值到达预先设置的初值时,就会产生定时器中断信号。通过这个信号,外部设备可以做出相应的判断。
外部模块
不同单片机厂商所提供的外部接口模块也不尽相同。但是,基本上都提供了通用IO(General Purpose Input & Output,GPIO)
和RS-232接口等。
根据产品的应用范围,不同单片机厂商还提供了一些个性化的外设。典型的,STC公司在其单片机中就集成了模拟\数字转换器(Analog to Digital Converter,ADC)模块。
总线
总线是一组相关逻辑信号的集合。目前大多数计算机系统都是基于总线的结构,总线包括:控制总线、地址总线和数据总线。
对于单片机系统来说,总线分为内部总线和外部总线。其中:
1 内部总线用于连接芯片内各个模块单元;
2 外部总线用于将外设连接到单片机上。
3 与复杂计算机系统相比,单片机内的总线相对要简单些。