1、习题 11.1 什么是单片微型计算机?答:单片微型计算机是将计算机的基本部件微型化并集成到一块芯片上的微型计算机,是计算机微型化的典型代表之一,通常片内都含有 CPU、ROM、RAM、并行 I/O、串行 I/O、定时器/ 计数器、中断控制、系统时钟及系统总线等。1.2 单片机的发展经历了哪几个阶段?在哪一阶段确立了单片机在嵌入式应用中的地位。答:单片机初级阶段(19741976 年),芯片化探索阶段(1976 1978 年),8 位单片机成熟阶段(19781982 年),从 SCM 向 MCU 过渡阶段(1983 1990 年),MCU 百花齐放阶段(1990 年至今)。其中,芯片化探索阶段(
2、19761978 年)确立了单片机在嵌入式应用中的地位。1.3 单片机可分为几个系列?简述每个系列的主要特性。答:单片机按系列可分为 80C51 系列、PIC 系列和 AVR 系列等。PIC 系列单片机是 Micro Chip 公司的产品,与 51 系列单片机不兼容。1) PIC 系列单片机最大的特点是从实际出发,重视产品的性能与价格比,发展多种型号来满足不同层次的应用要求。2) 精简指令使其执行效率大为提高。3) 产品上市零等待(Zero time to market)。4) PIC 有优越开发环境。5) 其引脚具有防瞬态能力,通过限流电阻可以接至 220V 交流电源,可直接与继电器控制电路
3、相连 ,无须光电耦合器隔离,给应用带来极大方便。6) 彻底的保密性。7) 自带看门狗定时器,可以用来提高程序运行的可靠性。8) 睡眠和低功耗模式。AVR 单片机是 1997 年由 ATMEL 公司研发出的增强型内置 Flash 的 RISC(Reduced Instruction Set CPU) 精简指令集高速 8 位单片机。AVR 单片机的主要特性1) AVR 单片机以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。2) AVR 单片机硬件结构采取 8 位机与 16 位机的折中策
4、略,即采用局部寄存器堆(32 个寄存器文件) 和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1MIPS/MHz),克服了瓶颈现象;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。3) AVR 单片机内嵌高质量的 Flash 程序存储器,擦写方便,支持 ISP 和 IAP,便于产品的调试、开发、生产、更新。4) AVR 单片机的 I/O 线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使得 I/O 口资源灵活、功能强大、可充分利用。5) AVR 单片机片内具备多
5、种独立的时钟分频器,分别供 URAT、I 2C、SPI 使用。6) 增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验帧错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过 MCS-51/96 单片机的串口,加之 AVR 单片机高速,中断服务时间短,故可实现高波特率通讯。 7) 面向字节的高速硬件串行接口 TWI、SPI 。TWI 与 I2C 接口兼容,具备 ACK 信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/ 发全部 4 种组合的多机通信。 SPI
6、 支持主/从机等 4 种组合的多机通信。8) AVR 单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路 BOD,多个复位源(自动上电复位、外部复位、看门狗复位、BOD 复位) ,可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。9) AVR 单片机具有多种省电休眠模式,且可宽电压运行(52.7V),抗干扰能力强,可降低一般 8 位机中的软件抗干扰设计工作量和硬件的使用量。10) AVR 单片机技术体现了单片机集多种器件(包括 FLASH 程序存储器、看门狗、 EEPROM、同/ 异步串行口、 TWI、SPI、A/D 模数转换器、定时器/ 计数器等) 和多种功能( 增强可靠性的复位
7、系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具有输入捕获和比较匹配输出等多样化功能的定时器/计数器、具有替换功能的 I/O 端口等)于一身,充分体现了单片机技术的从“片自为战”向“片上系统 SOC”过渡的发展方向1.4 简述单片机技术发展的趋势。答:(1)单片机的大容量化单片机内存储器容量进一步扩大。以往片内 ROM 为 1KB8KB ,RAM 为 64 字节256 字节。现在片内ROM 可达 40KB,片内 RAM 可达 4KB,I/O 也不需再外加扩展芯片。OTPROM、Flash ROM 成为主流供应状态。而随着单片机程序空间的扩大,在空余空间可嵌入实时操作系统 RTOS 等
8、软件。这将大大提高产品的开发效率和单片机的性能。(2)单片机的高性能化高性能化主要是指进一步改进 CPU 的性能,加快指令运算的速度和提高系统控制的可靠性。采用精简指令集(RISC)结构,可以大幅度提高运行速度。并加强位处理功能、中断和定时控制功能;采用流水线结构,指令以队列形式出现在 CPU 中,因而具有很高的运算速度,有的甚至采用多级流水线结构。单片机的扩展方式从并行总线到发展出各种串行总线,并被工业界接受,形成一些工业标准。如 I2C、SPI串行总线等。它们采用 3 条数据总线代替现行的 8 条数据总线,从而减少了单片机引线,降低了成本。单片机系统结构更加简化及规范化。(3)单片机的小容
9、量低廉化小容量低廉的 4 位、 8 位机也是单片机发展方向之一。其用途是把以往用数字逻辑电路组成的控制电路单片化。专用型的单片机将得到大力发展。使用专用单片机可最大限度地简化系统结构,提高可靠性,使资源利用率最高。在大批量使用时有可观的经济效益。(4)单片机的外围电路内装化随着集成度的不断提高,可以把众多的外围功能器件集成到单片机内。除了 CPU、ROM、RAM 外,还可把 A/D、D/A 转换器、DMA 控制器、声音发生器、监视定时器、液晶驱动电路、锁相电路等一并集成在芯片内。为了减少外部的驱动芯片,进一步增强单片机的并行驱动能力。有的单片机可直接输出大电流和高电压,以便直接驱动显示器。为进
10、一步加快 I/O 口的传输速度,有的单片机还设置了高速 I/O 口,可用最快的速度驱动外部设备,也可以用最快的速度响应外部事件。甚至单片机厂商还可以根据用户的要求量身定做,把所需要的外围电路全部集成在单片机内,制造出具有自己特色的单片机。(5)单片机的全面 CMOS 化单片机的全面 CMOS 化,将给单片机技术发展带来广阔的天地。CMOS 芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。低功耗的技术措施可提高可靠性,降低工作电压,可使抗噪声和抗干扰等各方面性能全面提高。单片机的全盘 CMOS 化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的
11、便携化。(6)单片机的应用系统化单片机是嵌入式系统的独立发展之路,单片机向 MCU 发展的重要因素,就是寻求应用系统在芯片上的最大化解决。因此,专用单片机的发展自然形成了 SOC(System on Chip)化趋势。随着微电子技术、IC设计、EDA 工具的发展,基于 SOC 的单片机应用系统设计会有较大的发展。因此,随着集成电路技术及工艺的快速发展,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。1.5 单片机具有哪些突出优点?举例说明单片机的应用领域。答:1单片机寿命长所谓寿命长,一方面指用单片机开发的产品可以稳定可靠地工作十年、二十年,另一方面是指与微处理器相比生存周
12、期长。MPU 更新换代的速度越来越快,以 386、486、586 为代表的 MPU,几年内就被淘汰出局。而传统的单片机如 8051、68HC05 等年龄已有二十多岁,产量仍是上升的。一些成功上市的相对年轻的 CPU 核心,也会随着 I/O 功能模块的不断丰富,有着相当长的生存周期。28 位、32 位单片机共同发展这是当前单片机技术发展的另一动向。长期以来,单片机技术的发展是以 8 位机为主的。随着移动通讯、网络技术、多媒体技术等高科技产品进入家庭,32 位单片机应用得到了长足、迅猛的发展。3低噪声与高速度为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺牲运算速度是单片机技术发展之追求。一些
13、8051 单片机兼容厂商改善了单片机的内部时序,在不提高时钟频率的条件下,使运算速度提高了很多。Motorola 单片机使用了琐相环技术或内部倍频技术使内部总线速度大大高于时钟产生器的频率。68HC08单片机使用 4.9MHz 外部振荡器而内部时钟达 32MHz。三星电子新近推出了 1.2GHz 的 ARM 处理器内核。4低电压与低功耗几乎所有的单片机都有 Wait、Stop 等省电运行方式。允许使用的电源电压范围也越来越宽。一般单片机都能在 36V 范围内工作,对电池供电的单片机不再需要对电源采取稳压措施。低电压供电的单片机电源下限已由 2.7V 降至 2.2V、1.8V。0.9V 供电的单
14、片机已经问世。5低噪声与高可靠性为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取了一些新的技术措施。如 ST 公司的由标准 8032 核和PSD(可编程系统器件)构成的 PSD 系列单片机片内增加了看门狗定时器, NS 公司的 COP8 单片机内部增加了抗 EMI 电路,增强了“看门狗”的性能。Motorola 推出了低噪声的 LN 系列单片机。6ISP 与 IAPISP(In-System Programming)技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即
15、成成品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。IAP(In-Application Programming)技术是从结构上将 Flash 存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。ISP的实现一般需要很少的外部电路辅助实现,而 IAP 的实现更加灵活,通常可利用单片机的串行口接到计算机的 RS232 口,通过专门设计的固件程序来编程内部存储器,可以通过现有的 INTERNET 或其它通讯方式很方便地实现远程升级和维护。单片机的应用领域:1)智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统
16、的电子线路控制,升级换代,提高档次。如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等。2)办公自动化设备:现代办公室使用的大量通信和办公设备多数嵌入了单片机。如打印机、复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。3)商业营销设备:在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC 卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制。4)工业自动化控制:工业自动化控制是最早采用单片机控制的领域之一。如各种测控系统、过程控制、机电一体化、PLC 等。在化工、建筑、冶金等各种工业
17、领域都要用到单片机控制。5)智能仪器仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。如数据处理和存储、故障诊断、联网集控等。6)智能化通信产品:最突出的是手机,当然手机内的芯片属专用型单片机。7)汽车电子产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器(黑匣子)等都离不开单片机。8)航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。习题 22.1 MCS-51 单片机内部包含哪些主要逻辑功能部件?答:微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、特殊功能寄存器(SFR)、并行 I/O 口、串行通信口、
18、定时器/计数器及中断系统。2.2 说明程序计数器 PC 和堆栈指针 SP 的作用。复位后 PC 和 SP 各为何值?答:程序计数器 PC 中存放将要执行的指令地址,PC 有自动加 1 功能,以实现程序的顺序执行。它是 SFR中唯一隐含地址的,因此,用户无法对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以实现改变程序的执行顺序。程序计数器 PC 中内容的变化决定程序的流程,在执行程序的工作过程中,由 PC 输出将要执行的指令的程序存储器地址,CPU 读取该地址单元中存储的指令并进行指令译码等操作, PC 则自动指向下一条将要执行的指令的程序存储器地址。SP 是一个 8 位的 S
19、FR,它用来指示堆栈顶部在内部 RAM 中的位置。系统复位后 SP 为 07H,若不对 SP 设置初值,则堆栈在 08H 开始的区域,为了不占用工作寄存器 R0R7 的地址,一般在编程时应设置 SP 的初值(最好在 30H7FH 区域)。2.3 程序状态字寄存器 PSW 的作用是什么?其中状态标志有哪几位?它们的含义是什么?答:PSW 是保存数据操作的结果标志,其中状态标志有 CY(PSW.7):进位标志,AC(PSW.6):辅助进位标志,又称半进位标志,F 0、F 1(PSW.5、PSW.1):用户标志;OV(PSW.2):溢出标志;P(PSW.0):奇偶标志。2.4 什么是堆栈 ? 堆栈有
20、何作用? 为什么要对堆栈指针 SP 重新赋值 ? SP 的初值应如何设定?答:堆栈是一种数据结构,所谓堆栈就是只允许在其一端进行数据写入和数据读出的线性表。其主要作用有两个:保护断点和保护现场。堆栈区的设置原则上可以在内部 RAM 的任意区域,但由于 MCS-51 单片机内部 RAM 的 00H1FH 地址单元已被工作寄存器 R0R7 占用,20H2FH 为位寻址区,故堆栈一般设在 30H7FH(对于 8032 系列芯片可为 30H0FFH)的区域内。单片机复位后, SP 的内容为 07H,堆栈事实上由 08H 单元开始,考虑到08H1FH 单元分别属于 13 组的工作寄存器区,则最好把 SP
21、 值改置为 1FH 或更大的值。2.5 开机复位后,CPU 使用的是哪组工作寄存器? 它们的地址如何? CPU 如何指定和改变当前工作寄存器组?答:开机复位后使用的是 0 组工作寄存器,它们的地址是 00H07H,对程序状态字 PSW 中的 RS1 和RS0 两位进行编程设置,可指定和改变当前工作寄存器组。RS1、RS0=00H 时,当前工作寄存器被指定为 0 组; RS1、RS0=01H 时,当前工作寄存器被指定为 1 组;RS1 、RS0=10H 时,当前工作寄存器被指定为 2 组; RS1、 RS0=11H 时,当前工作寄存器被指定为 3 组。2.6 MCS-51 的时钟周期、机器周期、
22、指令周期是如何定义的?当振荡频率为 12MHz 时,一个机器周期为多少微秒?答: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是计算机中最基本的、最小的时间单位。 CPU 取出一条指令至该指令执行完所需的时间称为指令周期,因不同的指令执行所需的时间可能不同,故不同的指令可能有不同的指令周期。 机器周期是用来衡量指令或程序执行速度的最小单位。它的确定原则是以最小指令周期为基准的,即一个最小指令周期为一个机器周期。当振荡频率为 12MHz 时,一个机器周期 1 微秒2.7 MCS-51 单片机的控制信号、有哪些功能?答:是访问程序存储器控制信号。当端接低电平时,则不管芯片内部是否有程序存储器,C
23、PU 只访问外部程序存储器。对 8031 来说,因其内部无程序存储器,所以该引脚必须接地。当端接高电平时,CPU 访问内部程序存储器,但当 PC(程序计数器)值超过某一值时,将自动转向片外程序存储器 1000H 地址继续执行程序。是地址锁存允许信号。当 CPU 访问外部存储器或 I/O 接口时,ALE 输出脉冲的下降沿用于锁存 16 位地址的低 8 位。在不访问外部存储器或 I/O 接口时,ALE 端有周期性正脉冲输出,其频率为振荡频率的 1/6。但是,每当访问外部数据存储器或 I/O 接口时,在第二个机器周期中 ALE 只出现一次,即丢失一个 ALE脉冲。片外程序存储器读选通信号。在 CPU
24、 从外部程序存储器读取指令(或常数)期间,每个机器周期两次有效,但在访问外部数据存储器或 I/O 接口时,信号将不出现。端可以驱动 8 个 TTL 负载。2.8 MCS-51 的片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突?答:MCS-51 的片外程序存储器和片外数据存储器共处同一地址空间,地址范围都是 0000HFFFFH(64 KB),但不会发生总线冲突。因片外程序存储器和片外数据存储器的读写控制信号不同,片外程序存储器的读信号是,而片外数据存储器的读信号为、写信号为,访问片外程序存储器和片外数据存储器的指令也不同,所以它们不会发生总线冲突。2.9 简述 MCS-5
25、1 内部数据存储器的存储空间分配。答:内部数据存储器分为 3 个区域:1. 工作寄存器区(00H1FH); 2. 位寻址区(20H2FH); 3. 堆栈和数据缓冲器区(30H7FH 或 30H0FFH)。2.10 位地址和字节地址有何区别? 位地址 20H 具体在内存中什么位置 ?答:MCS-51 的位存储器由以内部 RAM 中 20H2FH 单元和特殊功能寄存器中地址为 8 的倍数的特殊功能寄存器两部分组成。其中每个单元的每一位都有一个位地址映像,它们既可以像普通内部 RAM 单元一样按字节存取,也可以对单元中的任何一位单独存取。字节地址是内部 RAM 中和特殊功能寄存器中每个存储单元的地址
26、。位地址 20H 是内部 RAM24H 中的 D0 位。2.11 8051 的 4 个 IO 口作用是什么 ? 8051 的片外三总线是如何分配的?答:MCS-51 单片机有 4 个 8 位并行 I/O 端口,分别记作 P0、P1、 P2、P3 口。 在访问片外扩展存储器时, P0 口分时传送低 8 位地址和数据, P2 口传送高 8 位地址。P1 口通常作为通用 I/O 口供用户使用。P3 口具有第二功能,为系统提供一些控制信号。在无片外扩展存储器的系统中,这 4 个口均可作为通用 I/O 端口使用。在作为通用 I/O 端口使用时,这 4个口都是准双向口。 在访问片外扩展存储器时,片外三总线
27、的构成:P0 口传送低 8 位地址经锁存器所存构成低 8 位地址总线,高 8 位地址总线由 P2 口构成。P0 口作为单片机系统的低 8 位地址/ 数据线分时复用,在低 8 位地址锁存后,P0 口作为双向数据总线。由 P3 口的第二功能输出数据存储器的读、写控制信号与片外程序存储器读选通信号,访问程序存储器控制信号,地址锁存允许信号构成控制总线。习题 33.1 汇编语句是由 4 个部分(字段)构成的,简述各部分的含义。答:汇编语句的 4 个部分为:标号: 操作码 操作数;注释 标号是用户设定的一个符号,表示存放指令或数据的存储单元地址。标号由以字母开始的 18 个字母或数字串组成,以冒号结尾。
28、不能用指令助记符、伪指令或寄存器名来作标号。标号是任选的,并不是每条指令或数据存储单元都要标号,只在需要时才设标号。如转移指令所要访问的存储单元前面一般要设置标号。一旦使用了某标号定义一个地址单元,在程序的其它地方就不能随意修改这个定义,也不能重复定义。操作码是指令或伪指令的助记符,用来表示指令的性质或功能。对于一条汇编语言指令,这个字段是必不可少的。操作数给出参加运算(或其它操作) 的数据或数据的地址。操作数可以表示为工作寄存器名、特殊功能寄存器名、标号名、常数、表达式等。这一字段可能有,也可能没有。若有两个或三个操作数,它们之间应以逗号分开。注释字段不是汇编语言的功能部分,只是增加程序的可
29、读性。言简意赅的注释是汇编语言程序编写中的重要组成部分。3.2 举例说明 MCS-51 单片机的 7 种寻址方式,各寻址方式的寻址空间。1. 立即寻址 立即寻址方式的寻址空间为程序存储器。 例如: MOV A, #3FH ;3FHA1. 直接寻址 直接寻址方式中操作数存储的空间有三种: 1. 内部数据存储器的低 128 个字节单元(00H7FH ) 例如: MOV A, 30H ;(30H )A指令功能是把内部 RAM 30H 单元中的内容送入累加器 A。 位地址空间例如: MOV C,00H ;直接位 00H 内容进位位 特殊功能寄存器例如: MOV IE,#85H ;立即数 85H中断允许
30、寄存器 IE。1. 寄存器寻址 寄存器寻址方式的寻址空间为工作寄存器和特殊功能寄存器等。 例如: MOV A, R6 ;(R6) A1. 寄存器间接寻址 寄存器间接寻址空间为内部 RAM 128 字节,外部 RAM 例如: MOV A, R0 ;((R0)) A1. 变址寻址 变址寻址空间为程序存储器。 例如: MOVC A, ADPTR ;(DPTR)()AMOVC A,A PC ;(PC)()A1. 相对寻址 相对寻址空间为程序存储器。 2. 当前 PC 值是指相对转移指令所在地址(源地址)加转移指令字节数。即:当前 PC 值 = 源地址 + 转移指令字节数1. 偏移量 rel 是有符号的
31、单字节数,以补码表示,相对值在-128+127 范围内,负数表示从当前地址向上转移,正数表示从当前地址向下转移。所以转移的目的地址为:目的地址 = 当前 PC 值 + rel = 源地址 + 转移指令字节数 + rel例如: JNC 2AH , JZ F8H1. 位寻址 位寻址空间为内部 RAM 20H2FH 的 128 位和 SFR 中的 83 位。 例如: MOV C,30H, MOV P1.0, C3.3 指出下列指令的寻址方式和操作功能:INC 40H ;直接寻址 (40H)+140HINC A ;寄存器寻址 (A)+1AINC R2 ;寄存器间接寻址 (R2)+1(R2)MOVC A
32、, A+DPTR ;基址加变址寄存器寻址 (A)+(DPTR) AMOV A, #6EH ;立即寻址 6EHASETB P1.0 ;位寻址 P1.0 置 13.4 设内部 RAM 中 3AH 单元的内容为 50H,写出当执行下列程序段后寄存器 A、R0 和内部 RAM 50H,51H 单元的内容为何值?MOV A, 3AH ;(A)=50HMOV R0,A ;(R0)=50HMOV A, #00H ;(A)=00HMOV R0,A ;(50H)=00HMOV A, #25H ;(A)=25HMOV 51H,A ;(51H)=25H答:(A)=25H, (3AH)=50H, (R0)=50H,
33、(50H)=00H, (51H)=25H3.5 设堆栈指针 SP 中的内容为 60H,内部 RAM 30H 和 31H 单元的内容分别为 27H 和 1AH,执行下列程序段后,61H,62H,30H,31H,DPTR 及 SP 中的内容将有何变化?PUSH 30H ;(SP)+1SP, (30H) 61HPUSH 31H ;(SP)+1SP, (31H) 62HPOP DPL ; (62) DPL, (SP)-1SPPOP DPH ; (61) DPH, (SP )-1SPMOV 30H,#00H ; 00H30HMOV 31H,#0FFH ; FFH31H答:(61H)=27H, (62H)=1AH, (30H)=00H, (31H)=FFH, (DPTR)=271AH, (SP)=60H3.6 设( A)=30H,(R1)=23H,(30H )=05H。执行下列两条指令后,累加器 A 和 R1 以及内部 RAM 30H 单元的内容各为何值?XCH A,R1XCHD A,R1