标题：微控制器
分类
微控制器（Microcontroller Unit，即MCU）可从不同方面进行分类：根据数据总线宽度可分为8位、16位和32位机；根据存储器结构可分为Harvard结构和Von Neumann结构；根据内嵌程序存储器的类别可分为OTP、掩膜、EPROM/EEPROM和闪存Flash；根据指令结构又可分为CISC(Complex Instruction Set Computer）和RISC(Reduced Instruction Set Computer）微控制器。
发展历程
Intel公司作为最早推出微处理器的公司，同样也是最早推出微控制器的公司。继1976年推出MCS-48后，又于1980年推出了MCS-51，为发展具有良好兼容性的新一代微控制器奠定了良好的基础。在8051技术实现开放后，Philips、Atmel、Dallas和Siemens等公司纷纷推出了基于80C5l内核（805l的CMC)S版本）的微控制器。这些各具特色的产品能够满足大量嵌入式应用需求。基于80C51内核的微控制器并没有停止发展的脚步，例如现在Maxim/Dallas公司提供的DS89C430系列微控制器，其单周期指令速度已经提高到了805l的12倍。
基于CISC架构的微控制器除了80C51外，还包括Motorola提供的68HC系列微控制器，这也是大量应用的微控制器系列。
基于RISC架构的微控制器则包括Microchip的PIC系列8位微控制器等。在16位RISC架构的微控制器中，Maxim公司推出的MAXQ系列微控制器以其高性能、低功耗和卓越的代码执行效率，成为许多需要高精度混合信号处理以及便携式系统和电池供电系统的理想选择。
基于8051内核的CISC微控制器
迄今为止，MCS-51已成为8位机中运行最慢的系列。现在Dallas推出的DS89C430系列产品在保持与80C51引脚和指令集兼容的基础上，每个机器周期仅为一个时钟，实现了8051系列的最高吞吐率。一般而言，对于现有的基于8051的应用软件可以直接写入DS89C430而无需进行更改。除此之外，DS89C430还在许多其他方面引入了新的功能，从而为具体应用提供了更多灵活性。下面介绍DS89C430不同于8051的功能和特点。片内程序存储器及应用片内程序存储器逻辑上分为成对的8 KB、16 KB或32 KB闪存单元，以支持在应用编程。这允许器件在应用软件的控制下修改程序存储器，应用系统能够在执行其主要功能的情况下，完成在线软件升级。DS89C430集成了64 B加密阵列，允许用户以加密形式查看数据，进行程序代码校验。
器件支持通过RS-232串口实现在系统编程。在系统编程通过将器件的一个或多个外部引脚设置为某特定状态来激活引导加载程序。器件启动后，开始执行驻留于器件内部专用ROM的加载程序。一旦收到一个回车符号，串口就执行自动波特率功能，并与主机的波特率同步。如图1所示是在系统编程的物理连接．简单的引导加载程序接口允许使用几种方法来实现PC机与目标微控制
器间的通信。最简单的方法是使用Dallas的微控制器工具包（MTK）软件．它具有高度前端特征，简化了目标配置，上传、下载代码以及特殊功能配置等任务操作。双数据指针8051微控制器是通过MOVX指令来访问片外数据空间的，用MOVX@DPTR指令可访问整个64 KB的片外数据存储器。传统的8051只有一个数据指针DPTR，要将数据从一个地址移到另一个地址非常麻烦。DS89C430则具备双数据指针DPTR0和DPTRl，因此软件可以使用一个指针装载源地址，另一个指针装载目的地址。DPTR0的SFR地址与805l相同（82H和83H），因此使用该指针时源代码无需更改，DPTRl位于84H和85H地址。所有与数据指针相关的操作都使用活动数据指针，活动指针通过控制位SEL选择。每个指针还各有
一个控制位，决定INCDPTR操作是递增还是递减数据指针值。
在拷贝数据块时，与使用单数据指针相比，双数据指针可以节省大量代码。用户通过转换SEL位来转换活动数据指针，其中一种方法可通过执行INCDPS指令来实现。对于这些大的数据块拷贝，用户必须频繁执行该指令来转换DPTR0和DPTRl。为了在节省代码的同时提高运行速度和效率，DS89C430又包含了一个转换选择位 (TSL)，来确定执行MOVX指令时硬件是否自动转换SEL位，这样就可以省去INCDPS指令并进一步提高运行速度。
大的数据块拷贝需要源指针和目的指针逐字节寻址数据空间，传统的方法是通过使用INCDPTR指令来增加数据指针。为了进一步提高数据传输速率，引入了自动增减控制位（AID），用以确定执行MOVX指令时，是否会自动增减活动指针值。表l为各种情况下DS80C320和DS89C430进行64B数据块传输时的速度比较。从表l中可以看出，采用双数据指针后运行速度得到极大提高。电源管理和时钟分频控制CMOS电路的功耗主要由两部分组成：连续漏电流造成的静态功耗以及对负载电容进行充放电所需的转换开关电流造成的动态功耗。其中，动态功耗是总体功耗的主要部分，该功耗（PD）可以通过负载电容（CL）、电源电压（VDD）和工作频率（f）进行计算，即：PD=CL×VDD2×f。
对于某具体应用，电容和电源电压相对固定，而处理器的处理速度在不同时刻可能是不同的，因此工作频率可以根据不同需要进行调整，从而在不影响系统性能的前提下达到降低功耗的要求。
DS89C430支持三种低功耗节电模式。
①系统时钟分频控制：允许微控制器使用内部分频的时钟源继续工作，以节省功耗。通过软件设置时钟分频控制位，设置工作速率为每机器周期1024个振荡器周期．
②空闲模式：以静态方式保持程序计数器，并挂起处理器。在此模式中，处理器不取指令也不执行指令。除了外围接口时钟保持为活动状态以及定时器、看门狗、串口和电源监视功能仍然工作外，所有的资源均保存。处理器能够使用允许的中断源退出空闲模式。
③停机模式：禁止处理器内部的所有电路。所有片内时钟、定时器和串口通信都停止运行，处理器不执行任何指令。通过使用六个外部中断中的任何一个，处理器都能够退出停机模式。
基于RISC架构的微控制器
MAXQ2000微控制器是Maxino/Dallas公司推出的一款基于RISC架构的16位微控制器。理解这款微控制器的一些结构特点，可以使我们更好地理解RISO结构微控制器的最新发展趋势和技术特点，从而为我们构建新型系统提供更加理想的选择。MAXQ2000的指令读取和执行操作在一个周期内完成，而没有流水线操作，这是因为指令既包含了操作码也包括了数据。字母Q表示这款微控制器的一个重要特点便是“安静”，MAXQ架构通过智能化的时钟管理来降低噪声．这意味着MAXQ只向那些需要使用时钟的电路提供时钟，这样既降低了功耗，又为模拟电路的整合提供了一个最安静的环境。它包含液晶显示（LCD）接口，最多可以驱动100或132段（两种版本）。这款微控制器的功耗指标和MIPS/MHz代码效率方面都在同类微控制器当中遥遥领先．下面介绍MAXQ2000的主要特性。指令集指令集由23条对寄存器和存储器进行操作的固定长度的16位指令组成。指令集高度正交，允许算术和逻辑操作使用累加器和任何寄存器。特殊功能寄存器控制外围设备，并细分成寄存器模块。产品系列的结构是模块化的，因此新的器件和模块能够继续使用为现有产品开发的代码．该结构是基于传送触发的，这意味着对某一寄存器位置的读或写会产生额外作用。这些额外作用构成了由汇编器定义的高层操作码的基础，如ADDC、OR和JUMP等。存储器配置MAXQ2000具有32KB闪存、lKBRAM、4KB的内部ROM存储器块和16级堆栈存储器。存储器缺省配置成Harvard结构，程序和数据存储器具有独立的地址空间，还可以使能为Vorl Ncumann存储器配置模式，即将固定用途ROM、代码和数据存储器放置到一个连续的存储器映射中．这适合于需要进行动态程序修改或特殊存储器配置的应用。闪存程序存储器可以通过16字密钥进行密码保护，从而防止未授权者访问程序存储器。同时，还具有3个数据指针，支持高效快速地处理数据．
固定用途ROM由可以在应用软件中进行调用的子程序组成（缺省起始地址为8000H）．包括：通过JTAG或UART接口进行在系统编程（引导加载程序）；在电路调试程序；测试程序（内部存储器测试，存储器加载等）；用于在应用闪存编程和快速查找表的用户可调用程序。无论以任何方式复位，都从固定用途ROM开始运行程序。R。M软件决定程序立刻跳转到8000H位置、用户应用代码的起始位置、还是上面提到的某特定用途子程序．用户可访问固定用途ROM中的程序，并且可以由应用软件调用这些程序。寄存器组器件的大多数功能是由寄存器组来控制的。这些寄存器为存储器操作提供工作空间，并配置和寻址器件上的外设寄存器。寄存器分成两大类：系统寄存器和外设寄存器．公共寄存器组也称作系统寄存器，包括ALU、累加器寄存器、数据指针、堆栈指针等。外设寄存器定义了可能包含在基于MAXQ架构的不同产品中的附加功能．电源管理MAXQ2000同样提供了先进的电源管理功能，根据系统不同时刻的不同性能需求，可以动态设置处理速度，从而大大降低功耗。通过软件选择分频功能，来选择系统时钟周期是l、2、4或者8个振蔼周期。为进一步降低功耗，还有另外三种低功耗模式，256分频、32 kH。和停机模式。中断提供多个中断源，可对内部和外部事件快速响应。MAXQ结构采用了单一中断向量（IV）和单一中断服务程序(ISR）设计。必须在用户中断程序内清除中断标志，以避免由同一中断源引发重复中断。当检测到使能的中断时，软件跳转到一个用户可编程的中断向量位置。
一旦软件控制权转移到ISR，可以使用中断识别寄存器（IIR）来判定中断源是系统寄存器还是外设寄存器。然后，就可以查询特定模块以确定具体中断源，并采取相应的操作。由于中断源是由用户软件识别的，因此用户可以为每种应用确立一个独特的中断优先级方案。高速硬件乘法器集成的硬件乘法器模块执行高速乘法、乘方和累加操作，并能在一个周期内完成一个16位×16位乘法和累加操作。硬件乘法器由2个]6位并行加载操作数寄存器（MA，MB）和1个累加器组成。加载寄存器能够自动启动操作，从而节省了重复计算的时间。硬件乘法器的累加功能是数字滤波、信号处理以及PII）控制系统中的一个基奉单元，这使得MAXQ2000可以胜任需要大量数学运算的应用。
发展前景
通过以上两种基于CISC．和RISC架构的微控制器的对比分析，会发现许多共同的特性，如安全特性、外围设备、电源管理和在系统编程等。显然．它们都是适应具体应用的共性要求而增加的功能。两者最大的不同是指令结构的差异。MCS一5l有50条基本指令，若累计各种不同寻址方式，指令共计lll条，对应的机器指令有单字节、双字节和三字节指令~68H（：05有62条基本指令，加上多种寻址方式，最终指令达210条，也分为单字节、双字节和三字节指令。比较而言，RIS（：微控制器的所有指令是由一些简单、等长度的指令构成．精简指令使微控制器的线路可以尽量优化，硬件结构更加简单，从而可以实现较低的成本和功耗，当然完成相同的工作可能需要更多的指令。所以，二者取舍之间没有绝对优势，只能说根据应用的不同需求和侧重来进行选择。
微处理器是20世纪伟大的技术创新之一，由此而衍生的微控制器将微处理器和外设集于一身，为多种应用开创了新局面，并将继续发挥不可替代的作用。
微处理器体系结构
哈佛结构哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容，解码后得到数据地址，再到相应的数据存储器中读取数据，并进行下一步的操作（通常是执行）。程序指令存储和数据存储分开，可以使指令和数据有不同的数据宽度，如Microchip公司的PIC16芯片的程序指令是14位宽度，而数据是8位宽度。
哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的，执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多，除了上面提到的Microchip公司的PIC系列芯片，还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11，51单片机也属于哈佛结构。冯·诺伊曼结构冯·诺伊曼结构也称普林斯顿结构，是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置，因此程序指令和数据的宽度相同，如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
目前使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了上面提到的英特尔公司的8086，英特尔公司的其他中央处理器、安谋公司的ARM7、MIPS公司的MIPS处理器也采用了冯·诺伊曼结构。
图书信息
基本信息  书 名： 微控制器
作　者：（印度）卡莫（Kamal.R.)
出版社：机械工业出版社
出版时间：2009年09月
ISBN: 9787111270300
开本：16开
定价： 75.00 元内容简介《微控制器：架构、编程、接口和系统设计》全面介绍各种主流微处理器、控制与通信接口、嵌入式系统编程、嵌入式实时操作系统以及开发调试工具和系统设计等内容，系统完整地讨论了嵌入式系统开发的相关技术和知识，适合电学、电子学、计算机科学工程专业的本科生阅读。对嵌入式系统设计感兴趣的软件工程师和对单片机交互感兴趣的硬件工程师而言，《微控制器：架构、编程、接口和系统设计》也是难得的软硬件兼备的优秀参考书。《微控制器：架构、编程、接口和系统设计》从8051微控制器着眼，讲解使用8051、68HC11、80x96和ARM系列微控制器进行系统开发的方法，并通过实例对RTOS，软件构件块、中断处理机制、定时器、IDE和接口电路的使用进行详解。除微控制器的通用体系结构以外，《微控制器：架构、编程、接口和系统设计》还覆盖了程序设计、接口设计和系统设计等主题。作者简介Raj Kamal，资深教授，他的研究领域包括嵌入式系统、微控制器、Internet、Web技术和计算机系统结构等，在国内外杂志上发表过大量研究论文。图书目录出版者的话
译者序
前言
第1章 微控制器的种类、选择和应用
本章目标
1.1 微控制器
1.1.1 中央处理单元
1.1.2 微处理器
1.1.3 微计算机
1.1.4 计算机系统
1.1.5 微控制器
1.1.6 嵌入式处理器
1.2 微控制器的种类
1.2.1 8位、16位、32位微控制器
1.2.2 全内嵌式和带外部存储器的微控制器
1.2.3 CISC和RISC结构微控制器
1.2.4 哈佛和普林斯顿存储结构微控制器
1.3 主流微控制器概览
1.3.1 8051、扩展8051XA和8051MX系列
1.3.2 MC68HCll/68HCl2系列
1.4 微控制器的选择
1.4.1 所需特性列表及需要考虑的因素
1.4.2 处理器和处理器系列的选择
1.4.3 基于片上资源的选择
1.4.4 软件构建块的选择
1.4.5 基于开发工具的选择
1.5 应用实例
1.5.1 自动加工控制
1.5.2 仪器应用
本章小结
关键术语
问题回顾
实践练习
多项选择题
第2章 微控制器的体系结构和资源概述
本章目标
2.1 微控制器体系结构
2.1.1 8048和8049微控制器体系结构的功能概述
2.1.2 8048系列微计算机的管脚和信号
2.2 系列成员
2.3 微控制器资源
2.3.1 总线宽度
2.3.2 程序和数据存储器
2.3.3 并口
2.3.4 EEPROM和Flash
2.3.5 脉宽调制输出
2.3.6 使用PWM或者定时器的片上D/A转换
2.3.7 片上A/D转换
2.3.8 复位电路
2.3.9 看门狗定时器设备
2.3.10 灵活位处理能力
2.3.11 节电模式
2.3.12 定时器
2.3.13 实时时钟
2.3.14 异步和同步串行通信接口
2.4 高级和下一代微控制器中的资源
本章小结
关键术语
问题回顾
实践练习
多项选择题
第3章 8051/8031系列的体系结构
本章目标
3.1 8051微控制器
3.1.1 硬件
3.1.2 端口和电路的10管脚
3.2 内部和外部存储器
3.3 计数器和定时器
3.4 Intel8051的同步串行和异步串行通信接口
3.4.1 串行同步通信
3.4.2 串行异步模式通信
3.4.3 与RS232连接
3.5 中断
本章小结
关键术语
问题回顾
实践练习
多项选择题
第4章 8501系列微控制器指令集
本章目标
4.1 基本汇编语言编程
4.1.1 机器码
4.1.2 指令中的操作码和操作数
4.1.3 指令周期
4.1.4 指令执行时间
4.1.5 作为指令集合的程序和例程
4.1.6 寻址模式
4.1.7 指令集的指令分类
4.2 数据传送指令
4.2.1 MOV指令
4.2.2 MOVC类型指令
4.2.3 MOVx类型指令
4.2.4 应用SP来使用堆栈区域的PUSH和POP指令
4.2.5 xCH类型指令
4.3 数据和位处理指令
4.3.1 字节数据处理（清除、求补、循环移位和交换）指令
4.3.2 布尔变量（位）处理和布尔处理指令
4.4 算术指令
4.5 对寄存器、内部RAM和SFR字节进行逻辑操作的指令
4.6 程序流控制指令
4.6.1 周期延迟（NOP）指令
4.6.2 长跳转、绝对跳转和短跳转
4.6.3 条件相对短跳转
4.6.4 递减然后根据是否为O进行条件跳转
4.6.5 比较后跳转
4.6.6 例程调用——无条件返回和从例程中返回
4.7 中断控制流程（RETI指令）
本章小结
关键术语
问题回顾
实践练习
多项选择题
第5章 实时控制：中断
本章目标
5.1 MCU的中断处理结构
5.1.1 例程、中断和中断服务例程
5.1.2 8051中的中断服务
5.1.3 中断源的标识
5.1.4 中断服务例程的地址
5.2 中断等待时间和中断最终期限
5.3 多重中断源
5.4 不可屏蔽中断源
5.5 中断源的使能（解除屏蔽）或者禁用
5.6 轮询来确定中断源及其优先级分配
5.6.1 轮询更高优先级中断源的优点
5.6.2 在ISR结束时轮询更高优先级待响应中断源的优点
5.7 Intel805l中的中断结构
本章小结
关键术语
问题回顾
实践练习
多项选择题
第6章 实时控制：定时器
本章目标
6.1.MCU中的可编程定时器
6.1.1 编程特性
6.1.2 溢出事件
6.2 自由运行计数器和实时控制
6.2.1 使用输出比较寄存器以及作为自由运行计数器运行的定时器
6.2.2 使用输入采集寄存器
6.2.3 实时钟中断
6.2.4 软件定时器
6.3 中断间隔和密度、约束
6.3.1 中断服务延迟
6.3.2 中断服务间隔
6.3.3 中断密度
6.3.4 中断约束
本章小结
关键术语
问题回顾
实践练习
多项选择题
第7章 系统设计：外设与接口
本章目标
7.1 8251串行10USART通信接口
7.1.1 825l的编程
7.1.2 处理器和DCE的连接
7.2 8255并行端口接口
7.2.1 8255编程
7.2.2 连接8255到处理器
7.3 8257可编程DMA控制器
7.3.1 10事务的方法
7.3.2 8257编程
7.3.3 连接到8086、8085、8096和86HCll12
7.4 可编程中断控制器8259
7.5 ADC电路接口
7.6 DAC电路接口
7.7 内部集成电路接口（I2C总线标准）
本章小结
关键术语
问题回顾
实践练习
多项选择题
第8章 系统设计：数字和模拟接口方法
本章目标
8.1 开关、小键盘和键盘接口
8.1.1 单键按键（开关）及其接口
8.1.2 按键阵列和它的接口
8.1.3 小键盘或者键盘（按键矩阵）和它的接口
8.2 LED和LED阵列
8.2.1 LED和LED信号器
8.2.2 LED或信号器的阵列
8.2.3 7段十六进制数字的LED阵列
8.3 键盘/显示器控制器（8279)
8.4 文字数字式设备——显示系统和它的接口
8.4.1 16段数码显示器
8.4.2 点阵显示器
8.4.3 LCD显示器
8.4.4 LCD显示器控制器
8.4.5 LcD显示控制器的接口连接
8.4.6 Hitachi44780、OptrexDMC16xx、DMCl6 xxx、DMC20xxx和DMC24XXX系列兼容LCD控制器的编程
8.5 打印机接口
8.5.1 并行接口来连接打印机中的打印控制器
8.5.2 串行RS232C：接口来连接打印机中的打印控制器
8.6 使用IEEE488(GPIB）总线来实现可编程指令接口
8.7 与Flash存储器连接的接口
8.8 其他一些接口
8.8.1 将MCU端口10管脚与连接的物理系统光隔离
8.8.2 与线圈的接口
8.8.3 与扩音器的接口
8.8.4 在音乐播放盒中与小键盘和扬声器的接口
8.8.5 在机器人、打印机或工业驱动器中与步进电机的接口
8.9 与大功率设备连接的接口
8.9.1 与输入和输出模块连接的接口
8.9.2 与大功率电机和加热器连接的接口
8.9.3 使用高级微控制器来与功率器件连接的接口
8.10 模拟输入接口
8.11 模拟输出接口
8.11.1 DC电机控制
8.11.2 伺服电机控制
8.12 光学电机转轴编码器
8.12.1 增量式转动编码器
8.12.2 旋转绝对角度编码器
8.13 工业控制
8.13.1 控制应用
8.13.2 基于MCU的刻度尺
8.14 工业过程控制系统
8.15 基于MCU测量仪表的原型
8.16 机器人和嵌入式控制
8.17 数字信号处理和数字滤波器
8.17.1 数字信号处理
8.17.2 数字滤波器
本章小结
关键术语
问题回顾
实践练习
多项选择题
第9章 编程框架：汇编语言和C语言编程
本章目标
9.1 编程基础
9.1.1 寄存器
9.1.2 Intel80518位PSW（程序状态字）
9.1.3 Intel80x9616位PSW（程序状态字）
9.1.4 Motorola8位68HC11CCR（状态条件码）
9.1.5 累加器
9.1.6 指向内存的寄存器（变址寄存器和基址寄存器）
9.1.7 通用数据/地址寄存器和临时内存或寄存器文件
9.1.8 位可访问寄存器
9.1.9 cPU寄存器结构的考虑
9.1.1 0指令和寻址模式
9.2 CPU寄存器和内部RAM的结构
9.3 汇编语言编程
9.4 汇编程序
9.5 在中断期间保持CPU状态
9.6 传递参数
9.6.1 传递参数
9.6.2 将参数传递到堆栈中
9.7 控制结构
9.7.1 N路分支（决策块）
9.7.2 循环
9.8 运行时计算分支转移目的地
9.9 C语言编程和使用GNU工具
9.9.1 用C语言编程
9.9.2 内嵌代码
9.9.3 参数传递
9.9.4 程序编译过程和开发工具
9.9.5 GNU工具
本章小结
关键术语
问题回顾
实践练习
多项选择题
第10章 编程框架：软件构建模块
本章目标
10.1 堆栈
10.2 队列
10.3 表
lO.3.1 表数据和软件构建模块
10.3.2 查询表
10.3.3 Hash表
10.4 字符串
10.4.1 字符串作为可变长度的字符数组
10.4.2 将字符串作为程序存储中的常量使用
10.5 状态机
10.6 按键处理
10.6.1 实际使用中的按键处理
第11章 系统设计中的实时操作系统
第12章 微控制器应用程序开发工具
第13章 16位微控制器809680196系列
第14章 MotorolaMC68HCll系列
第15章 ARM32位McU：架构、编程和开发工具
附录A
附录B
附录C
附录D
附录E
附录F
附录G
多项选择题答案
参考文献
……