Presentation is loading. Please wait.

Presentation is loading. Please wait.

PIC单片机原理及应用 (第二版) 美国微芯公司授权上海技术培训中心 2005.01 PIC上海技术培训中心.

Similar presentations


Presentation on theme: "PIC单片机原理及应用 (第二版) 美国微芯公司授权上海技术培训中心 2005.01 PIC上海技术培训中心."— Presentation transcript:

1 PIC单片机原理及应用 (第二版) 美国微芯公司授权上海技术培训中心 PIC上海技术培训中心

2 第1章微型计算机概论 微型计算机是一种既有快速运算能力,又有极强逻辑判断能力和大容量存储功能的电子设备,它是20世纪人类最卓越的科学发明之一。 本章介绍微型计算机的基础知识,主要内容有微型计算机的发展历史及应用领域、计算机硬件、软件系统的基本组成。 PIC上海技术培训中心

3 1.1 微型计算机的发展历史及应用 我们今天所说的计算机,是指利用电子技术实现计算并具有逻辑判断和程序存储功能的设备。
PIC上海技术培训中心

4 1.1.1 微型计算机的发展历史 从计算机发展的历史看,微型计算机已属于第四代计算机,而微型计算机的发展又已经历了四代。
PIC上海技术培训中心

5 微型计算机的应用 科学计算 数据处理 过程控制 计算机辅助设计/辅助制造 (CAD/CAM) 计算机网络 PIC上海技术培训中心

6 1.1.3 微型计算机系统主要技术指标 字长 :计算机的字长取8的整数倍数, 如8位、16位、32位、64位等
速度 :计算机的速度指标可用主频及运算 速度来评价 (G)、(万次/秒) 存储系统容量 :内存和外存(M)(G) PIC上海技术培训中心

7 1.2 微型计算机系统的组成 计算机的硬件通常包括运算器、存储器、控制器、输入设备及输出设备等五个部分 PIC上海技术培训中心

8 1.2.2 软件系统 软件系统是一台计算机中的系统软件、应用软件、程序设计语言和支持软件及各种文档的总称。
系统软件:包括操作系统、服务程序、汇编程序、解释程序和编译程序等。 应用软件:是用汇编语言或高级语言为解决某种实际问题而编写的程序。 程序设计语言:通常分为面向机器的汇编语言和面向用户的高级语言。 PIC上海技术培训中心

9 1.3 微控制器系统 在计算机的发展历史上,特别是在第一台小型控制器件形成以后,沿着两条完全不同的用途、不同的价格、和不同的技术内涵,而被充实于我们的日常生活中。 PIC上海技术培训中心

10 1.3.1 单片机系统 单片机的发展过程和性能的日益完善,实际上是对传统控制技术的一场革命,开创了微控技术的新天地。
现代控制系统的核心内涵就是嵌入式计算机应用系统(MCU),而单片机就是最典型、最广泛、最普及的嵌入式计算机应用系统。 PIC上海技术培训中心

11 单片机的降临,主要也是源于其性能价格比。一般单片机用于控制的目的,而对于其承担的计算功能却要求不高,只要能按照一定的程式进行在线检测和即时控制工作。
目前,各个单片机生产厂家还是立足于8位单片机的竞争,因为从其降临以来,一直成为应用最广泛的器件。2002年美国MICROCHIP和MOTOROLA两家公司,已占据着世界8位单片机产量最高的前两个芯片制造商。 PIC上海技术培训中心

12 单片机内部结构 一般的单片机的结构可以用图1.2所示的方块图描述,用三大总线(DB、AB、CB)实现模块之间的信息传递。
PIC上海技术培训中心

13 单片机的主要应用 人有所思,单片机就可为。单片机的应用必将随着社会的发展和技术的进步,而获得更广阔应用。(系列化的单片机 ?) .电信
.家用电器 .工业控制 .仪器仪表 .汽车 .玩具 PIC上海技术培训中心

14 单片机有哪些特点 单片机具备体积小、价格低、性能强、速度快、用途广、可靠性高、灵活性强等优点,它与通用的计算机相比,还具有以下一些特点:
.存储器ROM和RAM的相互独立 .采用面向控制的指令系统 .输入/输出端口的强大功能 PIC上海技术培训中心

15 1.3.2 PIC系列单片机 PIC系列单片机,可以满足用户的各种需要。从中档产品PIC16F877作为切入点,提供非常完备、易学易用的MPLAB-ICD集成开发环境。 特别是对于单片机的新手,仿佛从茫然迷惑的大海搭上一艘便捷平稳的小船,感到非常轻松自如。 PIC上海技术培训中心

16 第2章 PIC单片微机的组成 PIC(Periphery Interface Chip)单片微机是美国Microchip公司生产的PIC系列单片机。 PIC系列单片机的硬件系统设计简洁,指令系统设计精炼。在所有的单片机品种中,PIC具有性能完善、功能强大、学习容易、开发应用方便、人机界面友好等突出优点。 PIC上海技术培训中心

17 2.1 PIC系列单片机概述 2.1.1 PIC系列单片机特点
Microchip公司是一家专门致力于单片机开发、研制和生产的制造商,其产品设计起点高,技术领先,性能优越。 它不是在一般微型计算机CPU的基础上加以改造,而是独树一帜,采用全新的流水线结构、单字节指令体系、嵌入闪存以及10位A/D转换器,使之具有卓越的性能,代表着单片机发展的新方向。 PIC系列单片机,具有高、中、低三个档次,可以满足不同用户开发的需要,适合在各个领域中的应用。 它具有如下特点: PIC上海技术培训中心

18 单片机总线结构 单片微型计算机通常采用两种体系结构:一种是普林斯顿体系结构;另一种是哈佛体系结构。
在普林斯顿体系结构中,其程序存储器和数据存储器统一编址,也就是说两种存储器位于同一逻辑空间。这种单片机的取指令和存取数据必须分时地进行,影响了执行指令的速度。 哈佛体系结构的程序存储器和数据存储器独立编址,也就是说两种存储器有不同的逻辑空间。 PIC上海技术培训中心

19 1. 哈佛总线结构 两总线的分离,也为PIC实现全部指令的单字节化和单周期化创造条件,从而大大提高CPU执行指令的速度和工作效率。

20 单片机总线结构比较 从同一存储器空间取指令和取操作数据。 从两个独立的存储空间分别取指令和存取操作数。 冯-纽曼结构 限制了数据流量。
数据流量增加。 针对程序区和数据区可以设计不同的数据线宽度。 CPU 8-位 程序和 数据 存储器 哈佛结构 CPU 8-位 数据 存储器 12/14/16-位 程序 存储器 PIC上海技术培训中心

21 2.RISC技术 PIC系列单片机的指令系统,由于采用RISC技术,和一般单片机指令系统通常有上百条指令相比要少得多。

22 3.指令特色 PIC系列单片机只有4种寻址方式:寄存器间接寻址、立即数寻址、直接寻址和位寻址,比较容易掌握。 PIC系列单片机的程序、数据、堆栈三者各自采用互相独立的地址空间,前两者的地址访问需要用户特别注意四个分区的范围,而堆栈过程用户不必参与和操心。 代码压缩率,就是指相同程序存储器空间所能容纳有效指令的数量。 PIC上海技术培训中心

23 5.功耗低 由于PIC系列单片机采用CMOS结构,使其功率消耗极低,是目前世界上最低功耗的单片机品种之一。
其中有些型号,在4MHz时钟下工作时耗电不超过2mA,而在睡眠模式下耗电可低到1μA以下。 因此,PIC系列单片机,尤其适用于野外移动仪表的控制以及户外免维护的控制系统。 PIC上海技术培训中心

24 6.驱动能力强 I/0端口驱动负载的能力较强,每个输出引脚可以驱动多达20-25mA的负载,既能够高电平直接驱动发光二极管LED、光电藕合器、小型继电器等,也可以低电平直接驱动,这样可大大简化控制电路。 不过,请读者注意,每个引脚的驱动能力并不表示端口引脚同时都具有这样的功效。一般端口驱动能力约60-70mA,而所有输入输出驱动小于200mA,详细数据可参考有关数据手册。 PIC上海技术培训中心

25 7.运行速度高 PIC主要是采用哈佛总线结构,可以同时进行指令读取和指令执行的流水线作业方式。
如:MCS M,指令执行时间为1s~4s PIC 12M时钟周期,指令执行时间为0.3~0.6s PIC上海技术培训中心

26 8.同步串行数据传送方式 利用单片机串行总线端口可以方便而灵活地扩展外围器件,目前已在许多电子产品中得到广泛应用。
PIC系列单片机的一些型号具有同步串行口,可以满足I2C(主控/从动)和SPI(主控)总线要求。I2C和SPI(Serial Peripheral Interface)分别是PHILIPS公司和MOTOROLA公司研制的两种广泛流行的串行总线标准,是一种在芯片之间实现同步串行数据传输的技术。 利用单片机串行总线端口可以方便而灵活地扩展外围器件,目前已在许多电子产品中得到广泛应用。 PIC上海技术培训中心

27 PIC16F877的结构 从其执行功能考虑,可以将单片机分成两大组件,即基本功能模块和专用功能模块。 PIC上海技术培训中心

28 PIC上海技术培训中心

29 2.1.3 PIC16F877的引脚 PICl6F87X系列单片机有双列直插式28引脚和40引脚及表面贴装式44引脚等几种封装形式。 多数I/O引脚都设计有第2功能,甚至第3功能。采用引脚复用技术,以便使单片机增加功能而又不增大体积和引脚数量。 PIC上海技术培训中心

30 PIC上海技术培训中心

31 2.2 存储器概述 但它们在形式上,具有很丰富的内涵。
F877单片机内部配置了较完善的多个存储器,可分为数据存储器和程序存储器两种,为一般用户提供很大的方便。 但它们在形式上,具有很丰富的内涵。 PIC上海技术培训中心

32 2.2.1 程序存储器 在PIC系列单片机教学实验和科研开发中,显示出无穷的魅力和宽广的应用前景。
F877单片机内部配置了8K ╳ l4位的闪烁(FLASH)程序存储器,可以很方便进行在线擦除和烧写,寿命可达1000次以上。 在PIC系列单片机教学实验和科研开发中,显示出无穷的魅力和宽广的应用前景。 相应的地址编码范围为0000H~lFFFH。 PIC上海技术培训中心

33 程序存储器结构 PIC上海技术培训中心

34 2.2.2 数据存储器 F877单片机内部配置两类数据存储器,普通RAM数据存储器和EEPROM失电保持数据存储器。 RAM总的地址空间为512个单元,其中包括部分无效单元,但每一个有效单位均可以象寄存器一样进行移位、置位、复位和位测试等操作。 PIC单片机的数据存储器和其他单片机一样,在配置结构上可分为通用寄存器和特殊功能寄存器两大类,前者给用户使用,而后者通常定义给某些功能模块,是一种具有特殊目的的功能寄存器。 PIC上海技术培训中心

35 同时在PIC16F877片内又配置另一种可掉电保护的数据存储器EEPROM,共有256×8位宽的存储单元,可以长期存放用户或系统的重要参数:如时间、配置及数据表格等,是一种非常重要的硬件资源。

36 数据存储器单元功能分配 体(BANK)0 体(BANK)1 体(BANK)2 体(BANK)3 PIC上海技术培训中心

37 第3章 PIC存储器 存储器是单片机中一个非常重要的部件,专门用于存放指令、数据和运算结果。
分析F877单片机存储器构架,可以从其配置的三大模块着手进行,它们是: 8K ╳l4位FLASH程序存储器 512╳8位数据存储器RAM 256╳8位可掉电保护数据的EEPROM存储器模块。 PIC上海技术培训中心

38 3.1 存储器分类 存储器从使用功能上来分,可分为随机存储器RAM(Random Access Memory)和只读存储器ROM(Read Only Memory)两类。 PIC上海技术培训中心

39 3.2 程序存储器构架 F877程序存储器具有13位宽的程序计数器PC。PC指针所产生的13位地址最大可寻址的程序存储器空间为8K,相应的地址编码范围为0000H~lFFFH。 F877归属于中档单片机,其指令字节宽度为14位,内部构架配置了8K ╳ l4位的闪烁FLASH程序存储器。 PIC上海技术培训中心

40 一般将整个程序存储器以2KB为单位进行分页(PAGE),如图3-1所示F877单片机,8KB程序存储器共分作4页,分别称为“页0”、“页l”、“页2”和“页3”。 程序计数器高8位PCLATH的Bit4-Bit3位构成程序存储器分页的选择位,对应的地址空间如下: PCLATH Bit4:Bit3: 页0:0000H ~ 07FFH 页l:0800H ~ 0FFFH 页2:1000H ~ 17FFH 页3:1800H ~ 1FFFH PIC上海技术培训中心

41 PIC上海技术培训中心

42 PIC上海技术培训中心

43 PIC16F877 单片机架构程序存储器 最大8K字(13 位) 程序存储空间 程序空间按页面划分,每页2K字 (11 位);最多四页。
PCLATH<4:3> = 00 PCLATH<4:3> = 10 Reset 0000h 最大8K字(13 位) 程序存储空间 程序空间按页面划分,每页2K字 (11 位);最多四页。 页面选择 PCLATH<4:3> 复位向量地址 0000h 中断向量地址 0004h Page 2 1000h 0004h Interrupt Page 0 07FFh 17FFh PCLATH<4:3> = 01 PCLATH<4:3> = 11 Page 1 0800h Page 3 1800h Reset vector at 0, Interrupt vector at 4h In 2K Program memory, PCLATH has no impact In 4K Program memory, PCLATH bit 3 selects 2K page. Since PCLATH is not ininialized on reset (POR or otherwise), user must initialize PCLATH after reset. PIC上海技术培训中心 0FFFh 1FFFh

44 复位矢量中断矢量 程序存储器中有2个单元地址比较特殊,除了具备同其他单元地址一样的普通用途外,还具有专门用途:
0000H:用作单片机系统的复位矢量; 0004H:用作系统特殊模块的中断矢量。 PIC上海技术培训中心

45 3.3 数据存储器构架 F877用于存储数据的RAM单元比一般单片机RAM的功能要强大得多,它除了具备普通RAM的功能之外,每一个单元都能实现移位、置位、复位和位测试等通常由寄存器才能完成的功能操作。 PIC上海技术培训中心

46 数据存储器分区 RP1:RP0 体域 寄存器地址 0 0 体0: 000H ~ 07FH 0 1 体1: 080H ~ 0FFH
RAM数据存储器和FLASH程序存储器一样在空间构架上,进行类似方式进行分区。按横向排列,分为4个“体”(BANK),从左到右分别记为“体0”、“体1”、“体2”和“体3”,每个体为128个8位宽的存储器单元。 RP1:RP 体域 寄存器地址 体0: 000H ~ 07FH 体1: 080H ~ 0FFH 体2: 100H ~ l7FH 体3: 180H ~ lFFH PIC上海技术培训中心

47 数据存储器 四个存储体每个 128 字节 特殊功能寄存器 512单元 368有效GPR
存储体选择通过 Status中的 RP0,1 和 IRP 512单元 368有效GPR Bank0 Bank1 Bank2 Bank3 SFRs 000h 080h SFRs SFRs 100h SFRs 180h 01Fh 09Fh 11Fh 19Fh GPRs 020h GPRs 0A0h GPRs 120h GPRs 1A0h RP1 and IRP should not be used as GP bits, in order to maintain upward compatibility. RP0 selects between bank 0 and bank 1. A “r/w” to bank 2 and 3 will be a “r/w” to bank 0 or 1 depending on the state of RP0. 0F0h 170h 1F0h 07Fh 0FFh 17Fh 1FFh RP<1:0> RP<1:0> RP<1:0> RP<1:0> = = = = 11 PIC上海技术培训中心

48 PIC上海技术培训中心

49 互相映射 有些寄存器单元在4个体上是互相映射的,如状态寄存器STATUS、间接寻址寄存器INDF、程序计数器低8位PCL、文件选择寄存器FSR、程序计数器高8位PCLATH和中断控制寄存器INTCON。 所谓互为映射就是说,在4个体内的相同位置,物理上对应同一个寄存器单元,所以该单元具备4个不同的地址。 PIC上海技术培训中心

50 3.3.1 通用寄存器 F877单片机的通用寄存器GPR(General Purpose Registers),可由用户自行支配存放随机数据。 地址区域:F0H~FFH、170H~l7FH和1F0H~1FFH,都可以索引(或映射)到体0的16个RAM单元。 这样安排是为了便于中断服务程序的设计和数据处理,就可以在程序设计中能够有效突破体的限制而定义通用的变量函数 PIC上海技术培训中心

51 3.3.2 特殊功能寄存器 特殊功能寄存器SFR(Special Function Registers)是用于专用目的的寄存器,每个寄存器单元,甚至其中的每一位,都有它自己特定的名称和用途。 主要涉及PIC内核结构、外围功能模块的配置和数据通信方式的定义,是单片机赖于正常运行的工作平台。所以,特殊功能寄存器又称为专用寄存器。 可以依据它们不同的用途分为两类:一类是与CPU内核相关的寄存器;另一类是与外围模块相关的寄存器。 PIC上海技术培训中心

52 1.状态寄存器STATUS 状态寄存器的内容用来记录算术逻辑单元ALU的运算结果状态、CPU的特殊运行状态以及RAM数据存储器体间选择等信息。 PIC上海技术培训中心

53 状态标志位 Bit0/C:进位/借位标志,被动参数。
0:执行加法(或减法)指令时,如果最高位无进位(或有借位); :执行加法(或减法)指令时,如果最高位有进位(或无借位)。 Bit1/DC:辅助进位/借位标志,被动参数。 0:执行加法(或减法)指令时,如果低4位向高4位无进位(或有借位); 1:执行加法(或减法)指令时,如果低4位向高4位有进位(或无借位)。 Bit2/Z:零标志,被动参数。 0:算术或逻辑运算结果不为0; 1:算术或逻辑运算结果为全0。 PIC上海技术培训中心

54 数据存储器体选位 Bit6-Bit5/RP1-RP0:RAM数据存储器体选位,仅用于直接寻址。
Bit7/IRP:RAM数据存储器体选位,仅用于间接寻址。 0:选择数据存储器低位体: 即体0(FSR的Bit7=0)或体1(FSR的Bit7=1); 1: 选择数据存储器高位体: 即体2(FSR的Bit7=0)或体3(FSR的Bit7=1)。 PIC上海技术培训中心

55 2.间接寻址的寄存器INDF和FSR 在RAM数据存储器中,有一个非常特别的寄存器INDF它的专有功能是与FSR寄存器配合,实现间接寻址。
PIC上海技术培训中心

56 直接寻址/间接寻址方式的示意图 在直接寻址中,体选码来自状态寄存器STATUS的RP1和RPO位,体内的单元地址直接来自指令机器码。而在间接寻址中,体选码由STATUS的IRP位和FSR寄存器的BIT7组成 PIC上海技术培训中心

57 3.与PC相关的寄存器PCL和PCLATH
程序计数器PC指针宽13位,它的内容指向CPU将要执行的下一条指令所在程序存储器单元的地址。 低8位PCL有自己的地址,可读可写;而高5位PCH和其它单片机不一样,即没有自己的地址,不能用软件访问,也就不能直接写人,只能用寄存器PCLATH装载的方式进行间接写人。 PIC上海技术培训中心

58 两种情况下PC值的装入过程 PCLATH对于高5位PCH的装载分两种情况:
一种情况是当执行以PCL为目标的写操作指令时,PC的低8位来自算术逻辑单元ALU,PC的高5位来自PCLATH的低5位; 另一种情况是当执行跳转指令GOTO或调用子程序指令CALL时,PC的低11位来自指令码中直接携带的11位地址,高2位由PCLATH3-4提供。 PIC上海技术培训中心

59 程序存储器: PC 绝对寻址 通过 CALL 和 GOTO修改 PC (程序指针) PCLATH寄存器 OP CODE k
x x x k k x x x 11-位 来自指令 2-位 来自 PCLATH k k k k k k k k k k k k k 有效的 13-位程序存储器地址 PIC上海技术培训中心

60 程序存储器: PC 相对寻址 movlw HIGH Delay movwf PCLATH movlw LOW Delay movwf PCL
PCH <5> PCL <8> 13-位程序指针 PCLATH <5> 内部数据总线 <8> 5 8 movlw HIGH Delay movwf PCLATH movlw LOW Delay movwf PCL *对于读PC值时: 仅从PCL读低8位值, PCH不会被载入到PCLATH PIC上海技术培训中心

61 4.选项寄存器OPTION_REG 主要用于设置定时/计数器TMR0、前后分频器、外部INT中断以及B端口的弱上拉功能等各种控制位。
PIC上海技术培训中心

62 Bit2-Bit0/PS2-PS0:分频器倍率选择位
PIC上海技术培训中心

63 Bit3/PSA:前后分频器分配位,主动参数。 0: 分配给TMR0,作为TMR0的前分频器; 1: 分配给WDT,作为WDT的后分频器。
Bit4/T0SE:TMR0用于计数器,计数脉冲信号边沿选择位,主动参数。 0: RA4/T0CKI引脚上的上升沿增量; 1: RA4/T0CKI引脚上的下降沿增量。 Bit5/T0CS:定时/计数器TMR0时钟源选择位,主动参数。 0: 用内部指令周期时钟(CLKOUT)作为TMR0的触发脉冲; 1: 用T0CKI引脚上的外部时钟作为TMR0的触发脉冲。 Bit6/INTEDG:INT中断信号触发边沿选择位,主动参数。 0: BR0/INT引脚上的上升沿触发; 1: BR0/INT引脚上的下降沿触发。 Bit7/RBPU:B端口弱上拉使能位,主动参数。 0: RB0-RB7引脚弱上拉使能; 1: RB0-RB7引脚弱上拉不使能。 PIC上海技术培训中心

64 5.中断控制寄存器INTCON 主要用于中断控制方式的设置。 PIC上海技术培训中心

65 6.端口寄存器 端口寄存器PORTA (B)(C)(D)(E) 端口I/O定义寄存器TRISA Di = 0 定义为输出状态
PIC上海技术培训中心

66 第4章 PIC指令系统 指令是单片机的领导核心,就是指挥CPU按要求进行一系列操作的命令。一般来说,单片机都具有自己特有的指令系统,相互之间大都互不兼容。 PIC单片机系列按照不同用户的要求分成三个不同的应用档次。 PIC上海技术培训中心

67 4.1 指令流水线操作原则 指令的执行时间总是分解成两部分:取指过程和执行过程,取指的快慢直接与指令的字节数有关,而指令的执行快慢与时钟的振荡频率有关。 在以往的单片机结构中,程序存储器和数据存储器的地址空间和数据传输通道都相互并用,必须采用分时操作顺序执行。 而PIC单片机指令的执行过程是遵循着一种全新哈佛总线体系结构的原则,充分利用计算机系统在程序存储器和数据存储器之间地址空间的相互独立性,取指过程和执行程序可以流水线操作同时进行。 PIC上海技术培训中心

68 PIC单片机指令流水线示意 Tcy0 Tcy1 Tcy2 Tcy3 Tcy4 1. MOVLW 55h 2. MOVWF PORTB
Fetch 1 Execute 1 2. MOVWF PORTB Fetch 2 Execute 2 3. CALL SUB_1 Fetch 3 Execute 3 4. BSF PORTA, BIT3 Fetch 4 Flush Fetch 4 Fetch SUB_1 PIC上海技术培训中心

69 指令寻址方式说明 1.寄存器立即寻址 在这种寻址方式中,操作数或其中之一(另一个是W)是立即数, 随指令码携带,而无需再到其他地方去寻找。
指令中的操作数为8-位常数. 使用立即数寻址方式的指令有: movlw, addlw, retlw, etc. 如: ADDLW 16H 14-位 立即寻址指令 OP CODE k k k k k k k k PIC上海技术培训中心

70 2.寄存器直接寻址 7-位 直接从指令中获取 2-位从‘STATUS ’寄存器中获取 如:IORWF 26H,0 9-位 有效寄存器地址
IRP RP1 RP0 OP CODE TO PD Z DC C STATUS 寄存器 14-位指令 f 7-位来自指令字 2-位来自 STATUS 寄存器 PIC上海技术培训中心

71 3.寄存器间接寻址 这是一种比较特别的寻址方式,是通过两个寄存器INDF和FSR的组合而实现功能的。操作数是FSR寄存器内容位指针,所指向寄存器单元的内容。 8-位 间接地址来自 FSR (选择寄存器). 1-位 来自 STATUS 寄存器. 例如:MOVWF INDF IRP f RP1 RP0 TO PD Z DC C STATUS 寄存器 8-位 FSR 寄存器 有效的 9-位寄存器地址 8-位来自 FSR 1-位来自 STATUS 寄存器 PIC上海技术培训中心

72 间接寻址实例 数据记忆区 movlw 0x20 movwf FSR LOOP clrf INDF incf FSR,F
运行机制: a) 清从0x20 to 0x7F所有的RAM区域 b)间接地址载入FSR c) 每一次对‘INDF’运行,由FSR指向的寄存器被使用 例子: 数据记忆区 00h INDF movlw 0x20 movwf FSR LOOP clrf INDF incf FSR,F btfss FSR,7 goto LOOP <next instruction> 04h FSR = 20h 20h PIC上海技术培训中心 7Fh

73 4.位寻址 这是PIC单片机的特色之一,它可以对所有的RAM数据存储器进行位寻址,即置位和清零等。
如:BSF 26H,4 ;(26H原为26H) PIC上海技术培训中心

74 4.2 指令集说明 每条指令的字节长度为14位,主要由说明指令功能的操作码和参与指令处理的操作数组成。
操作码部分,简称助记符,如表4-2核心助记符,是借用英语单词来间接表达和定义其操作功能。 操作数部分,是按照操作码的操作功能,对操作数进行处理。 根据操作数的源地址和目标地址的访问性质,可以有多种表现形式:主要有直接寻址、间接寻址、立即寻址和位寻址四类。 PIC上海技术培训中心

75 核心助记符 PIC上海技术培训中心

76 指令系统补充字符说明 PIC上海技术培训中心

77 4.2.1 数据传送类指令 数据传送类指令共有4条指令,主要功能是将数据从源地址(或立即数)传送至目标地址中。 PIC上海技术培训中心

78 【例题4-1】 请利用数据传送类指令编写一段子程序,将立即数20H传送到通用寄存器20H中。
PIC上海技术培训中心

79 4.2.2 算术运算类指令 算术运算类指令是PIC单片机指令系统中,承担运算功能的重要部分,共有6条指令。主要有加减指令、增量和减量指令

80 【例题4-3】 请将通用寄存器20H、30H构成的16位数据与通用寄存器40H、50H构成的16位数据相加后放入40H、50H 中,已知其和不会超出65535。
PIC上海技术培训中心

81 4.2.3 逻辑运算类指令 逻辑运算类指令是一组比较复杂的指令,形式较多,可以对位和字节进行逻辑操作。主要有与、或、异或、清零、置位、取反和左右移位等14条指令 PIC上海技术培训中心

82 【例题4-4】 请将数据存储器20H和30H中的数据分别与立即数20H、30H相与和相或后相加,结果放入40H存储器中,请编写相应的程序。
【例题4-5】 请编写一个完整的程序,将数据存储器20H低4位和30H高4位组合成一个八位二进制数据,并从RC端口输出。 PIC上海技术培训中心

83 4.2.4 控制转移类指令 控制转移类指令,是在指令系统中形式灵活、功能较强的一组指令,共11条。它们是构成程序循环和跳转的关键要素,一般可以分为有条件跳转和无条件跳转两大类。 PIC上海技术培训中心

84 1.相对转移间跳 这是一种比较特殊的转移形式,根据位测试或加减1后的内容判断条件的成立与否,而决定程序继续执行还是间跳执行指令。
当前判断语句A 下一条语句B 再下一条语句C PIC上海技术培训中心

85 2.绝对转移和调用 PIC指令系统的绝对转移,主要由CALL和GOTO语句引出。在指令机器码内部本身并没有携带完整的转移目标地址,只包含低11位地址,而高2位将由PCLATH寄存器给出。 【例题4-6】 请将通用寄存器单元20H-2FH,分别对应赋值20H-2FH,请编写相应的软件程序。 PIC上海技术培训中心

86 请分析以下程序片段,并指出当程序执行完后,涉及 到的所有存储器单元的结果。
【例题4-7】 请分析以下程序片段,并指出当程序执行完后,涉及 到的所有存储器单元的结果。 MOVLW 22H MOVWF 22H MOVWF FSR ADDWF INDF,F INCF INDF SWAPF 22H,W RLF 22H,W DECF FSR,F MOVWFINDF BSF INDF,7 【例题4-6】编写散转指令程序 PIC上海技术培训中心

87 第5章 PIC集成开发系统 Microchip公司为PIC系列单片机配备了功能强大、基于Windows、易学易用的软件集成开发环境MPLAB。 该开发环境可以使人们在自己的微机系统上,对PIC系列单片机进行程序的创建、录入、编辑以及汇编,还能方便而灵活地实现程序的模拟运行和动态调试,可以对实际应用系统进行在线仿真和功能模块开发。 PIC上海技术培训中心

88 第6章 汇编语言程序设计 PIC单片机指令系统和其它单片机一样,是较为低级的语言系统,是一套控制和指挥CPU工作的编码,即机器语言。
单片机只能识别和执行由二进制数组成的机器语言,然而,这样一种二进制代码的机器语言是很难为人们直接理解和分析。 为了能较好表达人们的设计思路,便于记忆和使用,人们在低级语言之上设计出一种新的符号语言,即汇编语言。 PIC上海技术培训中心

89 6.1 汇编语言指令格式 PIC单片机指令系统和其它单片机一样,是较为低级的语言系统,是一套控制和指挥CPU工作的编码,即机器语言。
为了能较好表达人们的设计思路,便于记忆和使用,人们在低级语言之上设计出一种新的符号语言,即汇编语言。 PIC上海技术培训中心

90 根据指令的功能和作用,只有操作码是必须存在的,它主要决定了指令的操作性质,而其它部分是指令语句的重要补充和说明,有时可以缺省。
PIC上海技术培训中心

91 1.标号 标号位于指令助记符前面,它一般是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、转移语句的入口地址等。
PIC上海技术培训中心

92 使用标号的要点是: 标号并不是指令的必须部分,只有那些欲被其他语句引用的指令之前,才必须附加标号。标号不一定和语句同行,可以单独在语句上方作为一行使用。 标号最多可以由32个字母、数字和其它一些字符组成,但第一个字符必须是字母或下划线。标号不能用系统保留字,即系统禁用指令助记符、寄存器名、标志符等作为标号,如:ADD、PCLATH等。 一个标号只能表示一个地址,不允许多个地址用一个标号重复定义。 标号的定义和引用必须一致,其中的大小写可以混写但必须相同。 标号必须顶格书写,结束不用冒号。 PIC上海技术培训中心

93 2. 操作码 操作码决定着指令的操作类型和操作性质,是汇编语言语句中的核心要素,每一条汇编指令都不可缺少,而其它三部分有些指令可以缺省。
PIC上海技术培训中心

94 有关操作码(指令助记符)的要点是: 操作码所对应的指令助记符,其中的符号大小写可以混写,而不会影响操作码的含意,这一点和标号、操作数符号变量的表达方式是有本质区别。 指令助记符不能顶格书写,当前面没有标号时,必须至少保留一个空格。 操作码核心助记符部分比较简单,初学者必须熟悉复合助记符部分的功能。 PIC上海技术培训中心

95 3.操作数 在PIC汇编语言语句中,操作数的形式和内容最为丰富,它是指令助记符操作的对象,一般以数据或地址的形式出现,也可以用符号变量所表示的数据或地址。 PIC上海技术培训中心

96 使用操作数的要点是: 若操作数有二项,中间应该用逗号(半角)分开。 以A、B、C、D、E、F开头的数,前面应加0作为引导。
MPASM编辑环境默认进制为十六进制,也可按用户需要进行重新设置。 操作数部分的符号变量必须区分大小写。 重视d参数的应用,目标地址为: F(d=1);W(d=0)。 PIC上海技术培训中心

97 各种进制168的表示形式 PIC上海技术培训中心

98 4. 注释 注释内容用分号引出,是汇编语言语句功能的一种补充说明,主要是便于人们阅读、分析、修改和程序的调试。 PIC上海技术培训中心

99 使用注释的要点是: 用(半角)分号引出注释内容,可以紧跟指令之后,也可以独立一行或多行书写,但每一行均需由分号引出。
注释内容可以英文书写,也能用中文书写(来源于文本编辑内容)。 PIC上海技术培训中心

100 6.2 系统伪指令 各种单片机的汇编程序除了指令系统语句以外,一般都还定义许多非正式指令的语句,即伪指令。大多数伪指令汇编时并不产生机器码,仅为源程序提供汇编控制信息。 PIC上海技术培训中心

101 1.定位伪指令:ORG(Origin) 格式:ORG nnnn
PIC上海技术培训中心

102 2.赋值伪指令:EQU(Equate) 格式:符号名 EQU nn
说明:EQU伪指令几乎每一个程序中都用到,其操作含意是使EQU两端的值相等。一般在PIC的程序设计中,原则上每次遇到新的符号参数,都必须在前面补充定义符号名的初始数值或存储器地址。 符号名一旦被EQU赋值,其值便不能被再重新定义。这里的符号名,既可以是PIC中的特殊功能寄存器、一个常数,或者是表示一个通用数据存储器地址。 PIC上海技术培训中心

103 分析 ABC EQU 20H 实际上对于伪指令:ABC EQU 20H,其中ABC既可以认为是符号变量,因为ABC代表20H地址;又可以认为是符号常量,因为ABC可以代表符号常量20H。 所以对于一个定义的符号量,应结合引用的指令进行分析才能真正确定符号量的类型。 PIC上海技术培训中心

104 【例题6-2】正确区别符号变量和符号常量之间的关系 ABC EQU 20H ;定义符号量ABC ORG 0000H NOP
MOVLW 77H MOVWF 20H MOVLW 88H MOVF ABC,0 ;ABC为数据存储器地址20H MOVLW ABC ;ABC为常量20H END PIC上海技术培训中心

105 在符号名定义和引用过程中,必须保证大小写属性的一致性,注意不能混合使用以及所代表角色功能。
如果有定义:ABC EQU 20H 在引用符号名ABC时,不能改变其大小写的属性,即Abc、aBC或ABc与ABC是不一样的,在汇编时均会发生出错信息。 PIC上海技术培训中心

106 3.程序结束伪指令:END 格式:END 说明:END伪指令表示汇编语言源程序(*.ASM)的结束,MPASM汇编器汇编时遇到END就认为程序已结束,对其后的程序段不再进行汇编。 PIC上海技术培训中心

107 4.列表选项伪指令:LIST 格式:LIST [可选项,可选项,]
1)P=<设置微控制器类型即单片机型号> 例如:P=16F877 2)R=<定义默认的数值进位制的基数> 例如:R=DEC(十进制); R=HEX(十六进制); R=BIN(二进制); 默认为十六进制。 PIC上海技术培训中心

108 5.外调程序伪指令:INCLUDE 格式:INCLUDE “文件名”
如:P16F877.INC为F877单片机的复位矢量、专用寄存器的地址及其控制位和状态位的位地址的原始定义,有些参考书把P16F877.INC称为F877的头文件。 PIC上海技术培训中心

109 6.进制定义伪指令:RADIX 格式:RADIX <进制表达式>
说明:RADIX伪指令用于设置在MPLAB-ICD集成开发环境中采用的进制方式,如定义十进制、八进制和十六进制等参数,MPLAB-ICD集成开发系统缺省为十六进制。 例如:RADIX DEC ;定义为十进制 RADIX HEX ;定义为十六进制 RADIX OCT ;定义为八进制 PIC上海技术培训中心

110 6.3 存储器选择方式 在PIC单片机中,有两个概念是令初学者感到头痛的事情,也是本课程的难点和重点,对于正确进行程序设计至关重要。
一个是数据存储器四体的体选方式,需要时刻考虑每一个访问的特殊功能寄存器和通用数据存储器的体位;另一个是程序存储器四页的页选方式,特别是在发生转移或跳转时,须密切注意是否会发生页面转换。 PIC上海技术培训中心

111 6.3.1 数据存储器体选方式 F877单片机的数据存储器是一个具有空间为512字节的存储器,其中只有19个字节是无效存储单元。为了能完全选择512字节内的数据,需要9根地址线。 而根据9根地址线的组合方式不同,形成两种迥然不同的寻址方式:即直接寻址和间接寻址。 PIC上海技术培训中心

112 数据存储器体域 根据直接寻址和间接寻址操作码携带址址信息情况,一般把512字节(包括无效地址)的数据存储器分成4个区域,在PIC中被称为“体”(BANK)。 体0(000H~07FH) 体1(080H~1FFH) 体2(100H~17FH) 体3(180H~1FFH) PIC上海技术培训中心

113 1.直接寻址访问数据存储器 在指令机器码中操作数所携带的寻址信息是低7位地址,这不是一个完备的数据信息,每一个体中均会有一个相关的地址与之对应。要惟一确定地址单元,还必须依托其它的数据线进行复合选择。 利用状态标志STATUS位中的RP1和RP0,与直接寻址机器码中低7位地址共同选择相应数据存储器的内容参与操作。 PIC上海技术培训中心

114 2.间接寻址访问数据存储器 在指令机器码中真正携带的寻址信息是低8位地址,这也不是一个完备的数据信息,在整个数据存储器中有二个相关的地址与之对应。 要惟一确定地址单元,也必须依托另一根数据线进行复合选择。主要是依托状态标志位的IRP,才能准确选择相应数据存储器的内容参与操作。 PIC上海技术培训中心

115 6.3.2 程序存储器页选方式 F877单片机的程序存储器(FLASH)是一个具有空间为8K×14位的存储器,其中14位为单元字节长度。为了能完全选择8K的程序存储器,需要合成13根地址选择线。 PIC上海技术培训中心

116 程序存储器指令语句的选择 主要有以下几种途径: 复位地址0000H,直接给出13根地址选择线;
指令寄存器,是在每一个指令的执行周期自动加1而形成当前程序的执行方向; 执行以PCL为目标地址的算术逻辑类指令; 调用子程序方式,即CALL语句以及相应的返回语句(RETRUN、RETFIE、RETLW)。 转移指令方式,即GOTO语句; PIC上海技术培训中心

117 两类指令的执行过程中的装载效能 执行以PCL为目标地址的算术逻辑类指令
执行跳转指令(call、goto、retrun、retfie、retlw) PIC上海技术培训中心

118 补充伪指令 PAGESEL、BANKSEL
ABC EQU H ORG H BANKSEL ABC MOVLW H ;常数00送入W MOVWF ABC ;W送入ABC存储器中 ORG H PAGESEL ABC GOTO ABC ;转移至ABC ORG H ABC MOVLW H ;常数00送入W MOVWF H ;W送入20H中 PIC上海技术培训中心

119 6.4常用子程序的设计 在程序设计中,除主程序以外还有一部分很重要的内容就是关于子程序的设计,它是为完成特定的目的而构成的复合程序。
PIC上海技术培训中心

120 6.4.1 转移和循环子程序 转移和循环程序,主要是通过跳转、判断和位测试指令来构成的。 1.跳转指令 GOTO
2.判断指令 INCFSZ、DECFSZ 3.位测试指令 BTFSS、 BTFSC PIC上海技术培训中心

121 【例题6-6】比较两个数据寄存器20H和30H内容的大小,将较大的数送入40H中。
【例题6-6】请将通用寄存器单元20H-2FH,分别对应赋值20H-2FH,请编写相应的软件程序。 【例题6-7】假定RB0接入一个按键K,当K按下时,RB0为高电平,而K为常态时,RB0为低电平。请编写按键K的监控扫描片段程序,DELAY10MS为10M延迟程序,程序框图如6-4所示。 PIC上海技术培训中心

122 6.4.2 软件延时子程序 单片机的延时程序,在程序设计中具有很重要的地位。延时的设计,一般可以通过两种方式:硬件延时和软件延时。
所谓硬件延时,就是由单片机系统的定时器实现;而软件延时,是通过循环程序实现。一般来说,前者适用于精确定量延时,而后者常用于初略定性延时。 【例题6-8】简单循环的软件延时子程序。 【例题6-9】请编写10MS软件延时子程序。 【例题6-10】请编写1S软件延时子程序。 PIC上海技术培训中心

123 6.4.3 数据查表子程序 数据查表子程序在某些特殊场合是非常有用的,如共阴极LED八段显示器以及其它具有固定显示模式的场合,需根据其显示数值去查找对应参考数据库编码输出。 PIC上海技术培训中心

124 八段显示数值(0-9)编码 【例题6-11】将RC端口与共阴极LED八段显示器相连,从0-9循环显示,间隔时间为1秒,请编写相应的软件程序。
PIC上海技术培训中心

125 PIC单片机架构PC相对寻址 查表实例 XXXXXXXX 01101101 00000101 01101101 00000000
movlw HIGH Decode movwf PCLATH movf DisplayValue,W call Decode movwf PORTB goto Continue Decode addwf PCL,F retlw B’ ’ ;decode 0 retlw B’ ’ ;decode 1 retlw B’ ’ ;decode 2 retlw B’ ’ ;decode 3 retlw B’ ’ ;decode 4 retlw B’ ’ ;decode 5 retlw B’ ’ ;decode 6 retlw B’ ’ ;decode 7 retlw B’ ’ ;decode 8 retlw B’ ’ ;decode 9 Continue RB0 RB1 b g a f d c g a f d c b e RB2 c b RB3 d RB4 e RB5 f e g RB6 XXXXXXXX W 寄存器 I/O B口 PIC上海技术培训中心

126 【例题6-12】将RC端口与八个LED显示器相连,请按照表6-4即跑马灯流动显示方式,间隔时间为1秒,请编写相应的软件程序。
PIC上海技术培训中心

127 6.4.4 分支功能跳转子程序 在PIC指令系统中并没有类似的语句,但如果借助于PIC单片机指令的特殊功能,同样可以轻松地构成分支跳转。
分支跳转实际上是多条件判断指令,条件本身是一个整数或事件,而跳转出口应该是整数的信息返回或事件功能内容的具体表现。 在程序形式上,分支功能跳转子程序与数据查表子程序的结构类似,只是它是用GOTO语句替代了RETLW语句。 PIC上海技术培训中心

128 JIANGN ADDWF PCL,F ;确定相对偏移量
GOTO PKEY ;执行PKEY0键盘定义功能 GOTO PKEY1 ;执行PKEY1键盘定义功能 GOTO PKEY2 ;执行PKEY2键盘定义功能 . GOTO PKEYN ;执行PKEYN键盘定义功能 PIC上海技术培训中心

129 6.4.4 常用数学运算类子程序 本节给出一些常用的数学运算类子程序,主要有加、减、乘、除等子程序,还有为外扩系统设计中的数码显示所需的BCD码和二进制数据的互换子程序。 均涉及入口条件及出口条件,在调用时务必加以注意。一般入口条件是指参与操作的相关源数据,用S1、S2(source)等表示,而操作结果用R1、R2(result)等表示。高低8位数据分别用H、L表示,另外用Z表示中8位数据。 可以将这些固定变量参数定义在PIC16F877的头文件内,并且单元定义位于映射区域70H~7FH,这样就可以不受程序所在页面的影响。 PIC上海技术培训中心

130 将两个无符号16位数相加,编写双精度运算程序。 将两个无符号16位数相减,编写双精度运算程序。
将两个无符号16位数相乘,编写双精度运算程序。 将两个无符号16位数相除,编写双精度运算程序。 将一个5位数(< )的BCD码转换成二进制数。 将一个16位二进制数转换成BCD码( < ) PIC上海技术培训中心

131 第7章 输入输出端口 单片机的性能优劣在很大程度上取决于I/O端口功能的强弱,F877 PDIP型单片机共有40个管脚,其中有33个是I/O引脚。 33个I/O引脚归属于5个端口,分别为PORTA(6)、PORTB(8)、PORTC(8)、PORTD(8)、PORTE(3),其中括号内的数字为该端口的位数。 PIC上海技术培训中心

132 7.1 I/O端口功能的通用结构 F877单片机有5 个I/O端口,它们的设计思想和内部结构都是不同的,即使同一个端口各个引脚的内部结构也存在差异。但就其通用的输入/输出功能,基本具有类同的线路结构。 PIC上海技术培训中心

133 基本端口内部结构 PIC上海技术培训中心

134 7.2 I/O端口寄存器及其初始化 F877单片机共有十个外围功能模块,几乎每一个或多或少都与I/O端口有关系,有些涉及到控制引脚,有些作为数据输入输出通道。 基本I/O端口功能的设置非常方便,只要对I/O端口的方向寄存器TRIS进行定义即可。某个引脚对于位:设置为1定义为输入状态,设置为0定义为输出状态。 PIC上海技术培训中心

135 【例题7-2】将RC端口的高四位和低四位分别设置为输入和输出端,而把RB 端口全部定义为输出接口。
PIC上海技术培训中心

136 7.3基本输入/输出应用实例 【例题7-3】 接上例,将RC端口的高四位和低四位分别设置为输入和输出端后,高四位引脚分别与四个输入按钮相连,低四位引脚分别与四个LED发光管相连,如图7-3所示。编程要求:当K1按下,LED1亮1秒;当K2按下,LED2亮2秒;当K3按下,LED3亮3秒;当K4按下,LED4亮4秒。 PIC上海技术培训中心

137 【例题7-4】已知RC口连接八个LED显示器,以作为自动加1计数器的显示窗口,间隔时间为1秒。请编写相应的控制程序。
PIC上海技术培训中心

138 第八章 定时器/计数器 定时器/计数器模块是大部分单片机都内置的一项重要功能,定时器/计数器的正常工作一般表现为计数累计功能,通常是由时钟脉冲来驱动。 定时器/计数器模块一般适用于以下3种不同的应用场合: 从单片机I/O引脚上向外部电路输出一系列符合一定时序规范的方波信号。 从单片机I/O引脚上,检测外部电路输入的一系列方波信号的脉宽、周期或频率,以便单片机接收外部电路的输入信号或通信信号。 单片机对其端口引脚上输入的由外部事件产生的触发信号进行准确地计数,依据计数结果来控制完成相应的动作。 PIC上海技术培训中心

139 F877单片机配置3个定时器/计数器模块: CCP:输入捕捉、输出比较和PWM脉冲宽度调制功能 低频时基振荡器 :32768Hz
PIC上海技术培训中心

140 三者的共同点: 它们的核心部分都是一个由时钟信号触发,按递增方式累加工作的循环计数器;从预先设定的某一初始值开始累计,在累计到计数器产生溢出,并且同时会建立一个相应的溢出中断标志。 PIC上海技术培训中心

141 8.1 定时器/计数器TMR0 它们的核心部分都是一个由时钟信号触发,按递增方式累加工作的循环计数器;
从预先设定的某一初始值开始累计,在累计到计数器产生溢出,并且同时会建立一个相应的溢出中断标志。 PIC上海技术培训中心

142 8.1.1 定时器/计数器TMRO的特点 存器TMR0; TMR0也是一个在文件寄存器区域内统一编址的寄存器,
是一个8位宽的由时钟信号上升沿触发的循环累加计数寄 存器TMR0; TMR0也是一个在文件寄存器区域内统一编址的寄存器, 地址为01H或101H。用户用软件方式可直接读/写计数器 的内容; 具有一个软件可编程的8位预分频器; 既可工作于定时器模式,又可工作于计数器模式; 当使用内部触发信号,即指令周期作为时钟信号源时, 为固定上升沿触发计数;而当使用外部触发信号作为时 钟信号源时,可由程序定义为上升沿或下降沿触发有效; 在计数器溢出时,相应的溢出中断标志自动置位,并可产生 溢出中断。 PIC上海技术培训中心

143 定时器/计数器 TMR0 选项寄存器OPTION_REG 中断控制寄存器INTCON 端口RA方向控制寄存器TRISA
PIC上海技术培训中心

144 8.4 定时器/计数器TMR0模块的电路结构和工作原理
PIC上海技术培训中心

145 8.2 定时器/计数器TMR1 定时器/计数器TMR1是一个16位的计数寄存器,带有一个3位的可编程预分频器和一个内置的低功耗低频时基振荡器。 PIC上海技术培训中心

146 TMR1的用途: TMR1可作通用的定时器和计数器; 利用内置的低频时基振荡器,可实现实时 时钟RTC功能
TMR1与CCP模块配合使用,可实现输入捕 捉和输出比较功能。 PIC上海技术培训中心

147 定时器/计数器TMR1的特性: 一个16位的由时钟信号上升沿触发的累加计数寄器 对TMR1L:TMR1H;
TMR1L和TMR1H是在RAM中统一编址的寄存器对,地址为 0EH和0FH,可用软件方式读/写TMR1寄存器对的内容; 一个可选用的3位可编程预分频器; 累加计数的信号源可选择内部系统时钟、外部触发信号 或自带时基振荡器信号; 既可工作于定时器模式又可工作于计数器模式,还可用 作实时时钟RTC; 在计数器溢出时,相应的溢出中断标志自动置位,并可 产生溢出中断。 PIC上海技术培训中心

148 定时器/计数器TMR1模块相关的寄存器 中断控制寄存器 INTCON TMR1控制寄存器T1CON 第一外设中断屏蔽寄存器 PIE1
高字节低字节TMR1H:TMR1L PIC上海技术培训中心

149 TMR1控制寄存器T1CON PIC上海技术培训中心

150 Bit0/TMR1ON:TMR1使能控制位(而TMR0不能被关闭的),主动参数。 0: 关闭TMR1,使TMR1退出活动状态,以节省能耗;
Bit1/TMR1CS:时钟源选择位,主动参数。 0: 选择内部时钟源(fosc/4=Tcyc指令周期); 1: 选择外部时钟源,即时钟信号来源于外部引脚或者自带振荡器。 Bit2/T1SYNC:TMR1外部输入时钟与系统时钟同步控制位,主动参数。 当TMR1工作于计数器方式(TMR1CS=1时): 0: TMR1外部输入时钟与系统时钟保持同步; 1: TMR1外部输入时钟与系统时钟不保持同步; 当TMR1工作于定时器方式(TMR1CS=0时):该位不起作用。 Bit3/T1OSCEN:TMR1自带振荡器使能位,主动参数。 0: 禁上TMR1振荡器起振,使非门的输出端呈高阻态; 1: 允许TMR1振荡器起振。 PIC上海技术培训中心

151 Bit5-bit4/T1CKPS1-T1CKPSO: 分频器的分频比选择位,主动参数。
PIC上海技术培训中心

152 定时器/计数器TMR1模块的电路结构 PIC上海技术培训中心

153 定时器/计数器TMR1与系统时钟的协调关系
PIC上海技术培训中心

154 8.3 定时器TMR2 TMR2是一个8位定时器,带一个可编程预分频器和一个可编程后分频器,一个可编程8位周期寄存器PR2。
PIC上海技术培训中心

155 TMR2是存放计数值的寄存器,只能工作于定时器模式; 可以为主同步串行端口MSSP模块(SPI模式),提供波特率时钟;
主要用途 TMR2是存放计数值的寄存器,只能工作于定时器模式; 可以为主同步串行端口MSSP模块(SPI模式),提供波特率时钟; TMR2还可以与CCP模块配合使用,提供脉宽调制PWM功能的时基信号。 PIC上海技术培训中心

156 定时器TMR2的特性 TMR2在RAM空间内统一编址,地址为011H; 可用软件方式直接读/写TMR2的内容;
可编程的2位预分频器,有1:1、1:4、1:16,3种分频比; 可编程的4位后分频器,有16种分频比; 带有一个8位周期寄存器PR2,这个寄存器的值由用户填入; 只能由内部系统时钟来触发定时器的增量,因此只工作于定时器模式; 具有溢出次数经过分频的溢出中断功能; 不管哪种复位,都会将TMR2清零。注意,TMR0和TMR1寄存器的内容不受复位的影响; 可以被软件关闭。 PIC上海技术培训中心

157 定时器TMR2模块相关的寄存器 中断控制寄存器 INTCON 第一外设中断屏蔽寄存器 PIE1 第一外设中断标志寄存器 PIR1
TMR2工作寄存器 TMR2 TMR2控制寄存器 T2COM TMR2周期寄存器 PR2 PIC上海技术培训中心

158 控制寄存器T2CON PIC上海技术培训中心

159 Bit1-Bit0/T2CKPS1-T2CKPS0: 预分频器分频比选择位,主动参数。
PIC上海技术培训中心

160 Bit2/TMR20N:TMR2使能控制位,主动参数。 0: 关闭TMR2,可以降低功耗; 1: 启用TMR2。
Bit6-Bit3/TOUTPS3-TOUTPS0: TMR2后分频器分频比选择位,主动参数。 PIC上海技术培训中心

161 定时器TMR2模块的电路结构 PIC上海技术培训中心

162 第9章 中断系统 在计算机主程序的流程中,插入其他事件的处理程序,是提高工作效率的一项重要功能。单片机中断功能的强弱直接标志着系统结构的好坏,中断服务程序的插入通常发生在时间上比较急迫或是不知道事件究竟会在什么时候发生的情况下。 PIC上海技术培训中心

163 9.1中断的概念和机理 1. 中断识别 中断事件的条件一旦满足,该中断源便通过设置中断源的标志位“置1”向CPU提出中断申请,而单片机查询到中断标志位后,如果该中断使能,将暂停当前程序而转向该中断服务程序。中断源发出请求并不代表单片机会马上响应中断,会在每条指令的后期查询所有的中断标志位。只有当相应的中断使能位为“1”,单片机才会响应中断。如果中断使能位等于“0”,将禁止中断。 中断源合用一个中断入口地址,就需要依次检查中断标志位状态,判别出中断源,以便执行相应的中断服务程序。 PIC上海技术培训中心

164 2. 中断处理 中断的实质在于处理特殊事件所对应的中断服务程序,在这个过程中一定要注意保护单片机系统的现场工作状态。就是对那些主程序的过程参数,或在中断服务程序中需要使用的各类变量,如果会发生数据的冲突,就需要对相应工作寄存器和工作环境进行保护。针对中断源的特殊需要,执行对应的中断服务或功能。 中断的核心内容,必须做到指令简洁,功能到位,防止程序出现死循环。在返回主程序之前必须将临时保存的数据或状态进行还原处理,恢复所保护起来的工作现场,以确保特殊事件处理完毕后当前主程序可以继续执行。 PIC上海技术培训中心

165 3.中断返回 当单片机执行中断返回指令时,程序指针自动加载出栈的断点地址。同时将总中断使能位恢复到使能状态,转向执行原强行被中断的主程序,并处于应急事务准备阶段。 PIC上海技术培训中心

166 9.2 F877的中断 F877有14个中断源,代表着14种不同的事件可以插入主程序中作优先中断处理,每一个中断都有一个中断标志位(IF)和一个中断允许位(IE)。 这14个中断中有11个属于外围模块的中断,通过一个外围中断允许位PEIE来统一控制所有与外围有关的中断使用。另外还有3个中断源,即基本中断源或内部中断源,加上11个外围中断再由一个全局中断允许位GIE来控制 PIC上海技术培训中心

167 中断逻辑 . PIC上海技术培训中心 EEIF EEIE GIE Interrupt to CPU ADIF ADIE T0IF T0IE
RCIF RCIE TXIF TXIE T0IF T0IE INTF INTE RBIF RBIE PEIE . BCLIF BCLIE GIE Interrupt to CPU Wake-up (if in SLEEP) PIC上海技术培训中心

168 9.3 中断程序的开始与结束 中断的使用,在程序开始初始化单片机时就要设置好所有的中断允许位,决定哪一些中断允许而哪些不用,中断标志位在初始化时最好也先清零。 当有允许的中断发生时,程序的执行就会被中断,程序计数器PC值会被存到堆栈中,然后PC会自动指向程序存储器0004H的地址,这个地址就是中断矢量地址。 直到碰到RETFIE指令,才会回到原来程序的中断处继续执行。进入中断程序之后的工作。 PIC上海技术培训中心

169 9.4 中断相关的寄存器 中断控制寄存器 INTCON 选项寄存器 OPTION_REG 第一外设中断屏蔽寄存器 PIE1
9.4 中断相关的寄存器 中断控制寄存器 INTCON 选项寄存器 OPTION_REG 第一外设中断屏蔽寄存器 PIE1 第一外设中断标志寄存器 PIR1 第二外设中断屏蔽寄存器 PIE2 第二外设中断标志寄存器 PIR2 PIC上海技术培训中心

170 1.中断控制寄存器INTCON 主要用于中断控制方式的设置。 PIC上海技术培训中心

171 2.选项寄存器POTION_REG Bit6/INTEDG:外部中断INT触发信号边沿选择位。 0: 选择RB0/INT下降沿触发有效;
PIC上海技术培训中心

172 3.第一外围设备中断屏蔽寄存器PIE1 4.第一外围设备中断标志寄存器PIR1 PIC上海技术培训中心

173 5.第二外围设备中断屏蔽寄存器PIE2 6.第二外围设备中断标志寄存器PIR2 PIC上海技术培训中心

174 9.5 中断的处理 不论各种中断屏蔽位和全局中断屏蔽位GIE处于何种状态,某一中断源的中断条件满足时,都会发出中断请求,相应的中断标志位都会被置位。是否能够得到CPU的响应,要根据该中断源所涉及到的中断屏蔽位的状态而定。 PIC上海技术培训中心

175 9.5.2 中断的现场保护问题 进入了中断服务子程序期间,只有返回地址即程序计数器PC的值被自动压入堆栈。
中断的现场保护问题 进入了中断服务子程序期间,只有返回地址即程序计数器PC的值被自动压入堆栈。 首先把W寄存器、STATUS和PCLATH寄存器保护起来,然后再去保存其他用户认为有必要保护的寄存器。 PIC上海技术培训中心

176 将W、STATUS和PCLATH寄存器的内容保存到临时备份寄存器中
MOVWF W_TEMP ;复制W到临时备份寄存器W_TEMP中 SWAPF STATUS,W ;将STATUS寄存器高低半字节交换后放入W CLRF STATUS ;不管当前处在哪个体,都设置体0作为当前体 MOVWF STATUS_TEMP ;保存STATUS到体0上的临时寄存器STATUS_TEMP MOVF PCLATH,W ;把寄存器PCLATH内容复制到W中 MOVWF PCLATH_TEMP ;经W将PCLATH内容转到临时寄存器PCLATH_TEMP CLRF PCLATH ;不管当前处在哪页,把PCLATH设置成指向页0 …… ; (中断服务子程序处理部分) MOVF PCLATH_TEMP,W ;经过W转移 MOVWF PCLATH ;恢复PCLATH内容 SWAPE STATUS_TEMP,W ;将寄存器高低半字节交换后放人W MOVWF STATUS ;把W内容移动到STATUS寄存器 SWAPF W_TEMP,F ;将W_TEMP内容高低半字节交换后放回 SWAPF W_TEMP,W ;将W_TEMP内容高低半字节交换后放入W PIC上海技术培训中心

177 第10章 串行通信及通用接收发送器模块 串行扩展通信接口是单片机与其它计算机之间进行数据交换的重要渠道,F877单片机主要配置有2种形式的串行通信模块: 主控同步串行通信MSSP (Master Synchronous Serial Port) 通用同步/异步收发器USART (Universal Synchronous/Asynchronous Receiver Transmitter )。 MSSP模块主要应用于系统内部近距离的串行通信扩展,如SPI、I2C模式。USART模块主要应用于系统之间的远距离串行通信,在外围接口电路及计算机通信中应用相当广泛。 PIC上海技术培训中心

178 10.1 SPI串行通信模块 SPI(Serial Peripheral Interface)是一种单片机外设芯片同步串行扩展接口,由摩托罗拉公司推出。采用SPI接口外围器件的特点是引脚性价比高等优点,因而在市场上得到了广泛的应用。 PIC上海技术培训中心

179 SPI模式下相关寄存器 在SPI模式下,有关的寄存器共有10个,其中无编址的只有一个SSPSR。这10个寄存器中有6个寄存器是与其它模块共用的。另外有4个寄存器与MSSP模块相关,它们是与I2C模式共用的。 PIC上海技术培训中心

180 1.SSPBUF(收/发数据缓冲器) 2.SSPSTAT(同步串口状态寄存器) PIC上海技术培训中心

181 Bit0/BF:缓冲器满标志位,被动参数。 仅仅用于SPI接收状态下: 0:缓冲器空; 1:缓冲器满。
Bit6/CKE:SPI时钟沿选择和I2C总线输入电平选择位。 在CKP = 0,静态电平为低时: 0:SCK的下降沿发送数据; 1:SCK的上升沿发送数据。 在CKP = 1, 静态电平为高时: 0:SCK的上升沿发送数据; 1:SCK的下降沿发送数据。 Bit7/SMP:SPI采样控制位兼I2C总线转换率控制位。 在SPI主控方式下: 0:在输出数据的中间采样输入数据; 1:在输出数据的末尾采样输入数据。 注意:在SPI从动方式下,SMP位必须置位。 PIC上海技术培训中心

182 3.SSPCON(同步串口控制寄存器) Bit3-Bit0/SSPM3-SSPM0:同步串行口MSSP方式选择位。 PIC上海技术培训中心

183 Bit5/SSPEN:同步串口MSSP使能位。 在SPI模式下时,有关引脚必须正确的设定为输入或输出状态。
Bit4/CPK:时钟极性选择位。 0:表示空闲时时钟停留在低电平; 1:表示空闲时时钟停留在高电平。 Bit5/SSPEN:同步串口MSSP使能位。 在SPI模式下时,有关引脚必须正确的设定为输入或输出状态。 0:关闭串行端口功能,且设定SCK、SOD、SDI和SS为普通数字I/O脚; 1:允许串行端口工作,且设定SCK、SOD、SDI和SS为SPI接口专用。 PIC上海技术培训中心

184 Bit6/SSPOV:接收溢出标志位,被动参数。 0:未发生接收溢出; 1:发生接收溢出。
注意:所指的接收溢出是缓冲器SSPBUF中数据还未取出时,移位寄存器SSPSR中又收到新的数据,原SSPSR中的数据丢失。 Bit7/WCOL:写操作冲突检测位,被动参数。 在SPI从动方式下: 0:未发生冲突; 1:发生冲突。 注意:当WCOL=1, 正在发送前一个数据时,又有新数据写入SSPBUF,必须用软件予以清零。 PIC上海技术培训中心

185 4.SSPSR移位寄存器 直接从端口引脚接收或发送数据,将已经成功接收到的数据送到缓冲器SSPBUF中,或者从缓冲器SSPBUF读取将发送的数据。 PIC上海技术培训中心

186 SPI模式工作原理 要发送的数据通过数据总线送入发送缓冲器,然后自动传送到移位寄存器中;移位寄存器接收到数据自动传送到接收缓冲器,然后由程序读取收到的数据;移位寄存器有移入和移出两个端口,分别与收和发两条通信线路连接,负责收发数据。 PIC上海技术培训中心

187 SPI模式电路的基本结构 PIC上海技术培训中心

188 SPI工作原理示意图 PIC上海技术培训中心

189 【例题10-1】如图10-5为8位数码显示和16个键盘电路,利用F877的SPI同步串行功能实现数码管数据串行传送,并通过8个74LS164组成的移位电路,达到数码数据的静态显示。而16个键盘组成矩阵电路,采用RD口高低四复合选通。 请编写相应的应用程序,要求:在系统复位后8位数码管全暗,接着1、2、3…7分别从数码管的最高位到最低位依次点亮,最后直接进入系统的监控状态,以在最高位出现“-”为标志。 PIC上海技术培训中心

190 【例题10-2】在电路原理图10-5基础上,对其电路结构稍作调整,以便外扩展一个静态128KEPROM数据存储器。利用RC3、RC4、RC5引脚组成一个SPI同步串行方式,通过164移位产生17位寻址功能,实现对HM628128的并行数据传送(RD端口)。 编程要求:首先将256个数据00H-FFH存入EPROM单元0000H-00FFH中,然后再将这些单元中的数据逐个取出,送往数码显示区的最后两位显示数据内容,每个数显示停留1秒种。 PIC上海技术培训中心

191 10.2 I2C串行通信模式 1980年PHILIPS公司首创I2C(Inter Integrated Circuit Bus)总线规范,已成为一种串行总线事实上的工业标准。I2C总线是一种高性能芯片间串行同步传输总线,被大量的用作系统内部的电路板级总线。 它定义了两根信号线,串行数据线SDA和串形时钟线SCL,可实现双工同步数据传输,能够极其方便的构成多机系统和外围器件扩展系统。 PIC上海技术培训中心

192 I2C串行通信模式 I2C总线的数据传输过程,在一次通信过程中,如主控器为发送器则称主控发送器,而被控器为接收器则称被控接收器;如主控器为接收器则称主控接收器,而被控器为发送器则被控发送器。 PIC上海技术培训中心

193 1.I2C数据格式 I2C数据格式有五部分组成:启动信号(SCL=1,SDA从高到低);被控器地址(可7位或10位);R/ W信号;若干个数据字节;停止信号(SCL=1,SDA从低到高)。 PIC上海技术培训中心

194 主控器向被控器写数据 PIC上海技术培训中心

195 主控器向被控器读数据 PIC上海技术培训中心

196 10位地址格式 其中A9、A8是10位地址的高2位。 PIC上海技术培训中心

197 2.I2C地址设定 在I2C总线系统中的器件,一般都有一个专用的7位从器件地址码。地址码分为两部分,A6、A5、A4、A3为器件类型码。如存贮器为:1010,LCD点阵显示器启动器为:0111等等,不可更改统一规定。A2、A1、A0可由器件改变,所以同一类器件在I2C总线系统中最多能接8个。 PIC上海技术培训中心

198 3.数据传递 主控器发送数据,被控器接收数据的通信过程如下: 主控器在检测到总线空闲的状况下,首先发送一个启动S信号;
接着发送一个地址字节(包含着7位地址码和一位读/写位,假设= 0 ); 在被控器收到地址字节后回送一个应答信号ACK = 0; 在主控器收到该应答位后开始发送第一个数据字节; 在被控器收到第一个数据字节后又回送一个应答位ACK = 0; 在主控器收到应答位后开始发送第二个数据字节; 被控器收到第二个数据字节后再返送一个(非)应答位(NACK=1)ACK=0; 在主控器将所需发送的全部数据(在此假设是两个字节)发送完毕后,就发送一个停止P信号时序,结束整个通信过程,并且释放总线,使总线返回空闲状态。   PIC上海技术培训中心

199 I2C总线模式下相关的寄存器 与I2C总线有关的寄存器共有12个。其中,有6个寄存器(INTCON、PIR1、PIE1、PRI2、PIE2、TRISC)是与单片机其他模块共用。 属于I2C总线专用的两个寄存器SSPCON2和SSPADD。 PIC上海技术培训中心

200 1.SSPSTAT同步串口寄存器 SSPSTAT用来记录MSSP模块的各种工作状态: PIC上海技术培训中心

201 Bit0/BF:缓冲器已满标志位,被动参数。 在I2C总线方式下接收时: 0:缓冲器SSPBUF还为空; 1:缓冲器SSPBUF已经满。
Bit1/UA:地址更新标志位(I2C总线10位寻址方式),由硬件自动设置。 0:不需要更新SSPADD寄存器中的地址; 1:需要更新SSPADD寄存器中的地址。 PIC上海技术培训中心

202 Bit2/R/W:读写信息位(仅用于I2C总线方式)。
该位记录最近一次地址匹配后,从地址字节中获取的读/写状态信息。它与SEN、RSEN、PEN、RCEN或ACKEN位一起,将用于显示MSSP是否处于空闲状态。该位仅仅从地址匹配到下一个启动位或停止位或非应答位被检测到的期间有效。 在I2C被控方式下: 0:写操作; 1:读操作。 在I2C主控方式下: 0:不在进行发送; 1:正在进行发送。 PIC上海技术培训中心

203 Bit3/S:启动位,用于I2C总线方式,当SSPEN = 0, MSSP被关闭,该位被自动清零。
0:当前没有检测到启动位; 1:当前检测到了启动位(单片机复位时改为位0)。 Bit4/P:停止位,仅用于I2C总线方式,当SSPEN = 0,MSSP被关闭时,该位被自动清零。 0:表示当前没有检测到停止位; 1:表示当前检测到了停止位(单片机复位时改为位0)。 Bit5/D/A:数据/地址标志位(I2C总线规范有效)。 0:当前接收或发送的字节是地址; 1:当前接收或发送的字节是数据。 PIC上海技术培训中心

204 Bit6/CKE:I2C总线输入电平规范选择位或SPI时钟沿选择位。
1:输入电平遵循SMBus总线规范。 Bit7/SMP:I2C总线传送率控制位或SPI采样控制位,主动参数。 0:传送率为快速速度模式(400kHz); 1:传送率为标准速度模式(100kHz)。 PIC上海技术培训中心

205 2.SSPCON同步串口控制寄存器 SSPCON用来对MSSP模块的多种功能和指标进行控制: PIC上海技术培训中心

206 Bit3-Bit0/SSPM3-SSPM0:同步串口MSSP方式选择位
PIC上海技术培训中心

207 Bit4/CKP:时钟极性选择位(对于SPI模式而言)。 在I2C被控方式下,SCL时钟使能位(I2C主控下没有用):
0:将时钟线拉低并保持,以延长时钟周期,来确保数据建立时间; 1:时钟正常工作。 Bit5/SSPEN:同步串口MSSP使能位。 0:不允许关闭串行端口工作,设定SDA和SCL为普通数字I/O引脚; 1:允许串行端口工作,设定SDA和SCL为I2C总线专用引脚。 Bit6/SSPOV:接收溢出标志位。 当接收溢出时,SSPBUF前一个数据还没被取走,又收到了新数据; 在发送方式下此位无效,必须用软件清零。 0:未发生接收溢出; 1:发生接收溢出。 Bit7/WCOL:写操作冲突检测位。 当发生冲突时,I2C总线的状态还没有准备好时,试图向SSPBUF缓 冲器写入数据,WCOL = 1,必须用软件清零。 0:未发生冲突; 1:发生冲突。 PIC上海技术培训中心

208 3.SSPADD从地址/波特率寄存器 在I2C主控工作方式下,该寄存器被用作波特率发生器的定时常数装载寄存器。在I2C被控器工作方式下。
PIC上海技术培训中心

209 4. 同步串口控制寄存器2-SSPCON2 主要是为增强MSSP模块I2C总线模式的主控器功能而新增加的。 PIC上海技术培训中心

210 Bit0/SEN:启动信号时序发送使能位。 0:不在SDA和SCL引脚上建立和发送启动信号时序;
Bit1/RSEN:重启动信号时序发送使能位。 0:不在SDA和SCL引脚上建立和发送重启动信号时序; 1:在SDA和SCL上建立并发送一个重启动信号(被硬件自动清零)。 Bit2/PEN:停止信号时序发送使能位。 0:不在SDA和SCL引脚上建立和发送停止信号时序; 1:在SDA和SCL上建立并发送一个停止信号(被硬件自动清零)。 Bit3/RCEN:接收使能位。 0:禁止接收模式工作; 1:使能接收模式。 Bit4/ACKEN:应答信号时序发送使能位,在I2C主控接收方式下: 0:表示不在SDA和SCL引脚上建立和发送应答信号时序; 1:表示在SDA和SCL上建立和发送一个带ACKDT的应答信号(被硬件自动清零)。 PIC上海技术培训中心

211 在I2C主控方式下,硬件自动接收来自被控器的应答信号 0:收到来自被控接收器的有效应答位(或表示位);
Bit5/ACKDT:应答信息位。 在I2C主控接收方式下,在一个字节收完之后,主控器软件应返送一个应答信号,该位就是用户软件写入的将被返送的值: 0:将发送有效应答位(ACK); 1:将发送非应答位(NACK)。 Bit6/ACKSTAT:应答状态位。 在I2C主控方式下,硬件自动接收来自被控器的应答信号 0:收到来自被控接收器的有效应答位(或表示位); 1:没有收到来自被控接收器的有效应答位(或表示为NACK)。 Bit7/GCEN:通用呼叫地址寻址使能位,主动参数。 0:禁止以通用呼叫地址寻址; 1:当SSPSTAT中收到通用呼叫地址(00H)时允许中断。 PIC上海技术培训中心

212 I2C从动模式 当I2C工作在从动方式时,SDA和SCL引脚必须设置为输入,如果需要发送时,MSSP模块强行将输入状态改为输出状态。在地址匹配后,收到传送的数据后,将自动产生ACK,并将SSPSR中的数据传入SSPBUF。 PIC上海技术培训中心

213 I2C从动方式电路模块结构 PIC上海技术培训中心

214 I2C主控模式 对SSPCON寄存器中的相应SSPM置位和清零,对SSPEN置位即可使能主控工作方式,控制工作方式使能后,用户有以下六种选择 : 送启动信号到SDA和SCL(将SEN置位); 送重复启动信号到SDA和SCL(将RSEN置位); 写SSPBUF寄存器启动数据或地址的传送; 送结束信号到SDA和SCL(将PEN置位); 设置I2C端口以接收数据; 数据字节接收完成后,发出应答信号。 PIC上海技术培训中心

215 I2C在主控基本结构模块 PIC上海技术培训中心

216 【例题10-3】 本例题电路原理图和图10-5相同,除连接有8位数码显示和16个键盘电路以外,还利用RC6和RC7引脚组成一个I2C同步串行功能,实现对24LC515EEPROM的串行数据传送。编程要求:首先将64个数据00H-3FH存入EEPROM单元0000H-003FH中,然后再将00010H-0001FH单元中的数据取出,存入数据存储器单元40H-4FH,最后逐个送往数码显示区的最后两位显示,每个数显示停留1秒种。 PIC上海技术培训中心

217 10.3 USART串行通信模块 PIC系列芯片中,片内除了含有同步串行口SSP(SPI,I2C)外,还有一个串行通信接口SCI。这是一个通用同步/异步收发器,简称USART,它是计算机最常用的通信接口之一。 USART可工作于如下三种方式:全双工异步方式;半双工同步主控方式;半双工同步从动方式。 PIC上海技术培训中心

218 10.3.1与USART模块相关的寄存器 1.发送状态兼控制寄存器:TXSTA 2.接收状态兼控制寄存器:RCSTA
3.USART发送缓冲寄存器: TXREG 4.USART接收缓冲寄存器 :RCREG 5.PIE寄存器 6.PIR寄存器 PIC上海技术培训中心

219 1.发送状态兼控制寄存器TXSTA PIC上海技术培训中心

220 Bit0/TX9D:发送数据的第9位(9位数据帧结构)。 0:不发送9位数据; 1:发送9位数据帧。
Bit1/TRMT:发送移位寄存器(TSR)“空”标志位。 0:发送移位寄存器满; 1:发送移位寄存器空。 Bit2/BRGH:高波特率选择位。 异步模式下: 0:低速; 1:高速。 同步方式下,未用。 Bit4/SYNC:USART同步/异步模式选择位。 0:选择异步模式(USAT); 1:选择同步模式(USRT)。 PIC上海技术培训中心

221 Bit6/TX9:发送数据长度选择位。8位数据加1位校验或标识位。 0:8位数据位发送; 1:9位数据发送。
Bit5/TXEN:发送使能位。 0:关闭发送功能; 1:使能发送功能。 Bit6/TX9:发送数据长度选择位。8位数据加1位校验或标识位。 0:8位数据位发送; 1:9位数据发送。 Bit7/CSRC:时钟源选择位。 同步模式下: 0:选择被控(从属)模式(时钟来自外部输入信号); 1:选择主控模式(时钟来自内部波特率发生器)。 异步模式下,未用。 PIC上海技术培训中心

222 2. 接收状态兼控制寄存器RCSTA Bit0/RX9D:所接收数据的第9位,可作校验位或标识位等。
Bit1/OERR:溢出标志位(overruan error bit )。 0:未发生溢出错误; 1:发生了溢出错误。 Bit2/FERR:帧格式错误标志位,被动参数。 0:无帧格式错误; 1:有帧格式错误。 PIC上海技术培训中心

223 1:使能连续接收,直到该未被清0为止。优先于SREN位。
Bit3/ADDEN:地址匹配检测使能位; 接收数据选择9位时,该位才起作用。 0:取消地址匹配检测功能; 1:启用地址匹配检测功能。 Bit4/CREN:连续接收使能位。 异步模式下: 0:禁止连续接收功能; 1:使能连续接收功能。 同步模式下: 0:关闭连续接收; 1:使能连续接收,直到该未被清0为止。优先于SREN位。 PIC上海技术培训中心

224 异步方式下未用,并且在同步从属接收方式下该位也无用。接收完成后该位即被清零。 Bit6/RX9:接收数据长度选择位。 0:选择接收8位数据;
Bit5/SREN:单字节接收使能位。 同步方式下: 0:禁止单字节接收功能; 1:使能单字节接收功能。 异步方式下未用,并且在同步从属接收方式下该位也无用。接收完成后该位即被清零。 Bit6/RX9:接收数据长度选择位。 0:选择接收8位数据; 1:选择接收9位数据。 Bit7/SPEN:串行端口使能位。 0:禁止串行端口工作; 1:允许串行端口工作。 此时,RC7和RC6作为USART的接收发送引脚。 PIC上海技术培训中心

225 每次发送的数据都是通过写入该缓冲器来实现的。
3.TXREG,USART发送缓冲寄存器 每次发送的数据都是通过写入该缓冲器来实现的。 PIC上海技术培训中心

226 4.RCREG,USART接收缓冲寄存器 每次接收到的数据都可从该缓冲器读取出来的。 PIC上海技术培训中心

227 5.SPBRG波特率寄存器 SPBRG寄存器的设定值(0-255)与波特率成反比关系。在同步方式下,波特率仅由该寄存器来决定;而在异步方式下,则由BRGH位(TXSTA寄存器的bit2)和该寄存器共同确定。 PIC上海技术培训中心

228 USART波特率发生器 USART模块带有一个波特率发生器BRG(baud rate generator),用以产生串行传送所需的时钟,它支持USART的同步方式和异步方式。在异步方式下,BRGH位用来控制波特率。在同步方式下, BRGH位不起作用。 波特率发生器的逻辑结构如图10-24。其核心实际是一个递减的8位二进制计数器,其计数初始值是由寄存器SPBRG装入,在每次递减计数器到达00H之后的下一个计数脉冲到来时进行装入。系统时钟经过6位分频器后作为传递计数器的计数脉冲,其分频比可以由BRGH位和SYNC位设定为1:4、1:16、或1:64。 PIC上海技术培训中心

229 波特率时钟发生器示意图 PIC上海技术培训中心

230 其波特率计算方式如下: 1.同步方式 波特率=fosc/[4(N+1)] N=fosc/(4×波特率)-1
注意,N为SPBRG寄存器的初始值;BRGH必须设置为0,BRGH为1无用。 2.异步方式 BRGH=0时: 波特率=fosc/[64(N+1)] N=fosc/(64×波特率)-1 BRGH=1时: 波特率=fosc/[16(N+1)] N=fosc/(16×波特率)-1 PIC上海技术培训中心

231 【例题10-4】在某应用系统中,采用4800波特进行异步通信。假设单片机时钟频率为fosc=20MHZ,低速方式(BRGH=0)。
PIC上海技术培训中心

232 10.4 USART的异步模式 USART在异步模式下采用的数据格式为l位起始位、8位或9位数据位和1位停止位,无奇偶校验码位(硬件不支持),常用的数据为8位。片内提供的8位波特率发生器BRG,可以利用系统时钟信号产生标准的波特率频率。 PIC上海技术培训中心

233 USART异步发送模式 USART发送器主要是由发送移位寄存器(TSR)、发送缓冲器TXREG构成。USART异步发送过程如下:要发送的数据送入TXREG中,寄存器TXREG中的数据就被装入TSR。一旦把TXREG中的数据送入TSR,就将中断标志位TXIF置位。TXIF置位后,不能用软件清除,只有在下一个要发送的数据送入TXREG后TXIF才能复位。 PIC上海技术培训中心

234 USART异步发送其结构示意图 PIC上海技术培训中心

235 USART异步接收模式 主要是由接收移位寄存器RSR和接收寄存器RCREG构成,串行信号从RC7/RX/DT引脚接收,送入移位寄存器RSR。一旦收到停止位,RSR就将收到的8位数据装载到RCREG中。同时,RCIF置1,表示收到一个数据,当RCREG被读出时RCIF被清零。从图中看出,RCREG是一个双缓冲寄存器,具有FIFO性质,因此RS可连续接收2个数据送入RCREG。 PIC上海技术培训中心

236 特别注意以下几点: 如RSR将数据装载到RCREG时,RCREG内已有2个数据,则产生数据传送溢出错误。OERR置位。RSR中数据将不能装入RCREG; OERR置位后,RSR不会接收新的数据。只有将OERR清0后才能接收新数据。OERR清零的方法是将CREN清零再置位; 如收到停止位为0,则FERR置位; 读RCREG时,会将FERR和RXD9值丢失。所以为读取FERR和RXD9,必须在读RCREG之前读取。 PIC上海技术培训中心

237 带地址检测的9位异步接收方式 主要由RSR移位寄存器,RCREG寄存器即波特率发生器BRG组成。工作过程如下:从RC7/RX31引脚输入数据,在波特率时钟作用下,一位一位移入RSR寄存器,一旦收到停止位,就将收到的第9位数据分别装入RCREG和RX9D中,并置RCIF=1。再读取RCREG中的数据时,自动将RCIF清零。 PIC上海技术培训中心

238 USART带地址检测的9位异步接收器结构示意图
PIC上海技术培训中心

239 10.5 USART同步模式 USART的同步模式是指进行通信双方之间,除了有数据传输线以外,还有一条时钟专用线。起着同步发送/接收的作用。在同步方式下,数据格式可以使用8位或9位。由于有专用的时钟线同步,所以在串行字符中不再需要起始位和停止位。在同步方式下只能工作在半双工方式下。 PIC上海技术培训中心

240 USART同步主控发送模式 USART同步主控发送方式与异步发送方式基本相同,USART发送器的结构示意图如图10-27。发送器的核心是串行发送移位寄存器(TSR)和发送寄存器TXREG。用户将要发送的数据装入TXREG,一旦TSR中空就会从TXREG中读出要发送数据装入TSR。同时,TXIF被置位。一旦TXIF置位后只有当有新的数据写入TXREG后,才能使TXIF清零。当TSR为空时TRMT置位,所以通过TRMT可查询TSR是否为空。 PIC上海技术培训中心

241 USART同步主控接收模式 要使用RSART工作在同步主控接收模式时,首先选择同步方式,然后把SREN位或CREN位置位,即可进入同步主控接收状态,DT数据线上的信号在时钟的下降沿被采样。如果SREN=1,仅接收一个字节。如果CREN=1,则可连续地接收数据,直到CREN被清零为止。如果SREN和CREN都被置位,则CREN状态优先于SREN状态,进行连续接收。 PIC上海技术培训中心

242 10.5.3 USART同步从动发送模式 10.5.4 USART同步从动接收模式
USART的同步从动方式和同步主控方式的区别就是其时钟信号CK由外部提供,也就是由对方提供,因此就是本机在睡眠状态下仍可进行通信。 USART同步从动接收模式 同步从动接收和同步主控接收的操作基本上是一样的,只是当CPU处于休眠方式下有所区别。另外,在从动接收方式下,没有用到SREN位。 PIC上海技术培训中心

243 配置了2个捕捉/比较/脉宽调制模块CCP1、CCP2(Capture/Compare/PWM)。
它们各自都有独立的16位寄存器CCPR1和CCPR2,两个模块结构、功能、操作方法基本一样,它们的区别仅在于各自有独立的外部引脚,以及各自的特殊事件触发器。 它们的功能实现,往往与定时器TMR1、TMR2复合使用。 PIC上海技术培训中心

244 11.1 CCP模块介绍 CCP模块功能介绍 CCP模块可工作在3种模式下: 捕捉方式、比较方式和脉宽调制方式。
比较功能: 用于从引脚上输出不同宽度的矩形正脉冲、负脉冲、延时启动信号等; 脉宽调制功能:适合于从引脚上输出脉冲宽度随时可调的PWM信号来实现直流电机的调速、D/A转换、步进电机的步进控制等。 PIC上海技术培训中心

245 CCP模块与定时器模块的搭配 PIC上海技术培训中心

246 PIR1、 PIE1、 TRISC 、 TMR1H :TMR1L
CCP模块寄存器介绍 (以CCP1为例) CCP1控制寄存器 :CCP1CON CCP1模块寄存器 :CCPR1H:CCPR1L PIR1、 PIE1、 TRISC 、 TMR1H :TMR1L PIC上海技术培训中心

247 CCP1控制寄存器 :CCP1CON PIC上海技术培训中心

248 PWM工作循环周期的最低2位,数据参数。作为其输出信号 脉宽的低2位,高8位在CCPR1L中。 捕捉方式:未用。 比较方式:未用。
Bit3-Bit0/CCP1M3-CCP1M0: CCP1工作方式选择位,主动参数。   00xx:关闭捕捉/比较/脉宽调制模块(即CCP1复位);   01xx:捕捉工作方式;      10xx:比较工作方式;       11xx:脉宽调制PWM工作方式。 Bit5-Bit4/CCP1X-CCP1Y: PWM工作循环周期的最低2位,数据参数。作为其输出信号 脉宽的低2位,高8位在CCPR1L中。      捕捉方式:未用。 比较方式:未用。 PIC上海技术培训中心

249 PIC单片机的输入捕捉功能,就是对外部从引脚CCP上输入的脉冲上升沿或下降沿进行捕捉检测。
11.2 捕捉功能 PIC单片机的输入捕捉功能,就是对外部从引脚CCP上输入的脉冲上升沿或下降沿进行捕捉检测。 PIC上海技术培训中心

250 捕捉方式工作原理 PIC上海技术培训中心

251 11.2.2 捕捉方式相关的寄存器 CCP控制寄存器 CCP1CON 专用CCP寄存器 CCP1H:CCP1L
外设中断标志寄存器:PIR1 (CCP1IF ) 外设中断允许寄存器:PIE1 (CCP1IE ) TMR1计数寄存器高低字节 TMR1H:TMR1L 专用CCP端口定义:TRISC (Bit2 ) PIC上海技术培训中心

252 CCP控制寄存器CCP1CON Bit3-Bit0/CCP1M3-CCP1M0: 01xx:捕捉工作方式设置,主动参数。
0100:捕捉每个脉冲下降沿; 0101:捕捉每个脉冲上升沿; 0110:捕捉每4个脉冲上降沿; 0111:捕捉每16个脉冲上降沿。 PIC上海技术培训中心

253 CCP1模块捕捉方式的设定 CCP1模块构成输入信号的捕捉功能,需要对相应的控制位进行设置,即所谓CCP1模块捕捉方式的初始化。 PIC上海技术培训中心

254 CCP1引脚的设定 CCP1和RC2合用一个引脚RC2/CCP1,在CCP1的捕捉方式下,RC2引脚必须由TRISC的Bit2设定为输入方式。但如该引脚设置为输出方式时,则每次对该端口的写操作都会被作为一次捕捉事件处理。 PIC上海技术培训中心

255 TMR1工作方式的设定 当CCP1工作于捕捉模式时,必须和TMR1搭配。同时TMR1必须设定为定时器工作方式或者同步计数器方式。计数初值一般以0开始。 但如TMR1设置为异步计数器方式时,则CCP1不能工作在捕捉模式下。 PIC上海技术培训中心

256 预分频器设定 必须通过CCP1CON的CCP1M3-CCP1M0的设置,选择一种触发事件。 而利用TMR1的预分频比例进行设置。
1:1、1:4、1:16、1:16共三种。 PIC上海技术培训中心

257 中断 每当CCP1捕捉到一事件发生时,将CCP1IF置位,产生一次中断。
在改变CCP捕捉方式时,可能产生一次错误的捕捉中断,所以,在改变捕捉方式之前,必须清除中断使能位CCP1IE来屏蔽CCP1中断请求,并且在捕捉模式改变之后,将中断标志位CCP1IF清零,以防止引起CPU的错误响应。 PIC上海技术培训中心

258 实例 检测脉冲的宽度 简单频率计的设计 PIC上海技术培训中心

259 11.3 比较功能 CCP模块第2个功能是比较方式输出,用于从引脚上输出不同宽度的矩形脉冲信号、不同的周期频率脉冲以及非周期频率信号等
11.3 比较功能 CCP模块第2个功能是比较方式输出,用于从引脚上输出不同宽度的矩形脉冲信号、不同的周期频率脉冲以及非周期频率信号等 PIC上海技术培训中心

260 11.3.1比较方式工作原理 PIC上海技术培训中心

261 11.3.2 比较方式相关寄存器 CCP控制寄存器 CCP1CON 专用CCP寄存器 CCP1H:CCP1L
外设中断标志寄存器:PIR1 (CCP1IF ) 外设中断允许寄存器:PIE1 (CCP1IE ) TMR1计数寄存器高低字节 TMR1H:TMR1L 专用CCP端口定义:TRISC (Bit2 ) PIC上海技术培训中心

262 CCP控制寄存器CCP1CON Bit3-Bit0/CCP1M3-CCP1M0:比较方式下的功能定义。
1000:如果CCPR1与TMR1相等,RC2/CCP引脚为高电平,同时CCP1IF置位;    :如果CCPR1与TMR1相等,RC2/CCP引脚为低电平,同时CCP1IF置位;    :如果CCPR1与TMR1相等,产生软中断 (CCP1IF置位,CCP1引脚不受影响); 1011:特殊事件触发 (CCP1IF置位,CCP1将TMR1复位,CCP2将TMR1复位, 并且启动A/D模数转换电路)。 PIC上海技术培训中心

263 11.3.3 CCP1比较方式设定 CCP1模块构成输出比较功能,需要对相应的控制位进行设置,即所谓CCP1模块比较工作方式的初始化。
PIC上海技术培训中心

264 CCP引脚设定 在比较工作方式下,用户必须通过把TRISC的bit2位清零,把RC2/CCP1引脚设置成输出状态。如果对CCP1CON寄存器清零,将迫使RC2/CCP1引脚输出低电平。 PIC上海技术培训中心

265 TMR1方式设定 当CCP1工作在比较方式时,TMR1必须设置在定时方式或同步计数方式下,TMR1初值一般为0。而当TMR1工作在异步计数方式下时,CCP1无法工作在比较工作方式。 PIC上海技术培训中心

266 软件中断方式 当选择软件中断方式,即CCP1CON的CCP1M3-CCP1M0为1010时,CCP1引脚上的电平不受影响,只把CCP1IF置位,产生CCP中断(当该中断使能时)。 PIC上海技术培训中心

267 特殊事件触发方式 在特殊事件触发方式下,即CCP1CON的CCP1M3-CCP1M0为1011时,将产生一个内部硬件触发信号,它可以用于启动一个特殊操作。 CCP1的特殊事件触发输出将对TMR1寄存器进行复位,使得CCPR1寄存器可以作为TMR1的16位可编程周期寄存器。 CCP2的特殊事件触发输出也将对TMR1寄存器进行复位,并且启动A/D数模转换。CCP1、CCP2模块的特殊事件触发输出不会将中断标志位TMR1IF置位。 PIC上海技术培训中心

268 实例 输出脉冲信号 改变信号频率 PIC上海技术培训中心

269 11.4 脉宽调制功能 CCP模块第3个功能PWM脉宽调制,它的应用非常广泛,可以从CCP引脚上输出不同占空比宽度的矩形脉冲信号,并可有效改变信号的输出频率。PWM脉宽调制信号,一般用于特殊器件的启动触发脉冲。 PIC上海技术培训中心

270 11.4.1脉宽调制方式工作原理 当CCP1工作在脉宽调制PWM(Pulse Width Modulation)方式下,RC2/CCP1引脚上可能输出分辨率高达10位,脉冲宽度随时可调的脉宽调制波形。必须将RC2/CCP1引脚设置为输出状态。对CCP1CON寄存器清0将迫使PWM输出引脚RC2/CCP1输出低电平,这并非是正常的PWM输出的数据 PIC上海技术培训中心

271 脉宽调制方式原理图 PIC上海技术培训中心

272 PWM周期=4Tosc×((PR2)+1)×(TMR2预分频值)
PWM输出信号周期可通过向TMR2的周期寄存器PR2写入来设定,计算公式如下: PWM周期=4Tosc×((PR2)+1)×(TMR2预分频值) 其中,Tosc为系统时钟周期;4×Tosc为指令周期;TMR2预分频值可以为1、4或16。 PWM信号的频率定义为PWM周期的倒数。 PIC上海技术培训中心

273 PWM输出时序图 PWM周期 周期 PWM脉宽 TMR2=PR2 TMR2=10bitCCPR1L PIC上海技术培训中心

274 PWM输出信号的脉宽 通过写入脉宽寄存器,即CCPR1L寄存器及CCP1CON控制寄存器的bit5~bit4位可以得到PWM的高电平时间设定值,分辨率可达10位。其中,由8位的CPPR1L的值作为10位中的高8位,由控制寄存器CCP1CON中的Bit5-Bit4两位作为10位中的低2位组成。因此,计算PWM高电平(脉宽)的公式如下: PWM高电平(脉宽)=CCPR1L:CCP1CON(Bit5-Bit4)×4Tosc×(TMR2预分频值) CCPR1L:CCP1CON(Bit5-Bit4)为10位脉宽寄存器、TMR2预分频值,可取1、4或16。 PIC上海技术培训中心

275 11.4.2 脉宽调制方式相关寄存器 CCP控制寄存器 CCP1CON 专用CCP寄存器 CCP1H:CCP1L
外设中断标志寄存器:PIR1 (CCP1IF ) 外设中断允许寄存器:PIE1 (CCP1IE ) 计时寄存器:TMR2 专用CCP端口定义:TRISC (Bit2 ) 定时周期寄存器 :PR2 TMR2控制寄存器:T2CON PIC上海技术培训中心

276 CCP控制寄存器CCP1CON Bit3-Bit0/CCP1M3-CCP1M0:脉宽调制功能设置,主动参数。
11XX:脉宽调制方式,低2位不起作用。 Bit5-Bit4/CCP1X-CCP1Y:CCP1脉宽寄存器的低2位,高8位在CCPR1L中,数据参数。 PIC上海技术培训中心

277 PWM操作设置 定PWM周期,向PR2寄存器写入PWM周期值; 定PWM高电平(脉宽)值,向CCPR1L和控制寄存器CCP1CON中
的Bit5-Bit4两位写入PWM高电平(脉宽)值; 定CCP1引脚为输出状态,通过对TRISC的bit2位清零; 设置TMR2的预分频值,并通过向T2CON写入以使TMR2使能; 设定CCP模块为PWM操作,向CCP1CON低4位写入设定值。 PIC上海技术培训中心

278 实例 输出脉冲信号 改变信号频率 PIC上海技术培训中心

279 第12章 A/D转换器 一般单片机在自动控制、自动测量、自动监控系统与各种被控制、测量对象发生关系时,需设置模拟接口模块。模拟接口的作用是将连续不断的模拟量转换为一系列不连续的、离散的数字量。 这种模拟接口称之为模拟/数字转换器,简称为A/D转换器(ADC)。主要讨论F877单片机内嵌的10位A/D转换器。 PIC上海技术培训中心

280 12.1 A/D转换原理 ADC的种类繁多,工作原理各异,但逐次逼近型ADC是应用较多的类型之一,主要原因为转换速度快、精度高。在F877单片机中集成的就是这种ADC。 逐次逼近型ADC是由采样保持电路、电压比较器、逐次逼近寄存器、数/模转换器DAC和锁存器等部分组成。 PIC上海技术培训中心

281 逐次逼近型ADC结构图 逐次逼近寄存器的最高位D7置“1”,如果ua >ui,说明逼近寄存器所生成的数字量太大,应将逼近寄存器里的最高位去掉,改置次高位D6为“1”;如果ua <ui,说明所生成的数字量还不够大,应保留该位为“1”,此外还需把下一次高位D5置 “1”,……,依此方法逐位比较下去,直至确定最低位D0是“0”还是“1”。 PIC上海技术培训中心

282 12.2 A/D转换器主要技术指标 A/D转换器有三个主要的技术指标:转换时间(转换速率)、分辨率和转换精度。 PIC上海技术培训中心

283 2.分辨率 3.转换精度 1.转换时间和转换速率 转换时间是A/D完成一次转换所需要的时间,转换时间的倒数即为转换速率。
A/D转换器的量化精度称为分辨率,习惯上用输出二进制位数或BCD码表示。例如AD574模数转换器,可输出二进制数12位,即用 212个分割对待测模拟量进行量化。 3.转换精度 A/D转换器的转换精度定义为一个实际A/D转换器在量化值上的差值。可用绝对误差或相对误差表示。 PIC上海技术培训中心

284 12.3 ADC模块结构和操作原理 PIC上海技术培训中心

285 F877片内ADC模块 F877内部嵌入的ADC模块是10位数字量精度,共有8个模拟通道。与ADC模块有关的寄存器比较多,共有11个。 ADC控制寄存器0:ADCON0 ADC控制寄存器1:ADCON1 ADC结果寄存器:ADRESH :ADRESL 中断控制寄存器:INTCOM 中断标志寄存器:PIR1 中断屏蔽寄存器:PIE1 A口方向寄存器:TRISA E口方向寄存器:TRISE E口数据寄存器:PORTE PIC上海技术培训中心

286 1. A/D控制寄存器ADCON0 Bit0/ADON:A/D转换器开关位。 0:关闭ADC,令其退出工作状态,可以不消耗电流;
Bit2/GO/DONE:A/D转换启动控制位兼作状态位。 在ADON=1的前提下: 0: A/D转换已经完成(自动清零)或表示未进行A/D转换; 1: 启动A/D转换过程或表明A/D转换正在进行。 PIC上海技术培训中心

287 Bit5- Bit3/CHS2-CHS0:A/D转换模拟信道选择位。
选择公共通路与哪一个模拟输入端接通。其中AN5~AN7通道只有40脚封装的型号才具备。 CHS2-CHS0:000:选择信道0,RA0/AN0; 001:选择信道1,RA1/AN1; 010:选择信道2,RA2/AN2; 011:选择信道3,RA3/AN3; 100:选择信道4,RA5/AN4; 101:选择信道5,RE0/AN5; 110:选择信道6,RE1/AN6; 111:选择信道7,RE2/AN7。 PIC上海技术培训中心

288 Bit7- Bit6/ADCS1-ADSC0:A/D转换时钟及其频率选择位。 ADCS1-ADSC0:
00:选择系统时钟,频率为fosc/2; 01:选择系统时钟,频率为fosc/8; 10:选择系统时钟,频率为fosc/32; 11:选择内部阻容(RC)振荡器,频率为fR C。 PIC上海技术培训中心

289 2. ADC控制寄存器ADCON1 主要用于控制相关引脚的功能选择。对于RA和RE端口的各条引脚功能进行设置,它们可以被设置成模拟输入、或者参考电压输入、或者通用数字I/O引脚。 PIC上海技术培训中心

290 2. ADC控制寄存器ADCON1 Bit3- Bit0/PCFG3-PCFG0: A/D转换引脚功能选择位。 PIC上海技术培训中心

291 Bit7/ADFM:A/D转换结果格式选择位,主动参数。 0:结果左对齐,ADRESL寄存器的低6位读作0;
1:结果右对齐,ADRESH寄存器的高6位读作0 PIC上海技术培训中心

292 [例如]:PCFG3-PCFG0=0011,RE2-RE0定义为通用数字I/O引脚,RA5、RA2、RA1和RA0定义为模拟信道,RA3引脚定义为外接正参考电压VREF+,VSS引脚定义为内接负参考电压VREF-。 PIC上海技术培训中心

293 3.方向控制寄存器TRISA、TRISE 方向控制寄存器TRISA、TRISE和ADCON1配合使用,有控制ADC模拟通道引脚的功能。作为模拟输入时,方向寄存器中相应位必须被置位。如果方向寄存器相应位被清零,把相应引脚设置为输出方式,也就成通用数字I/O引脚。 ADC模块的转换行为与ADCON1寄存器内PCHS2-PCHS0位的状态无关,转换模拟信道是由ADCON0的CHS2-CHC0确定的。 PIC上海技术培训中心

294 第13章 PIC系统功能 IC系列单片机在片内集成了一系列具有独特功能的外围专用电路。采用这样的芯片构成的应用系统不仅可以提供最大的系统可靠性,而且由于最大限度地减少外部器件,降低了系统成本和系统功耗。PIC强大的系统功能及完善的配置方式,对于从事单片机应用开发工程人员来说,提供了非常大的方便。 PIC上海技术培训中心

295 13.1 PIC系统功能及配置 就系统功能及配置情况,PIC系列单片机可以说功能强大、配置完善,从各个方面为用户着想,留有很大的开发余地和灵活的配置固化方式。 PIC上海技术培训中心

296 系统配置寄存器CONFIG F877系统配置寄存器CONFIG,是一个14位宽度的“不可访问”寄存器。用该寄存器的配置位可以对片内各种部件进行配置。 这个寄存器在程序内存中的映像地址为2007H,已经不在用户编程存储空间可寻址的范围。 PIC上海技术培训中心

297 寄存器配置字(地址2007H) Bit1-Bit0/FOSC1-FOSC0:振荡类型选择位。 00:选择LP型,低频振荡方式;
01:选择XT型,标准振荡方式; 10:选择HS型,高频振荡方式; 11:选择RC型,阻容振荡方式。 Bit2/WDTE:监视定时器控制位。 0:关闭WDT工作; 1:允许 WDT工作。 PIC上海技术培训中心

298 Bit3/PWRTE:上电延时控制位,主动参数。 0:关闭上电延时; 1:允许上电延时。
Bit5-Bit4/CP1-CP0:FLASH程序内存代码保护使能位。 00: 保护0000H-1FFFH的代码; 01: 保护1000H-1FFFH的代码; 10: 保护1F00H-1FFFH的代码; 11: 关闭代码保护功能。 PIC上海技术培训中心

299 0:RB3是数字I/O,MCLR上必须接高电压才能编程; 1:RB3/PGM引脚有PGM功能,允许低电压编程。
Bit6/BODEN:复位锁定使能位。 0:关闭复位锁定使能; 1:允许复位锁定使能。 Bit7/LVP:低电压可编程使能位。 0:RB3是数字I/O,MCLR上必须接高电压才能编程; 1:RB3/PGM引脚有PGM功能,允许低电压编程。 Bit8/CPD:EEPROM数据存储器代码保护位。 0:可保护EEPROM数据存储器代码; 1:关闭代码保护功能。 PIC上海技术培训中心

300 Bit9/WRT:FLASH程序内存写使能位。 0:通过EECON控制,不能向程序内存中写入未进行代码保护的程序;
Bit10/Unimplemented:读出为“1”。 Bit11/RESV:系统保留。 1:对于正常情况下。 Bit13-Bit12与Bit5-Bit4/CP1-CP0相同设置。 所有CP1-CP0必须被赋予相同的值以保证保护上面所列的程序代码。 PIC上海技术培训中心

301 13.1.3 系统复位 F877单片机还提供以下几种不同的复位方式:
系统复位 F877单片机还提供以下几种不同的复位方式: 芯片上电复位POR(Power-on Reset), 复位地址:PC=0000H; 在任何状态下通过在外部MCLR脚上加低电平复位, 复位地址:PC=0000H; 在正常工作状态下监视定时器WDT超时溢出复位, 复位地址:PC=0000H; 在休眠状态下监视定时器WDT超时溢出复位, 复位地址:PC=PC+1; 掉电锁存复位BOR(Brown-out Reset), 复位地址:PC=0000H。 PIC上海技术培训中心

302 1. 上电复位POR(Power on reset)
当芯片加电后电压VDD上升到一定值(一般在1.3~1.8V)时, 上电复位即产生一个上电复位脉冲。 2. 上电延时定时器PWRT 在芯片加电时,PWRT提供固定72ms正常上电延迟定时,上电延时定时用RC振荡器工作。只要PWRT工作,芯片就保持复位状态,PWRT延时可以使电源电压上升到一个对芯片工作适合的电平。 PIC上海技术培训中心

303 3. 电源控制/状态寄存器PCON Bit0是掉电复位状态位BOR,它在上电复位时不确定,上电复位后用户必须把它置位。如果在后续的复位中该位被清零,则表示发生过掉电锁定复位。 Bit1是上电复位状态位POR,它在上电复位时被清零,在其它情况下不受影响。上电复位后,用户必须把该位置位。 PIC上海技术培训中心

304 监视定时器WDT 监视定时器WDT是PIC单片机最具特色的内容之一,定时计数脉冲是由芯片内专用的RC振荡器产生。它的工作既不需要任何外部器件,也与单片机的时钟电路无关。这样既使单片机的时钟停止,WDT仍旧能继续工作。 PIC上海技术培训中心

305 监视定时寄存器WDT一览表 PIC上海技术培训中心

306 调试与编程 在线调试器 程序校验/代码保护 标识(ID)码存储单元 在线串行编程 PIC上海技术培训中心

307 13.2 PIC单片机低功耗设计 随着电子产品小型化的发展,对单片机也提出了低功耗的要求,这在一些便携式产品、野外检测仪表、海河航标灯和玩具等产品中尤为重要。设计一个低功耗系统产品,是一个综合规划的内容,需要考虑的因素很多,但主要可以采用以下措施: PIC上海技术培训中心

308 1.选择合适的模块 PIC系列单片机虽然功耗都很低,但不同的模块电能消耗不同,即便是在同一个家族里选择芯片型号的时候,它们也有不同的电能消耗量! 2.选择合适的工作条件 一般睡眠模式下运行比正常模式耗电省得多,所以如果其它条件允许,尽量让芯片处于睡眠状态。低电压下工作比较省电,在选用单片机时尽可能选择较低的工作电压。 PIC上海技术培训中心

309 3.选择合适的振荡方式 晶体、谐振器和RC振荡器,有着不同的唤醒时间。一般来说,晶体的唤醒时间最长为8.5mS左右,谐振器唤醒时间约为390μS,而RC振荡器唤醒时间最短约为1.15μS左右。如果唤醒时间过长,在唤醒过程中存在一个预工作阶段,处理器已经开始消耗电能,但是还没有运行程序,这就会带来更多的电能消耗。如果唤醒后的工作时间很短,一般采用RC振荡器较合理。 PIC上海技术培训中心

310 晶体、谐振器和RC振荡器的比较: PIC上海技术培训中心

311 4.合理处理I/O管脚 I/O 管脚的处理,在低功耗系统里非常重要。设置为输出的管脚可以驱动20~25mA电流。所以检查你的设计,优化每个输出管脚上的电流消耗是非常重要的,即使是弱上拉的管脚依然可以输出 400uA电流。为达到节能目的,可以禁止内部上拉,使用外部较大的电阻做上拉。 PIC上海技术培训中心

312 5.TMR1异步时钟方式下使用 在需要实时时钟的场合,在TMR1上接入一个32.768kHz 晶体就可以实现成本低和电耗低。TMR1可以在不用外部时钟芯片,允许芯片进入睡眠模式下,继续走时钟(时间/日期)。 PIC上海技术培训中心

313 13.3  PIC单片机抗干扰设计 功能性设计、抗干扰设计、产品化设计构成单片机应用系统设计的三位一体。功能性设计,是为了满足系统控制、运算等基本运行能力的设计;产品化设计,是为了满足产品必须适应环境的需要。而抗干扰设计,是在正常使用条件下系统有良好可靠性与安全性的保证,这也是单片机设计和单片机使用过程中被普遍关注的问题。 PIC上海技术培训中心

314 对单片机系统的影响主要表现在以下几个方面:
数据被干扰改写 程序运行失常 指令译码出错 PIC上海技术培训中心

315 硬件干扰抑制技术 芯片选择 电路板设计 隔离技术 PIC上海技术培训中心

316 13.3.2 软件干扰抑制技术 指令冗余技术 软件陷阱技术 复位抗干扰措施 软件辨伪、纠错 定期刷新 使用I/O映像口位
PIC上海技术培训中心


Download ppt "PIC单片机原理及应用 (第二版) 美国微芯公司授权上海技术培训中心 2005.01 PIC上海技术培训中心."

Similar presentations


Ads by Google