PIC12C5某单片机应用与设计.doc

上传人:一*** 文档编号:809382 上传时间:2019-07-16 格式:DOC 页数:138 大小:723KB
返回 下载 相关 举报
PIC12C5某单片机应用与设计.doc_第1页
第1页 / 共138页
PIC12C5某单片机应用与设计.doc_第2页
第2页 / 共138页
点击查看更多>>
资源描述

《PIC12C5某单片机应用与设计.doc》由会员分享,可在线阅读,更多相关《PIC12C5某单片机应用与设计.doc(138页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、前言前言 面向应用的嵌入式系统在我国方兴未艾面向应用的嵌入式系统在我国方兴未艾微控制器,也就是单片机(MCU),在 80 年代进入中国。由于微控制器容易学、容易用,倍受青眯。这种把中央处理器、存储器、外设器件及 I/O 做在同一块芯片上的器件总是作为应用系统中的控制部件使用。现在,做在微控制器芯片上的外设部件越来越多,功能不断增强。针对具体的应用,利用微控制器可以设计出十分复杂的系统,这种系统称作嵌入式系统。在杭州召开的99 全国单片微机学术交流会暨多国单片微机产品展览会上,许多专家呼吁要提高对嵌入式系统的认识。目前,在全世界,嵌入式系统带来的工业年产值已超过 1 万亿美元。预计在美国,单是使

2、用嵌入式电脑的全数字电视产品每年将产生 1500 亿美元的新市场。美国未来学家尼葛洛庞帝曾预言,四、五年后,嵌入式智能工具将是继 PC 和因特网后最伟大的发明。就目前国内微控制器的应用状况,全国微机单片机学会理事长陈章龙教授说,从整体来讲,在中国,微控制器的应用水平还不高,主要是用 8 位微控制器,用量也不大,绝大多数是用于 IC 卡设备等仪器仪表和控制领域中。嵌入式系统的核心部件是各种类型的嵌入式处理器,据不完全统计,全世界嵌入式处理器的品种已经过千,流行的结构有 30 多种,其中以我们熟悉的 PIC 系列结构的产品为最多。据中国单片机公共实验室高级工程师吕京建介绍,嵌入式处理器分为两大类,

3、一类是以通用计算机中的 CPU 为基础的嵌入式微控制器,另一类是微控制器。与微处理器相比,微控制器具有单片化、体积小、功耗低、可靠性高、芯片上的个设资源丰富等特点,目前已成为嵌入式系统的主流器件。嵌入式微处理器的软件是实现嵌入式系统功能的关键,为了提高执行速度和系统的可靠性,嵌入式系统中的软件一般都固化在存储器芯片或微控制器中。嵌入式系统是面向应用的,因此它可以应用在现代化工业的各个领域,如:航天、航空、军事、家用消费商品、仪器仪表、各种控制系统及 3C 系统。尤其在国内主要应用于家电消费类产品、通信和计算机外设等。而福州高奇电子科技有限公司正在对 MCU 的广泛应用起着强大的推动作用。高奇电

4、子科技有限公司创办于一九九三年十月,是一家专业的半导体集成电路授权代理商和专业集成电路应用、设计公司。目前代理、销售多家著名半导体厂商的产品,如单片机、E2PROM、保安器件、电压检测器、LCD/VFD 驱动器、电话来电识别(Caller ID)以及交换机用的 Switch、Codec 芯片等等;同时,设有专业的研发部门,已经研制了一系列电子产品整机方案,这些方案包括完整的软硬件设计资料及样机,可提供给整机厂商直接采用生产。公司的工程部门还可以为客户量身定做,增加和删改功能以体现客户的产品特色。高奇公司坚持“以专业的态度和水准,供优质产品、创名牌服务”的经营理念,将全部资源专注于半导体 IC

5、的应用设计、行业市场的专用 IC(ASIC)设计以及 IC 市场营销,并将不断开拓出电子产品新领域,并缩短研发时间,使产品与下面就介绍一种简单的 PIC 单片机系列。时代同步。下面就介绍一种简单的 PIC 单片机系列。第一章第一章 PIC12C5XXPIC12C5XX 功能原理功能原理PIC12C5XX 是美国 Microchip 公司推出的 8 位单片机,也是世界上第一个 8 脚封装的 8 位单片机系列。1.11.1 功能特点功能特点一、高性能 RISC 结构 CPU精简指令集,仅 33 条单字节指令,易学易用除地址分支跳转指令为双周期指令外,其余所有指令皆为单周期指令执行速度: DC1s

6、二级硬件堆栈直接、间接、相对三种寻址方式 二、功能部件特性8 位定时器/计数器 TIMER0,带 8 位预分频器大驱动电流,I/O 脚可直接驱动数码管(LED)显示- 每个 I/O 引脚最大控电流 25mA- 每个 I/O 引脚最大灌电流 20mA内置上电复位电路(POR)复位定时器,保障复位正常内部 MCLR 复位端加上拉电路,无需外接上拉内置自振式看门狗,防程序死锁程序保密位,可防止程序代码的非法拷贝低功耗睡眠功能I/O 引脚可唤醒睡眠内置 4MHz RC 型振荡源,可省外接振荡可选外接振荡- RC: 低成本阻容振荡 - XT: 标准晶体/陶瓷振荡 - LP: 低速晶体,低功耗振荡三、CM

7、OS 工艺特性低功耗2mA 5V,4MHz-15A 3V,32KHz-1A 低功耗睡眠(Sleep)模式下全静态设计宽工作电压范围:2.5V5.5V宽工作温度范围:商用级: 070-工业级:4085-汽车级:40125 1.21.2 型号及引脚介绍型号及引脚介绍 PIC12C5XX 目前有二种型号,见下表:型 号 振 荡EPROM RAM定时器输入线I/O线电压范围封装(DIP/SOIC)12C508DC4Mhz512122581152.5V-5.5V812C509DC4Mhz10241241 81152.5V-5.5V8表 1.1 PIC12C5XX 型号功能表各型号管脚图如下:PDIP,S

8、OIC,Windowed CERDIP VDDGP5/OSC1/CLKINGP4/OSC2GP3/MCLR/VPPGP0GP1GP2/T0CK1图 1.1 12C508/509 引脚 下表描述了各引脚的功能。 引脚名 引脚序号 属性 缓冲类型 功能 GP07I/O TTL/ST双向 I/O 口线,带可编程弱上拉,并具电平变化唤醒睡眠功能GP16I/O TTL/ST双向 I/O 口线,带可编程弱上拉,并具电平变化唤醒睡眠功能GP2/T0CK15I/OST双向 I/O 口线,并可设置为计数器 TIMER0 的外部信号输入端GP3/MCLR4ITTL单向输入口线,也可设置为芯片复位端。当设为复位端

9、MCLR 时,低电平有效。当作为输入口线时,带可编程弱上拉及电平变化唤醒睡眠功能GP4/OSC23I/OTTL双向 I/O 口线,(使用片内 RC振荡源时,也可作为晶振输出端)GP5/OSC1/CLKIN2I/O TTL/ST双向 I/O 口线,(使用片内 RC振荡源时,也可作为晶振输入端或外部振荡输入端)VDD1电源正电源VSS8电源地注:ST 斯密特触发器 表 1.2 PIC12C5XX 引脚功能从上表可看出,PIC12C5XX 最多可以有 5 根 I/O 口线和 1 根输入口线(GP3)。1.31.3 PIC12C5XXPIC12C5XX 内部结构内部结构PIC12C5XX 的总线结构采

10、用的是数据总线(8 位)和指令总线(12 位)独立分开的”哈佛结构”,所以它具有精简指令集(RISC)的特点,速度快,效率高,并且功耗很低。PIC12C5XX 在一个芯片上集成了 8 位的算术逻辑运算单元(ALU),0.5K1K 的 12 位程序存储器,2541 个 8 位数据寄存器以及 8 位的计数器,上电复位电路,复位定时器,看门狗等等。图 1.2 PIC12C5XX 内部结构1.41.4 指令周期和流水作业指令周期和流水作业PIC12C5XX 的指令周期被分频成 4 个不重叠的节拍 Q1Q4,程序计数器 PC 在 Q1 节拍增 1, 而指令是在 Q4 节拍从程序存储器中取出并置入指令译码

11、器,并在下一个指令周期被执行, 如下图所示:图 1.3 指令周期指令的执行贯穿 Q1Q4 节拍。如上所述,当 CPU 在执行一条指令的同时, 下一条指令的代码也同时被取出置入指令译码器,准备在下一指令周期执行,这就是PIC 的流水作业方式,也是 RISC 结构单片机的特点,这种特点使单片机的运行速度可以达到很高。除了地址分支跳转指令的执行周期是 2 个指令周期外,其余所有指令都是单周期指令, 见下图: 图 1.4 流水作业1.51.5 程序存储器和堆栈程序存储器和堆栈PIC12C5XX 的程序存储器为 12 位长,其中 PIC12C508 为 512 字节,而 PIC12C509 为 1024

12、 字节。复位向量为地址 0,因为最后一个字节(PIC12C508 为地址 1FFH,PIC12C509 为地址 3FFH)存放有片内 RC实际振荡的校正系数,其形式为指令 MOVLW XX,用户不要使用这个字节,所以用户的程序应从地址 000H 开始存放,注意这点和PIC16C5X 有所不同。 图 1.5 程序存储器和堆栈PIC12C5XX 把程序存储器以 512 字节为单位进行分页管理,这样PIC12C508 有一个页面程序区,而 PIC12C509 有 2 个页面程序区,由状态寄存器 STATUS 中的 PA0 位(STATUS) 确定程序区的页面。这是因为 PIC 是 RISC 结构,所

13、有指令都是单字节,在 PIC12C5XX 中,一条指令中所包含的地址信息只有 9 位,只能直接寻址一个页面(512 字节);对于 12C509,则还要由 PA0 位来辅助寻址 2 个页面(1024 字节)的程序空间,即程序当需从一个页面跳转到另一个页面时(CALL、GOTO 指令),应事先根据要跳转去的页面,把 PA0 位置为相应的值,请参阅状态寄存器的描述。PIC12C5XX 的堆栈有 2 层,有自己独立的空间,不占用程序存储器。注意它只能容纳二层子程序嵌套调用。堆栈的长度是 12 位,和 PC长度一致,可以存放子程序调用时的 PC 值。对堆栈的压入操作由子程序调用指令 CALL 完成,出栈

14、操作则由子程序返回指令 RETLW 完成,请参阅第二章中这二条指令的详介。1.61.6 数据存储器数据存储器PIC12C5XX 的数据存储器(RAM)由一些寄存器组成,分为特殊寄存器和通用寄存器二种。在 PIC 单片机中,对任何部件的操作都表现为对某一寄存器的操作,所以编程非常简单明了。* : 非实际存在的寄存器,参见1.6.1 中详介。图 1.6 寄存器结构从上图可看到,00h06h 为特殊寄存器,其余为通用寄存器。PIC12C508 有 25 个通用寄存器,而 PIC12C509 则有 41 个通用寄存器,其中 25 个在 Bank0,另 16 个在 Bank1,关于寄存器的 Bank 方

15、式,请参阅1.6.1 的 FSR 寄存器描述。1.6.11.6.1 特殊寄存器特殊寄存器 一、INDF(地址:00h) 间址寄存器INDF 是一个物理上不存在的寄存器,只是一个逻辑寄存器,用来进行间接寻址,实际的寻址地址为 FSR的值。例: MOVLW 10hMOVWF FSR ;实际地址10h(F10 寄存器)FSRMOVLW 55hMOVWF INDF ;数据 55hF10INCF FSR ;FSR 增 1(FSR=11h)MOVWF INDF ;数据 55hF11参阅后面 FSR 寄存器的描述。二、TMR0(地址:01h) 定时器/计数器寄存器二、TMR0(地址:01h) 定时器/计数器

16、寄存器TMR0 对应于 TIMER0,它是一个 8 位的定时器/计数器(在 PIC16C5X中称其为 RTCC),请参阅1.8 详介。三、PCL(地址:02h) 程序计数器 PCPIC12C5XX 程序计数器 PC 最多可寻址 1K(1024)程序区:型 号PC 长度寻址空间PC 复位值PIC12C50895121FFhPIC12C5091010243FFh单片机一复位,PC 值被置为全“1”指向程序区的最后一个字节。前面我们提过,这个地址存放的是芯片出厂时已放入的 MOVLW XX 指令(其中 XX 是片内振荡校正系数),所以单片机复位后会执行这条指令,然后 PC 马上翻转到 000h,开始

17、执行用户的程序代码。注意,页面选择位 PA0 复位时也被清零,所以这时页面处于 0 页,请参阅有关状态寄存器 STATUS 的描述。对于“GOTO”指令,它的指令码中含有跳转地址的低 9 位,即PC,对于 PIC12C509 来说,状态寄存器的第 5 位(STATUS)还会被置入 PC,以选择程序页面,从而寻址 1K的程序空间。 图 1.7 GOTO 指令寻址方式对于“CALL”指令或其他涉及会修改 PCL 的指令,它们的指令码中仅包含目的地址的低 8 位,即 PC,而 PC总是会被硬件自动清零,状态寄存器第 5 位(STATUS)也会被置入 PC以选择程序页面(对于 PIC12C509 而言

18、)。见下图: 图 1.8 CALL 指令或修改 PCL 的指令寻址方式从上图可看出,由于执行这些指令硬件总会清 PC=0,所以它们的起始地址都必须限于放在每个程序页面的上半区,即头上的 256个字节空间内(0hFFh 或 200h2FFh)。四、STATUS(地址:03h) 状态寄存器STATUS 寄存器包含了 ALU 的算术状态、芯片复位状态、程序页面位等信息。STATUS 可以被读/写,但是其中的复位状态位 TO、PD 不能由软件设置,它们的状态如何决定1.12.7 会有详细描述。图 1.9 状态寄存器在加法运算时,C 是进位位;在减法运算时,C 是借位的反。例 a: CLRF F10 ;

19、F10=0MOVLW 1 ;W=1SUBWF F10 ;F10-W=-1(FFH),C=0(运算结果为负)例 b: MOVLW 1 ;W=1MOVWF F10 ;F10=1CLRW ;W=0SUBWF F10 ;F10-W=1,C=1(运算结果为正)PD 和 TO 两位可用来判断芯片复位的原因,GPWUF 位也是用来判断芯片复位类型,请参阅1.12.7 描述。五、FSR(地址:04h) 选择寄存器FSR 和 INDF 寄存器(地址:00h)配合完成间接寻址,请参阅前面有关 INDF 寄存器的描述。FSR 寄存器宽度为 5 位,FSR用来间接寻址 32 个寄存器,FSR 则用来选择寄存器体(Ba

20、nk),见下图:图 1.10 直接/间接寻址方式a、PIC12C508: 不存在寄存器体选,FSR恒为“1”。b、PIC12C509: FSR=1 Bank1,FSR=0 Bank0。六、OSCCAL(地址:05h) 内部振荡校正系数寄存器PIC12C5XX 内部集成有 RC 振荡供用户选择使用,OSCCAL 包含了该振荡电路的校正系数,其上电初始值为“0111”,请参阅1.11.4 有关内部 RC 振荡的描述。七、GPIO(地址:06h) I/O 寄存器PIC12C5XX 有一个 6 位的 I/O 口,它在寄存器中的映像就是 GPIO 寄存器,GPIO对应于 I/O 口线 GP5:GP0,G

21、PIO未用,恒为“0”。八、TRIS I/O 方向控制寄存器TRIS 是 GP 口线方向控制寄存器,用户不能直接寻址,必须通过执行“TRIS 6”指令来设置它。当执行“TRIS 6”指令后,W 寄存器的内容即会被置入 TRIS 中。“1”将相应的 I/O 口线设为输入态(高阻态),“0”则被设为输出态。但是有二点例外,即 GP3 永远是输入态而 GP2 有可能由 OPTION 寄存器设置为输入态(T0CKI),而不理会 TRIS 中的设置内容。请参阅1.2 关于 I/O 口的描述。例:MOVLW 0Fh ;W=“00001111”TRIS 6 ;TRIS=“001111”,GP0:GP3 为输

22、入态GP4:GP5 为输出态各种复位都会置 TRIS 为全“1”。九、OPTION 参数定义寄存器OPTION 用来定义一些芯片工作参数,见下图所示:图 1.11 OPTION 寄存器OPTION 也是不能由用户直接寻址的,必须由执行“OPTION”指令来把 W 寄存器中的内容置入 OPTION 寄存器,如下例:MOVLW 7 ;W=“00000111”OPTION ;WOPTION各种复位都会置 OPTION 为全“1”。注意即使 TRIS 中相应的 GP2 方向位是“0”,如果将 TOCS 置为“1”,则 GP2 也会被强置为输入态,即为 T0CKI 输入线。有关 OPTION 各位的定义

23、,请参阅各自相应的章节。十、W 工作寄存器W 寄存器用来存放指令中的第二个操作数,或用来进行内部数据传送,或存放运算结果,是最常用的寄存器。1.6.21.6.2 通用寄存器通用寄存器PIC12C508: 07h 1Fh ;Bank0PIC12C509: 07h 1Fh ;Bank030h 3Fh ;Bank1通用寄存器在上电后的值是随机的,所以它属 RAM 性质。1.71.7 I/OI/O 口口PIC12C5XX 只有一个 I/O 口,对应的映像寄存器为 GPIO(地址:06h),其中 GPIO 对应 GP5:GP0,GPIO未用,永为“0”。注意,GP3 仅可作为输入,是单向 I/O 口线。

24、另外,GP5、GP4、GP3 及 GP2 还可以由用户定义成各种特殊功能口线,一旦它们被用作特殊用途,则永远读为“0”。GP0、GP1 和 GP3 还带有可编程的弱上拉和“电平变化唤醒功能”(即唤醒正处于睡眠状态下的芯片),关于这点请参阅 OPTION 寄存器的描述。如果 GP3 被用户定义为复位输入端(MCLR),则它的弱上拉自动有效,但“电平变化唤醒”特性被自动关闭。GPIO 口线的方向由 TRIS 寄存器控制,详情参见1.6.1 中有关TRIS 寄存器的描述。1.7.11.7.1 I/OI/O 口结构口结构一根 I/O 口线的结构如下图所示: 图 1.12 I/O 口结构除了 GP3 只

25、能单向作为输入口外,其余的 GPIO 口皆可由用户定义为输入/输出态。作为输入口时没有锁存,外部信号必须保持到让 CPU读入为止(例如:MOVF GPIO,W)。作为输出则有锁存,可以保持直到被新的值取代为止。I/O 端的输入/输出态由 TRIS 寄存器的值控制,当 TRIS 将“1”置入 I/O 控制器时 Q1 和 Q2 都处于截止态,所以 I/O 端即呈高阻态(输入态)。当执行 I/O 读指令(如 MOVF 6,W),把当前 I/O 端的状态读入数据总线。当 TRIS 将“0”置入 I/O 控制器时,Q1 和 Q2 的导通情况将要由数据锁存器 Q 端的状态来决定。当写入数据为“1”时,Q

26、端为低电平 0,则 Q1 导通,I/O 输出为高电平。反之,当写入数据为“0”时,Q 端为“1”,则 Q2 导通,I/O 端输出为低电平。I/O 读写时序如图 1.13 所示。1.7.21.7.2 I/OI/O 口使用注意事项口使用注意事项1、I/O 方向转置的问题某时候可能需要一个 I/O 口一会做输入,一会又做输出。这就是I/O 方向的转置。在编写这种 I/O 转置程序时必须注意,有些指令如位设置指令(BSF、BCF)写 I/O 口时是先从 I/O 读入其状态,执行位操作后再将结果写回去覆盖原来的内容(输出的结果放在 I/O口的数据锁存器)。举个例子来说:“BSF 6,5” 这条指令的目的

27、是要把 B 口的第 6位置为高电平“1”。执行这条指令时,先把整个 B 口当前的状态内容读入到 CPU,把第 6 位置成“1”后再把结果(8 个位)重新输出到 B 口。如果 B 口中的有一个 I/O 端是需要方向转置的(比如说bit1),而这时是处于输入态,那么 B 口的状态值重新写入后,B口的数据锁存器 1 的锁存值就是当前 B 口 Bit1 的状态。 这可能和先前 Bit1 作为输出时所锁存的值不同,所以当 Bit1 再转置成输出态时,出现在 Bit1 端的状态就可能和先前的输出态不同了。2、I/O 的“线或”和“线与”从图 1.12 看出 PIC I/O 端输出电路为 CMOS 互补推挽

28、输出电路。因此与其他这类电路一样,当某个 PIC I/O 端设置为输出状态时,不能与其他电路的输出端接成“线或”或“线与”的形式,否则可能引起输出电流过载,烧坏 PIC。如需要与其他电路接成“线或”电路时,PIC I/O 端必须置于“1”状态或输入状态,并外接下拉电阻。电阻的阻值根据实际电路和 PIC I/O 端最大电流来决定。3、I/O 口的连续操作一条写 I/O 的指令,对 I/O 真正写操作是发生在指令的后半周期(参照图 1.13)。而读 I/O 的指令却是在指令的周期开始就读取I/O 端状态。所以当你连续对一个 I/O 端写入再读出时,必须要让I/O 端上的写入电平有一个稳定的时间,否

29、则读入的可能是前一个状态,而不是最新的状态值。一般推荐在两条连续的写,读 I/O 口指令间至少加一条 NOP 指令。例: MOVWF 6 ;写 I/ONOP ;稳定 I/O 电平MOVF 6,W ;读 I/O4、噪声环境下的 I/O 操作在噪声环境下(如静电火花),I/O 控制寄存器可能因受干扰而变化。比如 I/O 口可能会从输入态自己变成输出态,对于这种情形,WDT 也是无法检测出来的。因此如果你的应用环境是较恶劣的,建议你每隔一定的间隔,都重新定义一下 I/O 控制寄存器。最保险的方法当然是对 I/O 读写前都定义一下 I/O 控制寄存器(但是实践证明对于大多数的应用都不必做到这样,只是提

30、请你注意噪声干扰)。图 1.13 I/O 口连续读/写时序1.81.8 定时器定时器/ /计数器计数器 TIMER0TIMER0TIMER0 是一个 8 位的定时器/计数器,其对应的映像寄存器是TMR0(地址:01h),可由用户程序直接读写,并且可带有 8 位的预分频器。它用于对外加在 GP2/T0CKI 引脚上的外部信号进行计数(计数器)或对内部指令时钟进行计时(定时器),在 PIC16C5X 中它被称为 RTCC。TIMER0 及其相关电路如图 1.14 所示。从图中可看出 TIMER0 工作状态由 OPTION 寄存器控制,其中 OPTION 寄存器的 T0SC 位用来选择TIMER0

31、的计数信号源,当 T0SC 为“1”时,信号源为内部时钟,T0SC 为“0”时,信号源为来自 T0CKI 引脚的外部信号。OPTION 寄存器的 PSA 位控制预分频器(Prescaler)分配对象,当 PSA 位为“1”, 分配给 TIMER0,即外部或内部信号经过预分频器分频后再输出给 TIMER0。 预分频器的分频比率由 OPTION 内的 PS0PS2 决定。这时涉及写 TMR0 寄存器的指令均同时将预分频器清零,OPTION 寄存器内容保持不变,即分配对象、分频比率等均不变。OPTION 的T0SE 位用于选择外部计数脉冲触发沿。当 T0SE 为“1”时为下降沿触发,为“0”时则上升

32、沿触发。图 1.14 TIMER0 方块图TIMER0 计数器采用递增方式计数,当计数至 FFH 时,在下一个计数发生后,将自动复零,重新开始计数,从此一直循环下去。TIMER0对其输入脉冲信号的响应延迟时间为 2 个机器周期,不论输入脉冲是内部时钟、外部信号或是预分频器的输出。响应时序见图 1.15。TIMER0 对外部信号的采样周期为 2 个振荡周期,因此当不用预分频器时,外加在 T0CKI 引脚上的脉冲宽度不得小于 2 个振荡周期即1/2 指令周期。同时,当使用预分频器时,预分频器的输出脉冲周期不得小于指令周期,因此预分频器最大输入频率可达N,fosc/4,N 为预分频器的分频比,但不得

33、大于 50MHz。 图 1.15a. TIMER0 时序图:内部时钟/无预分频器图 1.15b. TIMER0 时序图:内部时钟/预分频比 1:2应注意的是尽管 PIC 对外部加于 T0CKI 信号端上的信号宽度没有很严格的要求,但是如果高电平或低电平的维持时间太短,也有可能使 TIMER0 检测不到这个信号。一般要求信号宽度要大于 10ns。1.91.9 预分频器预分频器预分频器是一个分频倍数可编程的 8 位计数器。其结构如图 1.14 所示上节对预分频参数已有描述,这里不再赘述。预分预器的分配对象完全由程序控制,可以在程序中改变Prescaler 分配对象。1、从 TIMER0 到 WDT

34、 的改变MOVLW BXX0X0XXX ;选择内部时钟和新的预分频值OPTION ;如果新的预分频值=000或者CLRF 1 ;=001,则暂时先选一个另外的值MOVLW BXXXX1XXX ;清零 TMR0 和预分频器OPTION ;选择 WDT 为对象,但不要改变预分频值CLRWDT ;清 WDT 和预分频器MOVLW BXXXX1XXX ;选择新的预分频器OPTION2、从 WDT 到 TIMER0 的改变CLRWDT ;清 WDT 及PrescalerMOVLW BXXXX0XXX ;选择 TIMER0OPTION图 1.16 预分频器方块图注意,预分频器只能分配给 TIMER0 或

35、WDT 其中之一使用,而不能同时分配给二者。1.101.10 看门狗看门狗 WDTWDT看门狗计时器(Watch Dog Timer)是一个片内自振式的 RC 振荡计时器,无需任何的外接元件。这意味着即使芯片振荡停止了(例如执行指令 SLEEP 后),WDT 照样保持计时。WDT 计时溢出将产生RESET。在 PIC12C5XX 芯片内有一个特殊的谓之“系统定义字”(Configuration EPROM)的单元,其中的一个位是用于定义 WDT 的,可以将其置“0”来抑制 WDT 使之永远不起作用。这将在第六章的烧写器介绍部分详细说明。1、WDT 周期WDT 有一个基本的溢出周期 18ms(无

36、预设倍数),如果需要更长的WDT 周期,可以把预分频器分配给 WDT,最大分频比可达 1:128,这时的 WDT 溢出周期约为 2.5S。WDT 溢出周期和环境温度、VDD 等参数有关系,请参阅附录的图表。“CLRWDT”和“SLEEP”指令将清除 WDT 计时器以及预分频器(当预分频器分配给 WDT 时)。WDT 一般用来防止系统失控或者说防止单片机程序“失控”。在正常情况下,WDT 应在计时溢出前被 CLRWDT指令清零,以防止产生 RESET。如果程序由于某种干扰而失控,那么不能在 WDT 溢出前执行一条 CLRWDT 指令,就会使 WDT 溢出而产生RESET,使系统重新启动运行而不至

37、失去控制。若 WDT 溢出产生RESET,则状态寄存器 F3 的“TO”位会被清零,用户可藉此判断复位是否由 WDT 溢时所造成。2、WDT 编程注意事项如果使用 WDT,一定要仔细在程序中的某些地方放一条“CLRWDT”指令,以保证在 WDT 在溢出前能被清零,否则会造成芯片不停地产生 RESET,使系统无法正常工作。在噪声工作环境下,OPTION 寄存器可能会因受干扰而改变,所以最好每隔一段时间就将其重新设置一下。1.111.11 振荡振荡PIC12C5XX 可以运行在以下四种振荡方式下:a、LP 低功耗低速晶体振荡b、XT 标准晶体/陶瓷振荡c、INTRC 内部 4MHz RC 振荡d、

38、EXTRC 外部 RC 振荡以上四种振荡方式可由“系统定义字”中的 Fosc1:Fosc2 两位来选择,请读者参阅后面1.12.9 的详述。1.11.11.11.1 晶体晶体/ /陶瓷振荡陶瓷振荡这种振荡包括 XT 和 LP,其电路连接是在 GP5/OSC1/CLKIN 和GP4/OSC2 两端加一晶体/陶瓷振荡,如下图所示: 图 1.17 晶体/陶瓷振荡电路下表是使用各种频率的晶体和陶瓷振荡所需的 C1、C2 电容值。振荡类型频率C1C2振荡类型频率C1C2XT455KHz68-100P68-100PLP32KHz 15P15P100KHz15-30P200-300P2MHz15-33P 1

39、5-33PXT 200KHz15-30P100-200P1MHz15-30P15-30P2MHz15P15P4MHz10-22P 10-22P4MHz15P15Pa. 陶瓷振荡 b.晶体振荡表 1.3 各种振荡下的 C1 和 C2 值1.11.21.11.2 外部外部 RCRC 振荡振荡这种振荡类型成本最低,但频率的精确性较差,适用于时间精确度要求不高的应用场合。RC 振荡的频率是 VDD、RC 值以及环境温度的函数。请参阅附录的 RC 频率函数图。RC 振荡的连接如图 1.18 所示。图 1.18 RC 振荡电路RC 振荡是在 OSC1 端连接一个串联的电阻电容。这个电阻如果低于2.2K,振

40、荡不稳定,甚至不能振荡,但是电阻高于 1M 时,则振荡又易受干扰。所以电阻值最好取 5K100K 之间。尽管电容 C 为 0 时,电路也能振荡,但也易受干扰且不稳定,所以电容值应取 20P 以上。RC 值和频率关系如表 1.4 所示。RC 振荡时 OSC2 端输出一 OSC1 的 4分频脉冲(f=1/4OSC1)。RestCextVDDFosc/255k0PF5.04.0MHz5k20PF6.02.2MHz5k20PF3.52.5MHz10k130PF5.0480MHz10k290PF5.0245MHz100k300PF3.530MHz表 1.4 RC 与频率的关系1.11.31.11.3 外

41、部振荡外部振荡PIC12C5XX 也可以接受外部振荡源(仅适合于 XT 和 LP 类型振荡),连接时将外部振荡接入 GP5/OSC1/CLKIN 端,见下图: 图 1.19 外部振荡源输入电路1.11.41.11.4 内部内部 RCRC 振荡振荡PIC12C5XX 内部提供有 4MHz 的 RC 振荡源供用户选择使用,选择振荡方式和振荡源的方法见1.12.9 详介。在 PIC12C5XX 的程序区最顶端(12C508:1FFh,12C509:3FFh)放了一条 MOVLW XX 的指令, XX 是内部 RC 振荡的校正系数。芯片上电后,PC 指针指向程序区最顶端,执行完这条指令后 PC 值加

42、1 变为 000h。这时 W 寄存器中存放即是内部 RC 振荡的校正系数,用户可以把这个系数置入 OSCCAL 寄存器(05h)以便使其起校正作用,也可以忽略不管它。例: 0 ;定义存储区地址 0MOVWF OSCCAL ;把 W 中的校正系数置入 OSCCAL。1.121.12 复复 位(位(RESETRESET)PIC12C5XX 有各种各样原因造成的芯片复位:1、芯片上电2.、MCLR 端加低电平3、看门狗 WDT 超时溢出4、睡眠中某些 I/O 口线电平发生变化当芯片处于复位状态时,所有 I/O 口线都处于输入状态(高阻态),看门狗 WDT 和预分频器都被清零。图 1.20 片内复位电

43、路(暂缺)1.12.11.12.1 复位定时器(复位定时器(DRTDRT)复位定时器 DRT(在 PIC16C5X 中我们称其为 OST)是为了使芯片的复位可靠安全而设计。在 PIC12C5XX 中,对于 XT 和 LP 振荡方式,上电后它们还需要一定的时间来建立稳定的振荡。有鉴于此,PIC12C5XX 内部设计了一个复位定时器 DRT。DRT 在 MCLR 端到达高电平(VIHMC)后,即启动计时 18ms,这样可以使芯片保持在复位状态约 18ms 以便让振荡电路起振及稳定下来,然后芯片即脱离复位状态进入正常运行状态。DRT 的振荡源是芯片内专有的 RC 振荡电路,所以外围电路并不能改变其

44、18ms 的计时时间。当 WDT 计时溢出后,DRT 也是启动 18ms 使芯片保持在复位状态,然后再重新开始运行程序。注意,在振荡方式是外部 RC 或内部 RC 时,DRT 都关闭不起作用。1.12.21.12.2 芯片上电复位(芯片上电复位(PORPOR)PIC12C5XX 在芯片内集成有上电复位电路,见图 1.20 所示。当芯片电源电压 VDD 上升到一定值时(1.5V-2.1V),检测电路即会发出复位脉冲使芯片复位。1.12.31.12.3 MCLRMCLR 复位复位PIC12C5XX 的 GP3/MCLR 端可以由用户定义为普通输入口 GP3 或复位端 MCLR,如下图:图 1.21

45、 GP3/MCLR 端电路(暂缺)具体方法参见1.12.9 有关描述。一旦用户选择 MCLR 功能,则该端输入低电平会使芯片进入复位状态。1.12.41.12.4 外部复位电路外部复位电路在某种情况下,DRT 计时 18ms 后,芯片的振荡电路还不能稳定或供电电压(VDD)还不能达到标准值,这时如果芯片脱离复位状态进入运行,则芯片就有可能失控或运行不正常。为了使芯片脱离复位状态时各部分都处于正常,可以在 MCLR 端上加外部 RC 复位电路来延长复位时间,如下图:图 1.22 外部复位电路 这个电路可以使 VDD 上升到标准值一段时间后,MCLR 才会上升到高电平,从而启动 DRT 计时 18

46、ms 后才进入运行。这样可以延长整个复位过程,保障芯片复位后进入正常运行。1.12.51.12.5 掉电复位锁定掉电复位锁定当单片机的供电电压掉到最小标准值以下后,可能会使芯片的运行出现异常,从而扰乱整个控制系统,所以在某些应用中,我们希望一旦 VDD 掉到某个值时使芯片自动进入复位状态(所有 I/O 口都变成高阻态)以免扰乱系统,下面是一个 PIC12C5XX 掉电复位锁定的电路:图 1.23 掉电复位锁定当 VDD 电压恢复上升到标准值以上后,MCLR 端恢复为高,从而使芯片恢复正常运行。1.12.61.12.6 复位对寄存器的影响复位对寄存器的影响对于通用寄存器来说,上电复位后它们的值是随机不定的,其他类型的复位后则保持原值不变。对于特殊寄存器,各种复位后它们都会等于一个固定的复位值,见以下二表:寄存器地址上电复位值MCLR 复位

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com