单片机技术项目化原理与实训
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 相关知识

项目学习情境1 MCS?51系列单片机的结构和引脚

1. 单片机概念

单片微型计算机(Single Chip Microcomputer),简称单片机,是近代计算机技术发展的一个分支——嵌入式计算机系统。它是将计算机的主要部件(CPU、RAM、ROM、定时器/计数器、输入/输出接口电路等)集成在一块大规模的集成电路中,形成芯片级的微型计算机。自单片机问世以来,就在控制领域得到广泛应用,特别是近年来,许多功能电路都被集成在单片机内部,如A/D、D/A、PWM、WDT、I2C总线接口等,极大地提高了单片机的测量和控制能力,我们现在所说的单片机已经突破了微型计算机(Microcomputer)的传统内容,更准确的名称应为微控制器(Microcontroller),虽然仍称其为单片机,但应把它认为是一个单片形态的微控制器。

2. 单片机的特点

(1)小巧灵活,成本低,易于产品化,有优异的性能价格比。

(2)集成度高,有很高的可靠性,能在恶劣的环境下工作,单片机把功能部件集成在一块芯片内部,缩短和减少功能部件之间的连线,提高了单片机的可靠性和抗干扰能力。

(3)控制功能强,特别是集成了功能接口电路,使用更方便有效,指令面向控制对象,可以直接对功能部件进行操作,易于实现从简单到复杂的各类控制任务。

(4)低功耗,低电压,便于生产便携式产品。

单片机所具有的以上显著特点,使它在各个领域都得到了广泛的应用。从日常的智能化家电产品到专业的智能仪表,从单个的实时测控系统到分布式多机系统及嵌入式系统。使用单片机已经成为各个行业提高产品性能、降低生产成本、提高生产效率的重要手段,例如交通灯、霓虹灯控制,广场上的计时牌等系统中都用到了单片机控制。

3. 80C51系列概述

1)MCS?51系列

MCS?51是Intel公司生产的一个单片机系列名称。属于这一系列的单片机有多种型号,如8051/8751/8031、8052/8752/8032、80C51/87C51/80C31、80C52/87C52/80C32等。

该系列单片机的生产工艺有两种:一种是HMOS工艺(高密度短沟道MOS工艺);另外一种是CHMOS工艺(互补金属氧化物的HMOS工艺)。CHMOS是CMOS和HMOS的结合,既保持了HMOS的高速度和高密度的特点,还具有CMOS的低功耗的特点。在产品型号中凡带有字母“C”的,即为 CHMOS 芯片,不带有字母“C”的,即为 HMOS 芯片。HMOS芯片的电平与TTL电平兼容,而CHMOS芯片的电平既与TTL电平兼容,又与CMOS电平兼容。所以,在单片机应用系统中应尽量采用CHMOS工艺的芯片。

在功能上,该系列单片机有基本型和增强型两大类,通常以芯片型号的末位数字来区分。末位数字为“1”的型号为基本型,末位数字为“2”的型号为增强型。如8051/8751/8031、80C51/87C51/80C31为基本型;8052/8752/8032、80C52/87C52/80C32为增强型。

在片内程序存储器的配置上,该系列单片机有3种形式,即掩模 ROM、EPROM和ROMLess(无片内程序存储器)。如80C51含有4KB的掩模 ROM,87C51 含有4KB的EPROM,而80C31在芯片上无程序存储器,应用时要在单片机芯片外扩展程序存储器。

2)80C51系列

首先,80C51是MCS?51系列单片机中CHMOS工艺的一个典型品种。另外其他厂商以8051为基核开发出的CHMOS工艺单片机产品统称为80C51系列。当前常用的80C51系列产品有:

ATMEL公司的89C51、89C52、89C2051、89C4051等。

Intel公司的80C31、80C51、87C51、80C32、80C52、87C52等。

除此之外,还有Philips、华邦、Dallas、Siemens等公司的许多产品。虽然,这些产品在某些方面有一些差异,但基本结构是相同的。

4. 单片机的内部结构与引脚功能

1)单片机的内部结构

我们已经知道单片机的内部有CPU、RAM、ROM、定时器/计数器、输入/输出接口电路等,这些部件是通过内部的总线连接起来的。80C51单片机的内部结构如图1.1所示。

由内部结构框图上可以看出80C51单片机包括以下资源:

① 一个8位的CPU,含布尔处理器;

② 一个片内振荡器及时钟电路;

③ 总线控制逻辑;

④4KB的程序存储器(ROM/EPROM/Flash,可外扩至64KB);

⑤128B的数据存储器(RAM,可再外扩64KB);

⑥ 特殊功能寄存器SFR;

⑦4个8位的并行口;

图1.1 80C51单片机的内部结构

⑧2个16位的定时/计数器;

⑨1个全双工的异步串行口;

⑩5个中断系统,2个外部中断,3个内部中断。

CPU是单片机的核心,所有的运算和控制都由其实现,它包括两个部分:运算部件和控制部件。运算部件包括算术逻辑单元(ALU)、累加器(ACC)、B寄存器、状态寄存器和暂存寄存器,实现8位算术运算和逻辑运算,以及1位的逻辑运算。控制部件包括指令寄存器等定时控制逻辑电路,产生运算部件所需要的工作时序。

2)80C51单片机的引脚封装

80C51系列单片机采用双列直插式(DIP)QFP44(Quad Flat Pack)和LCC(Leaded Chip Carrier)形式封装。这里仅介绍常用的总线型DIP40引脚封装和非总线型DIP20引脚封装,如图1.2所示。

图1.2 80C51单片机的引脚封装

对于总线型DIP40引脚封装,如图1.2(a)所示,它的引脚包括:

① 电源及时钟引脚(4个)。

Vcc——芯片电源接入引脚,接+5V。

Vss——接地引脚。

XTAL1——晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚需接地)。

XTAL2——晶体振荡器接入的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器的输入端)。

② 控制线引脚(4个)。

RST/VPD——复位信号输入引脚/备用电源输入引脚。

ALE/PROG——地址锁存允许信号输出引脚/编程脉冲输入引脚。

EA/VPP——内外存储器选择引脚/片内EPROM(或Flash ROM)编程电压输入引脚。

PSEN——外部程序存储器选通信号输出引脚。

③ 并行I/O引脚(32个,分成4个8位口)。

P0.0~P0.7——一般I/O口引脚或数据/低位地址总线复用引脚。

P1.0~P1.7——一般I/O口引脚。

P2.0~P2.7——一般I/O口引脚或高位地址总线引脚。

P3.0~P3.7——一般I/O口引脚或第二功能引脚。

对于非总线型DIP20封装的引脚(以89C2051为例),如图1.2(b)所示,它的引脚包括:

① 电源及时钟引脚(4个)。

Vcc——芯片电源接入引脚。

GND——接地引脚。

XTAL1——晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚需接地)。

XTAL2——晶体振荡器接入的另一个引脚(采用外部振荡器时,此引脚作为外部振荡器的输入端)。

② 控制线引脚(1个)。

RST——复位信号输入引脚。

③ 并行I/O引脚(15个)。

P1.0~P1.7——一般I/O口引脚(P1.0和P1.1兼作模拟信号输入引脚AIN0和AIN1)。

P3.0~P3.5、P3.7——一般I/O口引脚或第二功能引脚。

注意:控制信号线写法上的差别。有“非”表示低电平起作用,反之是高电平起作用。

项目学习情境2 单片机中数的表示方法

单片机作为微型计算机的一个分支,其基本功能就是对数据进行大量的算术运算和逻辑操作,但是它只能识别二进制数。对于要进行研究的8位单片机来说,数的存在方式主要有位(bit)、字节(B)和字。所谓“位”就是一位二进制数,即“1”或“0”,用来表示信息的两种不同状态。例如,开关的“通”和“断”,电平的“高”和“低”等。8位二进制数组成一字节,既可以表示实际的数,也可以表示多个状态的组合信息,8位单片机处理的数据绝大部分都是8位二进制数,也就是以字节为单位,单片机执行的程序也以字节形式存放在存储器中。两个字节组成一个字,即16位的二进制数。但二进制数位数较多,书写和识读不便,因而又常用到十六进制数。了解十进制数、二进制数、十六进制数之间的关系和运算方法,是学习单片机的重要基础。

1. 十进制数、二进制数、十六进制数

1)十进制数(Decimal)

十进制数的主要特点有:基数为10,由0、1、2、3、4、5、6、7、8、9十个数码构成。进位规则是“逢十进一”。

所谓基数是指计数制中所用到的数码个数,如十进制数共有0~9十个数码,所以基数是10。当某一位数计满基数时就向它邻近的高位进一,十进制数的计数规则是“逢十进一”。十进制数一般在数的后面加符号D表示,可以省略。

任何一个十进制数都可以展开成幂级数形式。例如:

123.45D=1×102+2×101+3×100+4×10-1+5×10-2

其中,102、101、100、10-1、10-2为十进制数各数位的权。

2)二进制数(Binary)

二进制数的主要特点有:基数为2,由0、1两个数码构成。进位规则是“逢二进一”。

二进制数在书写时在数的后面加符号B,B不可省略。二进制数也可以展开成幂级数形式。如:

1011.01B=1×23+0×22+1×21+1×20+0×2-1+1×2-2=11.25D

其中,23、22、21、20、2-1、2-2称为二进制数各数位的权。

3)十六进制数

十六进制数的主要特点有:基数为16,由0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个数码构成,其中A、B、C、D、E、F分别代表十进制数的10、11、12、13、14、15。进位规则是“逢十六进一”。

进制数在书写时在数的后面加符号H表示,H不可省略。十六进制数也可以展开成幂级数形式。如:

123.45H=1×162+2×161+3×160+4×16-1+5×16-2=291.26953125D

其中,162、161、160、16-1、16-2为十六进制数各数位的权。

十六进制数与二进制数相比,大大缩短了数的位数,一个4位的二进制数只需要1位十六进制数表示,计算机中普遍用十六进制数表示,表1.1为十进制数、二进制数、十六进制数的对应关系。

表1.1 十进制数、二进制数、十六进制数的对应关系

2. 数制转换

1)二进制数与十六进制数的转换

① 二进制数转换为十六进制数。采用4位二进制数合成为1位十六进制数的方法,以小数点为界分成左侧整数部分和右侧小数部分,整数部分从小数点开始,向左每4位二进制数一组,不足4位在数的前面补0,小数部分从小数点开始,向右每4位二进制数一组,不足4位在数的后面补0,然后每组用十六进制数码表示,并按序相连即可。

[例1.1] 把111010.011110B转换为十六进制数。

② 十六进制数转换为二进制数。将十六进制数的每位分别用4位二进制数码表示,然后它们按序连在一起即为对应的二进制数。

[例1.2] 把2BD4H和20.5H转换为二进制数

2BD4H = 0010 1011 1101 0100B

20.5H = 0010 0000.0101B

2)二进制数与十进制数的转换

① 二进制数转换为十进制数。将二进制数按权展开后求和即得到相应的十进制数。

[例1.3] 把1001.01 B转换为十进制数。

1001.01 B=1×23+0×22+0×21+1×20+0×2-1+1×2-2=9.25

② 十进制数转换为二进制数。十进制数转换为二进制数一般分为两步,整数部分和小数部分分别转换成二进制数的整数部分和小数部分。

整数部分转换通常采用“除2取余法”即用2连续去除十进制数,每次把余数拿出,直到商为0,依次记下每次除的余数,然后按先得到的余数为低位,最后得到的余数为最高位的次序依次排列,就得到转换后的二进制数。

[例1.4] 将十进制数47转换成二进制数。

则47=101111B

小数部分转换通常采用“乘2取整法”,即依次用2乘小数部分,记下每次得到的整数,直到积的小数为0,最先得到的整数为小数的最高位,最后得到的整数为小数的最低位。积的小数有可能连续乘2达不到0,这时转换出的二进制小数为无穷小数,根据精度要求保留适当的有效位数即可。

[例1.5] 将十进制数0.8125转换成二进制数。

则0.8125=0.1101 B

3)十六进制数与十进制数的转换

① 十六进制数转换成十进制数。将十六进制数按权展开后求和即得到十进制数。

[例1.6] 将十六进制数3DF2H转换成十进制数。

3DF2H=3×163+13×162+15×161+2×160=15858

② 十进制数转换成十六进制数。十进制数转换成十六进制数的方法与十进制数转换成二进制数的方法相似,整数部分和小数部分分别转换。整数部分采用“除16取余法”,小数部分采用“乘16取整法”。

[例1.7] 将十进制数47转换成十六进制数。将十进制数0.48046875转换成十六进制数。

则47=2FH

则0.48046875=0.7BH

从上面的例子可以看出:十进制数转换二进制数的步数较多,而十进制数转换成十六进制数的步数较少。以后将十进制数转换成二进制数,可先其转换为十六进制数,再由十六进制数转换成二进制数,可以减少许多计算。例如:

47=2FH=101111B

3. 二进制数的运算

二进制数的运算比较简单,包括算术运算和逻辑运算,这里简要介绍一下算术运算,逻辑运算将结合单片机的逻辑运算指令在后面的项目中进行介绍。

1)加法运算

运算规则:0 + 0 = 0,0 + 1 = 1 + 0 = 1,1 + 1 = 10(向高位进位)。

[例1.8]

2)减法运算

运算规则:0-0=0,1-0=1,1-1=0,0-1=1(向高位借1)。

[例1.9]

3)乘法运算

运算规则:0×0=0,0×1=1×0=0,1×1=1。

两个二进制数的乘法运算与十进制数乘法类似,用乘法的每一位分别去乘被乘数的每一位,所得结果的最低位与相应乘数位对齐,最后把所得结果相应相加,就得到两个数的积。

[例1.10] 求1010×1001的积。

则1010×1001=1011010

从上面的例子可见,二进制数的乘法运算实质上是由“加” (加被乘数)和“移位”(对齐乘数位)两种操作实现的。

4)除法运算

除法运算是乘法的逆运算。与十进数类似,从被除数的最高位开始取出除数相同的位数,减去除数,够减商记为1,不够减商记为0,然后将被除数的下一位移到余数上,重复前面的减除数操作,直到被除数的位数都下移为止。

[例1.11] 求11001011÷110

则11001011B÷110=100001B,余数101B。

综上所述,二进制数的加、减、乘、除运算,可以归纳为加、减、移位3种操作。我们所要学的单片机都有相应的操作指令。

4. 原码、反码、补码

前面已经提到,8位单片机数是以字节为单位,即以8位二进制数的形式存在的,每字节存放数的范围为0~255,这样的数也可以称为无符号数。而现实中数是有符号的,单片机包括微型计算机中是怎样表示符号数的呢?规定用最高位表示数的符号,并且规定0表示“+”,1表示“-”。其余位为数值位,表示数的大小,如图1.3所示。

图1.3 8位有符号数的结构

例如,+ 1表示为00000001B,-1表示为10000001B,为区别实际的数和它在单片机中的表示形式,把数码化了的带符号位的数称为机器数,把实际的数称为机器数的真值。00000001B和10000001B为机器数,+ 1和-1分别为它们的真值。双字节和多字节数有类似的结构,最高位为符号位,其余的位为数值位。单片机中机器数的表示方法有3种形式:原码、反码和补码。

1)原码

符号位用0表示 +,用1表示-,数值位与该数绝对值一样,这种表示机器数的方法称为原码表示法。

正数的原码与原来的数相同,负数的原码符号位为1,数值位与对应的正数数值位相同。

[+ 1]原=00000001B,[-1]原=10000001B,显然8位二进制数原码表示的范围为:-127~+127。

0的原码有两种表示方法,+ 0和-0。[+ 0]原=00000000B,[-0]原=10000000B

2)反码

一个数的反码可以由它的原码求得,正数的反码与正数的原码相同,负数的反码符号位为1,数值位为对应原码的数值位按位取反。例如:

[+1]= [+1]=00000001B

[-1]=11111110 B

[+0]= [+0]=00000000B

[-0]=11111111 B

8位二进制数反码表示的范围为:-127~+127。

3)补码

补码的概念可以通过调钟表的例子来理解。假设现在钟表指示的时间是4点,而实际的时间是6点,我们有两种方法来校正,一是顺时针拨2小时,是加法运算,即4 + 2 = 6;二是逆时针拨10小时,是减法运算,但4-10不够减,由于钟表是12小时循环,该拨时的方法可由下式表示:12(模)+ 4-10 = 6,与顺时针拨时是一致的,数学上称为按模12的减法。可见4 + 2的加法运算和4-10按模12的减法是等价的。类似的还有按模的加法运算,两个数的和超过模,只保留超过的部分,模丢失。这里的2和10是互补的,数学上的关系为:[X]=模+X

8位二进制数满256向高位进位,256自动丢失,因此8位二进制数模为28=256。

一个数的补码可由该数的反码求得。正数的补码与正数的反码和原码一致,负数的补码等于该数的反码加1。例如:

[+1]= [+1]= [+1]=00000001B

[-1]=11111111B

[-0]=11111111B,加1得00000000B,所以:

[-0]=00000000B= [+0],0的补码只有一种表示方法。

8位二进制数补码的表示范围为-128~+127。8位二进制数的原码、反码和补码的对应关系如表1.2所示。

表1.2 8位二进制数的原码、反码和补码的对应关系

单片机指令处理数据的运算都是对机器数进行运算。请注意观察下面的例子。

[例1.12] 单片机处理1-2的过程。

从该例可以看出,对于加减运算,数据是用补码表示的,运算的结果也是用补码表示的数。单片机(计算机)处理数据时,加减法用补码,乘除法用原码。

[例1.13] 求-5的补码,再将结果作为原码,求其补码。

从该例可以看出,对于一个负数进行两次求补过程,又得到这个数本身,正数的原码和补码又是一致的,可以得出结论:原码和补码是互补的。相互转换的方法和步骤也是一样的。在进行四则运算时经常需要进行原码和补码的相互转换。

5. 8421 BCD码

单片机只能对二进制数进行运算处理,而人类习惯用十进制数,人和单片机交流时就需要经常进行二进制数和十进制数的转换,既浪费时间,也会影响单片机的运行速度和效率,为避免上述情况,计算机和单片机中常用BCD码(Binary Coded Decimal Code),用二进制数对每位的十进制数编码,数据形式为二进制数,但保留了十进制数的权,便于人们识别, BCD码的种类很多,最常用的是8421 BCD码,它用4位二进制数的十进制数的数码进行编码,8421分别代表每位的权,用0000B~1001B分别代表十进制数的0~9,表1.3为它们的对应关系。

表1.3 十进制数与BCD码的对应关系

BCD码在书写时通常加方括号,并加BCD作为下标,如:52D = [0101 0010]BCD。在学习的MCS?51系列单片机中只有BCD码的加法运算,因此本书也只介绍BCD码的加法运算。

由于8421 BCD码也是4位二进制数表示,4位二进制数是“逢十六进一”,而BCD码高位和低位之间是“逢十进一”,单片机运算时把其作为二进制数处理。因此两个BCD码相加时,当低4位向高4位进位时,或高4位向更高位进位时,需要对该4位加6调整,高、低出现非法码(即1010~1111)时,对应4位也要加6调整。

[例1.14] BCD码 X = 23,Y = 49,求X + Y

BCD码 X = 28,Y = 49,求X + Y

6. ASCII 码

在单片机中,除了要处理数字信息外,在某些应用场合还需要处理一些字符信息,要对这些字符信息进行二进制编码后,单片机才能识别和处理。目前普遍采用 ASCII 编码表(American Standard Code For Interchange,美国信息交换标准代码),见表1.4。

表1.4 ASCII 编码表

ASCII 码用7位二进制数表示128个字符,其中包括数码0~9、英文字母、标点符号和控制字符。数码“0”的编码为0110000B,即30H,字母A的编码为10000001B,即41H。

项目学习情境3 单片机应用系统的开发简介

1. 单片机应用系统的开发

设计单片机应用系统时,在完成硬件系统设计之后,必须配备相应的应用软件。正确无误的硬件设计和良好的软件功能设计是一个实用的单片机应用系统的设计目标。完成这一目标的过程称为单片机应用系统的开发。

单片机作为一片集成了微型计算机基本部件的集成电路芯片,与通用微机相比,它自身没有开发功能,必须借助开发机(一种特殊的计算机系统)来完成如下任务:

● 排除应用系统的硬件故障和软件错误;

● 调试完的程序要固化到单片机内部或外部程序存储器芯片中。

1)指令的表示形式

指令是让单片机执行某种操作的命令。在单片机内部,指令按照一定的顺序以二进制码的形式存放于程序存储器中。二进制码是计算机能够直接执行的机器码(或称目标码)。为了书写、输入和显示方便,人们通常将机器码写成十六进制形式。如二进制码0000 0100B可以表示为04H。04H所对应的指令意义是累加器A的内容加1。若写成INC A则要清楚得多,这就是该指令的符号表示,称为符号指令。

2)汇编或编译

符号指令要转换成计算机所能执行的机器码并存入计算机的程序存储器中,这种转换称为汇编。常用的汇编方法有3种:一是手工汇编,设计人员对照单片机指令编码表,把每一条符号指令翻译成十六进制数表示的机器码指令,借助于小键盘送入开发机,然后进行调试,并将调试好的程序写入程序存储器芯片;二是利用开发机的驻留汇编程序进行汇编;三是利用通用微型计算机配备的汇编程序进行交叉汇编,然后将目标码传送到开发机中。

另外,还可以采用高级语言(如C51)进行单片机应用程序的设计。在PC中编辑好的高级语言源程序经过编译、连接后形成目标码文件,并传送到开发机中。这种方法具有周期短、移植和修改方便的优点,适合于较为复杂系统的开发。

2. 单片机应用系统的传统开发方式

单片机开发系统又称为开发机或仿真器。仿真的目的是利用开发机的资源(CPU、存储器和I/O设备等)来模拟欲开发的单片机应用系统(目标机)的CPU存储器和I/O操作,并跟踪和观察目标机的运行状态。

仿真可以分为软件模拟仿真和开发机在线仿真两大类。软件模拟仿真成本低、使用方便,但不能进行应用系统硬件的实时调试和故障诊断,下面介绍在线仿真方法。

1)利用独立型仿真器开发

独立型仿真器采用与单片机应用系统相同类型的单片机做成单板机形式,板上配置LED显示器和简易键盘。这种开发系统在没有普通微机系统的支持下,仍能对单片机应用系统进行在线仿真,便于在现场对应用软件进行调试和修改。另外,这种开发系统还配有串行接口,能与普通微机系统连接。这样,可以利用普通微机系统配备的组合软件进行源程序的编辑、汇编和联机仿真调试。然后将调试无误的目标程序(机器码)传送到仿真器,利用仿真器进行程序的固化。图1.4为利用独立型仿真器开发的示意图。

图1.4 利用独立型仿真器开发的示意图

2)利用非独立型仿真器开发

这种仿真器采用通用的微型计算机加仿真器方式构成。仿真器与通用微机间以串行通信的方式连接。这种开发方式必须有微机支持,利用微机系统配置的组合软件进行源程序的编辑、汇编和仿真调试。有些仿真口上还备有EPROM写入插座,可以将开发调试完成的用户应用程序写入EPROM芯片。与前一种相比,此种开发方式现场参数的修改和调试不够方便。图1.5为利用非独立型仿真器开发的示意图。

以上两种开发方式均在开发时拔掉目标系统的单片机芯片和程序存储器芯片,插上从开发机上引出的仿真头,即把开发机上的单片机出借给目标。仿真调试无误后,拔掉仿真头,再插回单片机芯片,把开发机中调试好的程序固化到EPROM芯片中并将其插到目标机的程序存储器插口上,目标机就可以独立运行了。

图1.5 利用非独立型仿真器开发的示意图

3. 单片机开发方式的发展

由于单片机贴片封装形式的广泛采用以及Flash存储器技术的迅速发展,传统的单片机应用系统开发的理念将受到冲击。采用新的单片机应用系统开发技术可以将单片机先安装到印制电路板上,然后通过 PC将程序下载到目标系统。如 SST 公司推出的 SST89C54和SST89C58芯片分别有20KB和30KB的Super Flash存储器,利用这种存储器可以进行高速读/写,能够实现在系统编程ISP和应用编程IAP功能。首先在PC上完成应用程序的编辑、汇编(编译)和模拟运行,然后实现目标程序的串行下载。

Microchip公司推出的RISC结构单片机PIC16F87X中内置在线调试器ICD(In?Circuit Programming)功能,该公司还配备了具有ICSP(In?Circuit Serial Programming)功能的简单仿真器和烧写器。由于芯片内置了侦察电路逻辑,可以不需要额外的硬件仿真器,通过PC串行电缆(含有完成通信功能的MPLAB?ICD模块及与目标板连接的MPLAB?ICD头)就可以完成对目标系统的仿真调试。