第1章
初识PIC
我们可以把单片机简单地理解成单芯片计算机。经过多年的发展,单片机的内涵被不断丰富,越来越多的功能被赋予给了这个单芯片计算机,使得其功能变得愈发强大。可以说,在单片机的江湖中,家族林立,门派众多。在不同的单片机品牌中,有这样一类单片机,由于采用了与51单片机不同的内部架构,并且融合了当前众多的先进技术,采用模块化的结构,使得其旗下单片机产品适应性和性能大幅提高,在市场上取得了很大的成功,这类单片机就是我们接下来要探访的PIC单片机。
1.1 与众不同的PIC
1.1.1 PIC单片机大家族
PIC单片机是由美国微芯公司(MICROCHIP)生产的一类高性能系列单片机。微芯公司的产品线非常丰富,有数百个型号的单片机供用户选择。为了说明PIC单片机的分类情况, 我们引用了一幅来自MICROCHIP官方网站上的图片,来介绍PIC单片机的产品系列。
图1-1列出的是PIC单片机的产品家族。从图中可以看出,PIC单片机产品中,按照内部数据总线宽度的不同,可分为8位机(8-bit)、16位机(16-bit)和32位机(32-bit)三大类。在每一类产品中,根据芯片内部资源配置不同,又衍生出了不同的产品型号。在此,我们有必要了解一下PIC单片机产品的命名方法。
PIC单片机的产品命名由前缀、系列号和产品型号三部分构成。
1)前缀为PIC或dsPIC。PIC是MICROCHIP 公司的产品代号,dsPIC则是集成有DSP(数字信号处理器)功能的PIC单片机。
2)系列号为10/12/16/18/24/30/33/32。其中PIC10、PIC12、PIC16、PIC18系列为8位单片机,PIC24、dsPIC30、dsPIC33系列为16位单片机,PIC32系列为32位单片机。
3)产品型号通常为一组数字或字母。比如PIC18F4520,4520即为产品型号。
1.1.2 哈佛内核结构
桌面上的PC我们并不陌生,可能你对它的内部硬件结构也如数家珍,如CPU、内存、硬盘、主板等。那作为单片机,它的内部会有些什么呢?
在单片机的芯片内部,是由负责逻辑运算功能的CPU、数据存储器RAM、程序存储器ROM、多个I/O端口以及各种功能模块构成的。近年来,单片机的片内功能不断丰富,加入了如A/D转换器、比较器、PWM等多个模块来扩展功能,并且使用基于闪存(FLASH)工艺的程序存储器,代替了原来的只读存储器ROM,使其易用性大大增强。
我们知道,单片机内部有两种常用的存储器,一种是用于保存程序代码的程序存储器,另一种是用于保存程序执行的中间结果和过程数据的数据存储器。单片机在工作的时候,CPU是要访问上面提到的这两种存储器的,在不同的单片机内核结构中,CPU、程序存储器和数据存储器三者之间的关系是不同的。
51单片机是基于“冯?诺依曼”结构的。这种内核结构的单片机典型特点是程序存储器和数据存储器都挂接在同一条8位的数据总线上,CPU也使用这条8位总线来对两种存储器进行访问,基于“冯?诺依曼”结构的单片机内部构成,如图1-2所示。
这种内核结构的单片机在访问程序存储器和数据存储器时,只能通过同一条8位总线来完成,在同一时间里,要么从程序存储器中存取指令,要么从数据存储器中存取数据,这样就难免出现总线竞争的情况,使数据流量受到限制,从而影响单片机的工作效率。
PIC单片机则是采用了更加先进的“哈佛”结构。这种内核结构的典型特点就是程序存储器和数据存储器有各自独立的总线,CPU对数据存储器的访问是通过8位的数据总线来完成的,而对程序存储器的访问则是通过独立的指令总线来完成的。采用“哈佛”结构的单片机内部构成,如图1-3所示。
基于“哈佛”结构的单片机内部有两条独立的总线,CPU在同一时间内,既可以访问数据存储器,又可以访问程序存储器,这样就增加了双倍的数据流量。另外,由于数据总线和指令总线互相独立,二者的宽度也可以不同。
也正是按照指令总线的不同宽度,PIC将8位单片机划分成了低、中、高三档。PIC10、PIC12系列指令总线是12位宽,属于低档机,这类单片机特点是结构简单、价格低廉,主要用于一些控制任务相对简单且对价格敏感的低端消费类产品。PIC16系列指令总线是14位宽,属于中档机,也是目前型号最为丰富的一个系列。这类单片机的特点是片内功能模块种类齐全,配置灵活且价格适中,应用十分广泛。PIC18系列指令总线是16位宽,属于高档机,内核结构在PIC16基础上有很大改进,而且加入了单周期硬件乘法器,大大提高了运算能力,其性能甚至达到了部分16位单片机的水平,适合于一些高端的应用。以上介绍的三档PIC单片机,尽管指令总线宽度不同,但数据总线的宽度全部是8位的,所以它们仍然属于8位单片机。
1.1.3 PIC的功能概要
当你在开发产品时,用户的需求往往是多种多样的。有时为了提高处理能力需要很高的运算速度,有时为了延长电池的供电时间需要极低的功耗,有时为了提高产品的竞争力需要有简约的外围电路和与电路一样简约的成本……凡此种种,PIC都想到了,而且还会巧妙地替你去解决,这也是PIC在市场上取得成功的关键。接下来,我们就将对PIC的这些功能分别加以说明。
1.非凡的运算速度
可以肯定地说,你一定不喜欢跑起程序来慢得像蜗牛的处理器。PIC单片机采用了更为先进的“哈佛”内核结构,大部分指令采用单字结构,而且引入了指令流水线的概念,大幅提高了其运算能力。
(1)单字指令
单片机的运行要靠执行一系列的指令才能完成。一条完整的指令是由操作码和操作数两部分组成的,操作码用于表明指令的类型,而操作数则是用来表明指令将会使用哪一个文件寄存器、操作结果的存放位置以及要访问的存储器等。
PIC单片机的指令长度和指令总线的宽度相对应,大部分指令为单字指令,指令的前半部分是操作码,后半部分是操作数。单字指令的好处是只需对程序空间进行一次读取就可获得指令的操作码和操作数,使指令的执行效率大大提高。单字指令的另一个好处是当单片机受到外界的干扰使程序跑飞时,不管执行哪一条指令,其指令结构都是完整的,不会出现错误的执行结果。
相比PIC单片机,51单片机的指令则是多字节指令。其指令的构成是至少用一个字节作为操作码,后面跟随着若干个字节的操作数。由于操作码和操作数分为若干个字节,单片机要通过对程序空间的多次读取才能完成一条指令的执行,浪费了宝贵的时间,而且在程序跑飞时,系统存在着把操作数当成操作码来译码的风险,容易产生错误的运行结果。
(2)单周期完成
指令的执行需要两个步骤,即取指和执行。PIC单片机完成这两个步骤各需要一个指令周期的时间。为了提高指令的执行效率,PIC引入了指令流水线的执行方式,其指令的读取和执行过程如表1-1所示。
由于PIC单片机采用了指令总线和数据总线相互独立的内核结构,使得读取指令和执行指令可以同步进行。从表1-1中可以看出,在一个指令周期内,既完成了上一条指令的执行,又完成了下一条指令的读取,这样的指令流水线机制使得一条指令能在一个指令周期内完成。
2.易用的存储工艺
提起U盘你一定不会陌生,PIC单片机的片内程序存储器也是采用了类似U盘一样的存储介质,用来保存烧写到芯片内部的程序代码。MICROCHIP公司生产的大多数单片机都是FLASH类型的产品,基于FLASH工艺的单片机程序存储器可以电擦除,重复烧写次数能达到10万次以上,某些增强型的FLASH单片机在正常工作时就可以自行更改芯片内部的程序,实现在应用可编程功能,可以方便地实现产品的远程在线升级,这无疑给产品的开发和应用带来很多方便。
3.丰富的片上资源
PIC单片机是一种模块化的结构,它将片内的不同功能分别定义成模块,并且按需要配置到不同型号的单片机内部以供用户选择。常用的功能模块有ADC、MSSP、ECCP、USART、E2PROM等,甚至有的PIC单片机还有USB、LCD(液晶驱动)模块,PIC的这种模块化结构就像是我们玩过的拼图游戏,具体如图1-4所示。
PIC的单片机产品走的是无缝迁徙的路线,同一档次的PIC单片机都具有相同的内核。就拿PIC18系列单片机为例,每一颗以PIC18命名的单片机,都具有一个相同的运算控制和执行内核,该系列下不同型号间的区别是所配置的外围功能模块各不相同。这就像汽车一样,同一个系列不管是高配还是低配,其发动机是相同的,只是在外围部件上略有增减罢了。另外,无缝迁徙的概念还在于同一外设模块在不同型号的单片机上用法是完全相同的,这样做的好处是使用户在不同芯片间移植程序变得简便易行。
4.强劲的驱动能力
PIC单片机的I/O口驱动负载的能力是51系列所不能比拟的。每个I/O口输入和输出电流的最大值均可达到25mA,如此大的驱动能力完全可以直接点亮发光二极管、触发可控硅甚至是驱动微型继电器等外部器件。I/O口强大的驱动能力带来的好处是可以简化外围电路,并且使控制功能更加可靠。
5.极低的待机功耗
PIC单片机采用了纳瓦技术,使其成为目前世界上待机功耗最低的单片机品种之一。采用纳瓦技术的单片机在休眠模式下的整体功耗处于纳瓦(十亿分之一瓦)级范围内,而且该技术已经成为所有PIC新型单片机产品的执行标准,我们使用的PIC18F4520单片机也采用了纳瓦技术。
6.可靠的编程方式
我们在PC上为单片机编写的源程序代码经编译后转化为可被芯片识别的机器码,并最终存储到单片机的程序存储器中。程序从PC下载到单片机的过程称为对芯片的编程或烧写。PIC单片机的编程是通过专用的编程器来实现的,MICROCHIP公司专门为其旗下的芯片开发所设计的编程器种类很多,常用的有PICkit 2、PICkit 3、ICD 2、ICD 3等。其中PICkit 2集编程器和调试器功能于一身,是高性价比的编程调试解决方案,它既可以完成PIC大部分芯片的烧写,又可实现诸如设置断点、单步运行和监视寄存器及变量等多种在线调试功能,是入门用户的首选。