《我和PIC单片机:基于PIC18》——第1章 初识PIC 1.1 与众不同的PIC

第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大部分芯片的烧写,又可实现诸如设置断点、单步运行和监视寄存器及变量等多种在线调试功能,是入门用户的首选。

时间: 2024-09-19 17:01:38

《我和PIC单片机:基于PIC18》——第1章 初识PIC 1.1 与众不同的PIC的相关文章

《我和PIC单片机:基于PIC18》——1.2 主题芯片介绍

1.2 主题芯片介绍 PIC单片机产品线丰富,型号众多.目前在国内介绍PIC的书籍中,大多都以具有较高性价比的中档机作为例子.为了能更加全面地展示PIC,本书是以高档的18系列单片机PIC18F4520作为主题芯片,对其片内功能和开发方法做一个全面的介绍. 1.2.1 片内资源配置 PIC18F4520单片机片内资源配置如表1-2所示. 从表1-2中我们可以看出,PIC18F4520单片机片内资源十分丰富,存储器方面主要有32K字节基于闪存工艺的程序存储器,1024+512字节的数据存储器,以及

《我和PIC单片机:基于PIC18》——导读

前 言 无论你是51单片机的铁杆粉丝,还是立志电子研发的有为青年,抑或是发烧友型的宅男技术控,PIC单片机都是值得你花时间和精力去仔细研究的一种微控制器.纵观国内8位单片机市场,PIC在性能指标.开发环境.产品线结构以及性价比方面都不逊色于任何一个竞争对手.而与PIC丰富的产品形成鲜明对比的是,介绍PIC的书籍稍显匮乏,大部分书籍还是以PIC16中档机为例配合汇编语言进行介绍.其实,目前PIC18高档机的价格与中档机相比已经没有明显的差距了,但性能却比后者提高了很多,本书就是以PIC的高档系列P

《我和PIC单片机:基于PIC18》——第2章 PIC的开发环境 2.1 PIC开发的硬件资源

第2章 PIC的开发环境 前面我们学习了PIC的内部资源配置和I/O口的基本结构,这一章我们重点要实现对I/O口的控制.单片机是软硬件结合的统一体,因此本章先介绍如何用简单的材料搭建起供学习使用的最小系统板,之后要学习MPLAB IDE集成开发环境,并且在该环境下使用C语言编写程序点亮一个发光二极管. 2.1 PIC开发的硬件资源 学习单片机贵在动手实践,这就要求我们需要有必要的硬件作为辅助才能达到预期的学习效果.作为初学者,可以购买成品的PIC开发板,这样做的好处是可以节约一些时间,让你更加专

《我和PIC单片机:基于PIC18》——2.4 我的第一个PIC程序

2.4 我的第一个PIC程序 在MPLAB IDE 软件中,PIC的开发是以项目为单位进行的.你选择的芯片类型.程序源代码.生成的文件都包含在项目中.因此,我们要从建立一个新项目开始,直至完成所有的开发工作. 2.4.1 建立开发项目 MPLAB IDE软件安装完成后,桌面上会出现软件的快捷方式图标.由于PICC18编译器是挂接在MPLAB IDE软件内部的,所以PICC18软件安装完成后其图标不会出现在桌面上.MPLAB IDE软件快捷方式图标如图2-31所示. 1)双击桌面上MPLAB ID

《我和PIC单片机:基于PIC18》——2.2 MPLAB IDE集成开发环境

2.2 MPLAB IDE集成开发环境 MPLAB IDE软件由MICROCHIP公司出品,专门用于为其旗下的PIC单片机及dsPIC数字信号处理器开发应用程序.MPLAB IDE软件提供了一个完整的PIC开发过程支持,因此被称为集成开发环境(IDE).为了更好地理解集成开发环境的概念,我们需要先来了解一下单片机系统的开发过程. 2.2.1 单片机系统开发过程 PIC单片机组建单片机系统时,其开发过程一般要经历以下几个步骤: 1)创建设计方案.根据所需的功能要求,决定最适合的PIC单片机型号,并

pic单片机-PIC单片机代码下载出了什么bug?

问题描述 PIC单片机代码下载出了什么bug? 用同学的电脑下载成功,同学的环境等都是我弄的,跟我的一样,代码一样,硬件一样.软件是PICKIT2和MPLAB IDE v8.80,下载显示成功,而且在板子下载器的vdd引脚测到了电压.但是就是不亮灯.同样的板子同样的代码和操作,就是电脑不同,在同学那可以亮灯,我这里不行.跪求原因.

pic单片机-PIC单片机与电脑通过modbus485通信来传输数据

问题描述 PIC单片机与电脑通过modbus485通信来传输数据 有一个modbus.c文件定义了modbus协议的基本内容,且UART1B的收发端连485转换之后连接电脑,现在需要通过电脑发送一条指令读取寄存器上的数据. 举个例子:我往modbus协议地址0x0001写入数据SetRegister(0x0001,UA): 之后电脑往UART1B接收端发一条读寄存器指令:01 03 00 01 00 01 D5 CA (保护设备地址,功能码,寄存器首地址,寄存器读取个数,CRC),UART1B接

程序-PIC单片机串口通信时波特率的具体算法?

问题描述 PIC单片机串口通信时波特率的具体算法? 我那个单片机是PIC16F877A,晶振4M,我想将波特率设置为38400,求告知具体算法 真的救急.这是因为我蓝牙模块的波特率为38400的,最初我单片机程序的波特率是9600的,我是不是也要将单片机的程序的波特率也设置为38400呢,还是将蓝牙模块的波特率设置为9600呢,最主要是我电脑没蓝牙,没办法修改蓝牙模块的波特率. 解决方案 资料页的最后有个表格,上面有

用spi接口与74hc595通信 的pic单片机的代码给数码管

问题描述 用spi接口与74hc595通信 的pic单片机的代码给数码管 用spi接口与74hc595通信 的pic单片机的代码 按照datasheet写 总是不显示 解决方案 595是串行接口,按照一定时序将串行数据转换为并行数据,,spi接口配置时序是否与595要求的一致,以及595其他控制信号是否配置合适.不建议用spi控制,建议用普通io模拟就可以了.