收藏 分销(赏)

PIC12C5XX单片机应用与设计.doc

上传人:精**** 文档编号:2617868 上传时间:2024-06-03 格式:DOC 页数:88 大小:796.04KB 下载积分:18 金币
下载 相关 举报
PIC12C5XX单片机应用与设计.doc_第1页
第1页 / 共88页
PIC12C5XX单片机应用与设计.doc_第2页
第2页 / 共88页


点击查看更多>>
资源描述
PIC12C5XX单片机应用与设计 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 88 个人收集整理 勿做商业用途 PIC12C5XX单片机应用与设计 前言 面向应用的嵌入式系统在我国方兴未艾 微控制器,也就是单片机(MCU),在80年代进入中国。由于微控制器容易学、容易用,倍受青眯.这种把中央处理器、存储器、外设器件及I/O做在同一块芯片上的器件总是作为应用系统中的控制部件使用.现在,做在微控制器芯片上的外设部件越来越多,功能不断增强。针对具体的应用,利用微控制器可以设计出十分复杂的系统,这种系统称作嵌入式系统。在杭州召开的'99全国单片微机学术交流会暨多国单片微机产品展览会上,许多专家呼吁要提高对嵌入式系统的认识。     目前,在全世界,嵌入式系统带来的工业年产值已超过1万亿美元。预计在美国,单是使用嵌入式电脑的全数字电视产品每年将产生1500亿美元的新市场.美国未来学家尼葛洛庞帝曾预言,四、五年后,嵌入式智能工具将是继PC和因特网后最伟大的发明。就目前国内微控制器的应用状况,全国微机单片机学会理事长陈章龙教授说,从整体来讲,在中国,微控制器的应用水平还不高,主要是用8位微控制器,用量也不大,绝大多数是用于IC卡设备等仪器仪表和控制领域中。嵌入式系统的核心部件是各种类型的嵌入式处理器,据不完全统计,全世界嵌入式处理器的品种已经过千,流行的结构有30多种,其中以我们熟悉的PIC系列结构的产品为最多.据中国单片机公共实验室高级工程师吕京建介绍,嵌入式处理器分为两大类,一类是以通用计算机中的CPU为基础的嵌入式微控制器,另一类是微控制器。与微处理器相比,微控制器具有单片化、体积小、功耗低、可靠性高、芯片上的个设资源丰富等特点,目前已成为嵌入式系统的主流器件。嵌入式微处理器的软件是实现嵌入式系统功能的关键,为了提高执行速度和系统的可靠性,嵌入式系统中的软件一般都固化在存储器芯片或微控制器中。     嵌入式系统是面向应用的,因此它可以应用在现代化工业的各个领域,如:航天、航空、军事、家用消费商品、仪器仪表、各种控制系统及3C系统。尤其在国内主要应用于家电消费类产品、通信和计算机外设等。 而福州高奇电子科技有限公司正在对MCU的广泛应用起着强大的推动作用。高奇电子科技有限公司创办于一九九三年十月,是一家专业的半导体集成电路授权代理商和专业集成电路应用、设计公司。目前代理、销售多家著名半导体厂商的产品,如单片机、E2PROM、保安器件、电压检测器、LCD/VFD驱动器、电话来电识别(Caller ID)以及交换机用的Switch、Codec芯片等等;同时,设有专业的研发部门,已经研制了一系列电子产品整机方案,这些方案包括完整的软硬件设计资料及样机,可提供给整机厂商直接采用生产。公司的工程部门还可以为客户量身定做,增加和删改功能以体现客户的产品特色。高奇公司坚持“以专业的态度和水准,供优质产品、创名牌服务”的经营理念,将全部资源专注于半导体IC的应用设计、行业市场的专用IC(ASIC)设计以及IC市场营销,并将不断开拓出电子产品新领域,并缩短研发时间,使产品与下面就介绍一种简单的PIC单片机系列.时代同步。  下面就介绍一种简单的PIC单片机系列。 第一章  PIC12C5XX功能原理 PIC12C5XX是美国Microchip公司推出的8位单片机,也是世界上第一个8脚封装的8位单片机系列. §1。1  功能特点 一、高性能RISC结构CPU        ·精简指令集,仅33条单字节指令,易学易用        ·除地址分支跳转指令为双周期指令外,其余所有指令皆为单周期指令        ·执行速度: DC~1μs        ·二级硬件堆栈        ·直接、间接、相对三种寻址方式 二、功能部件特性        ·8位定时器/计数器TIMER0,带8位预分频器        ·大驱动电流,I/O脚可直接驱动数码管(LED)显示           — 每个I/O引脚最大控电流25mA           - 每个I/O引脚最大灌电流20mA        ·内置上电复位电路(POR)        ·复位定时器,保障复位正常        ·内部MCLR复位端加上拉电路,无需外接上拉        ·内置自振式看门狗,防程序死锁        ·程序保密位,可防止程序代码的非法拷贝        ·低功耗睡眠功能        ·I/O引脚可唤醒睡眠        ·内置4MHz RC型振荡源,可省外接振荡        ·可选外接振荡           - RC:  低成本阻容振荡               — XT:  标准晶体/陶瓷振荡            — LP:  低速晶体,低功耗振荡 三、CMOS工艺特性        ·低功耗           <2mA   @5V,4MHz           —15μA  @3V,32KHz           -<1μA  低功耗睡眠(Sleep)模式下        ·全静态设计        ·宽工作电压范围:2.5V~5.5V        ·宽工作温度范围:           商用级:   0℃~+70℃                    -工业级:-40℃~+85℃                    -汽车级:-40℃~+125℃ §1.2  型号及引脚介绍 PIC12C5XX目前有二种型号,见下表: 型  号 振  荡 EPROM RAM 定时器 输入线 I/O线 电压范围 封装(DIP/SOIC) 12C508 DC~4Mhz 512×12 25×8 1 1 5 2.5V—5.5V 8 12C509 DC~4Mhz 1024×12 41× 8 1 1 5 2。5V-5。5V 8 表1。1  PIC12C5XX型号功能表 各型号管脚图如下: PDIP,SOIC,Windowed CERDIP VDD——> GP5/OSC1/CLKIN<-—〉 GP4/OSC2<--〉 GP3/MCLR/VPP-—〉 〈-—VSS <——〉GP0 〈—-〉GP1 〈-—〉GP2/T0CK1 图1。1  12C508/509引脚 下表描述了各引脚的功能。 引脚名 引脚序号 属性 缓冲类型 功能 GP0 7 I/O TTL/ST 双向I/O口线,带可编程弱上拉,并具电平变化唤醒睡眠功能 GP1 6 I/O TTL/ST 双向I/O口线,带可编程弱上拉,并具电平变化唤醒睡眠功能 GP2/T0CK1 5 I/O ST 双向I/O口线,并可设置为计数器TIMER0的外部信号输入端 GP3/MCLR 4 I TTL 单向输入口线,也可设置为芯片复位端。当设为复位端MCLR时,低电平有效。 当作为输入口线时,带可编程弱上拉及电平变化唤醒睡眠功能 GP4/OSC2 3 I/O TTL 双向I/O口线,(使用片内RC振荡源时,也可作为晶振输出端) GP5/OSC1/CLKIN 2 I/O TTL/ST 双向I/O口线,(使用片内RC振荡源时,也可作为晶振输入端或外部振荡输入端) VDD 1 电源 — 正电源 VSS 8 电源 — 地 注:ST ─ 斯密特触发器 表1。2  PIC12C5XX引脚功能     从上表可看出,PIC12C5XX最多可以有5根I/O口线和1根输入口线(GP3). §1。3  PIC12C5XX内部结构     PIC12C5XX 的总线结构采用的是数据总线(8位)和指令总线(12位)独立分开的”哈佛结构”,所以它具有精简指令集(RISC)的特点,速度快,效率高,并且功耗很低。     PIC12C5XX在一个芯片上集成了8位的算术逻辑运算单元(ALU),0.5K~1K的12位程序存储器,25~41个8位数据寄存器以及8位的计数器,上电复位电路,复位定时器,看门狗等等。 图1.2  PIC12C5XX内部结构 §1.4  指令周期和流水作业     PIC12C5XX的指令周期被分频成4个不重叠的节拍Q1~Q4,程序计数器PC在Q1节拍增1, 而指令是在Q4节拍从程序存储器中取出并置入指令译码器,并在下一个指令周期被执行, 如下图所示: 图1.3  指令周期     指令的执行贯穿Q1~Q4节拍。     如上所述,当CPU在执行一条指令的同时, 下一条指令的代码也同时被取出置入指令译码器,准备在下一指令周期执行,这就是PIC的流水作业方式,也是RISC结构单片机的特点,这种特点使单片机的运行速度可以达到很高。 除了地址分支跳转指令的执行周期是2个指令周期外,其余所有指令都是单周期指令, 见下图: 图1。4  流水作业 §1.5  程序存储器和堆栈 PIC12C5XX的程序存储器为12位长,其中PIC12C508为512字节,而PIC12C509为1024字节.复位向量为地址0,因为最后一个字节(PIC12C508为地址1FFH,PIC12C509为地址3FFH)存放有片内RC实际振荡的校正系数,其形式为指令MOVLW XX,用户不要使用这个字节,所以用户的程序应从地址000H开始存放,注意这点和PIC16C5X有所不同。 图1。5  程序存储器和堆栈 PIC12C5XX把程序存储器以512字节为单位进行分页管理,这样PIC12C508有一个页面程序区,而PIC12C509有2个页面程序区,由状态寄存器STATUS中的PA0位(STATUS〈5>) 确定程序区的页面.这是因为PIC是RISC结构,所有指令都是单字节,在PIC12C5XX中, 一条指令中所包含的地址信息只有9位,只能直接寻址一个页面(512字节);对于12C509,则还要由PA0位来辅助寻址2个页面(1024字节)的程序空间,即程序当需从一个页面跳转到另一个页面时(CALL、GOTO指令),应事先根据要跳转去的页面,把PA0位置为相应的值,请参阅状态寄存器的描述。 PIC12C5XX的堆栈有2层,有自己独立的空间,不占用程序存储器。注意它只能容纳二层子程序嵌套调用。堆栈的长度是12位,和PC长度一致,可以存放子程序调用时的PC值。 对堆栈的压入操作由子程序调用指令CALL完成,出栈操作则由子程序返回指令RETLW完成,请参阅第二章中这二条指令的详介。 §1。6  数据存储器 PIC12C5XX的数据存储器(RAM)由一些寄存器组成,分为特殊寄存器和通用寄存器二种.在PIC单片机中,对任何部件的操作都表现为对某一寄存器的操作,所以编程非常简单明了。       * : 非实际存在的寄存器,参见§1。6.1中详介。 图1。6  寄存器结构 从上图可看到,00h~06h为特殊寄存器,其余为通用寄存器。PIC12C508有25个通用寄存器,而PIC12C509则有41个通用寄存器,其中25个在Bank0,另16个在Bank1,关于寄存器的Bank方式,请参阅§1。6.1的FSR寄存器描述. §1。6。1  特殊寄存器      一、INDF(地址:00h) ── 间址寄存器 INDF是一个物理上不存在的寄存器,只是一个逻辑寄存器,用来进行间接寻址,实际的寻址地址为FSR<4:0>的值。 例:      MOVLW       10h           MOVWF       FSR                ;实际地址10h(F10寄存器)→FSR           MOVLW     55h           MOVWF     INDF           ;数据55h→F10           INCF        FSR              ;FSR增1(FSR=11h)           MOVWF     INDF            ;数据55h→F11      参阅后面FSR寄存器的描述. 二、TMR0(地址:01h) ── 定时器/计数器寄存器 二、TMR0(地址:01h) ── 定时器/计数器寄存器 TMR0对应于TIMER0,它是一个8位的定时器/计数器(在PIC16C5X中称其为RTCC),请参阅§1.8详介。 三、PCL(地址:02h) ── 程序计数器PC〈7:0> PIC12C5XX程序计数器PC最多可寻址1K(1024)程序区: 型      号 PC长度 寻址空间 PC复位值 PIC12C508 9 512 1FFh PIC12C509 10 1024 3FFh 单片机一复位,PC值被置为全“1”指向程序区的最后一个字节。前面我们提过,这个地址存放的是芯片出厂时已放入的MOVLW XX指令(其中XX是片内振荡校正系数),所以单片机复位后会执行这条指令,然后PC马上翻转到000h,开始执行用户的程序代码。注意,页面选择位PA0 复位时也被清零,所以这时页面处于0页,请参阅有关状态寄存器STATUS的描述。 对于“GOTO”指令,它的指令码中含有跳转地址的低9位,即PC〈8:0〉,对于PIC12C509来说,状态寄存器的第5位(STATUS〈5>)还会被置入PC〈9>,以选择程序页面,从而寻址1K的程序空间。                             图1。7  GOTO指令寻址方式 对于“CALL”指令或其他涉及会修改PCL的指令,它们的指令码中仅包含目的地址的低8位,即PC<7:0〉,而PC<8〉总是会被硬件自动清零,状态寄存器第5位(STATUS<5>)也会被置入PC〈9>以选择程序页面(对于PIC12C509而言)。见下图:                       图1。8  CALL指令或修改PCL的指令寻址方式 从上图可看出,由于执行这些指令硬件总会清PC〈8〉=0,所以它们的起始地址都必须限于放在每个程序页面的上半区,即头上的256个字节空间内(0h~FFh或200h~2FFh)。 四、STATUS(地址:03h) ── 状态寄存器 STATUS寄存器包含了ALU的算术状态、芯片复位状态、程序页面位等信息.STATUS 可以被读/写,但是其中的复位状态位TO、PD不能由软件设置,它们的状态如何决定§1.12。7 会有详细描述. 图1。9  状态寄存器 在加法运算时,C是进位位;在减法运算时,C是借位的反。 例a:           CLRF         F10          ;F10=0           MOVLW       1             ;W=1           SUBWF        F10              ;F10—W=-1(FFH),C=0(运算结果为负) 例b:           MOVLW       1                ;W=1           MOVWF       F10              ;F10=1           CLRW                     ;W=0           SUBWF        F10             ;F10—W=1,C=1(运算结果为正) PD和TO两位可用来判断芯片复位的原因,GPWUF位也是用来判断芯片复位类型,请参阅§1。12。7描述。 五、FSR(地址:04h) ── 选择寄存器 FSR和INDF寄存器(地址:00h)配合完成间接寻址,请参阅前面有关INDF寄存器的描述.FSR寄存器宽度为5位,FSR〈4:0〉用来间接寻址32个寄存器,FSR<5> 则用来选择寄存器体(Bank),见下图: 图1。10  直接/间接寻址方式           a、PIC12C508: 不存在寄存器体选,FSR〈5〉恒为“1"。           b、PIC12C509: FSR〈5〉=1  Bank1,           FSR〈5>=0  Bank0. 六、OSCCAL(地址:05h) ── 内部振荡校正系数寄存器 PIC12C5XX内部集成有RC振荡供用户选择使用,OSCCAL<7:4> 包含了该振荡电路的校正系数,其上电初始值为“0111”,请参阅§1.11。4有关内部RC振荡的描述. 七、GPIO(地址:06h) ── I/O寄存器 PIC12C5XX有一个6位的I/O口,它在寄存器中的映像就是GPIO寄存器,GPIO<5:0〉对应于 I/O口线GP5:GP0,GPIO〈7:6〉未用,恒为“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为输入态           GP4:GP5为输出态 各种复位都会置TRIS为全“1”。 九、OPTION ── 参数定义寄存器 OPTION用来定义一些芯片工作参数,见下图所示: 图1.11  OPTION寄存器 OPTION也是不能由用户直接寻址的,必须由执行“OPTION”指令来把W寄存器中的内容置入OPTION寄存器,如下例:           MOVLW       7                ;W=“00000111”           OPTION                      ;W→OPTION 各种复位都会置OPTION为全“1”. 注意即使TRIS中相应的GP2方向位是“0”,如果将TOCS置为“1”,则GP2也会被强置为输入态,即为T0CKI输入线。 有关OPTION各位的定义,请参阅各自相应的章节。 十、W ── 工作寄存器 W寄存器用来存放指令中的第二个操作数,或用来进行内部数据传送,或存放运算结果,是最常用的寄存器. §1.6。2  通用寄存器           PIC12C508: 07h ─ 1Fh        ;Bank0           PIC12C509: 07h ─ 1Fh        ;Bank0           30h ─ 3Fh                ;Bank1 通用寄存器在上电后的值是随机的,所以它属RAM性质。 §1。7  I/O 口 PIC12C5XX只有一个I/O口,对应的映像寄存器为GPIO(地址:06h),其中GPIO〈 5:0〉 对应GP5:GP0,GPIO〈7:6〉未用,永为“0”.注意,GP3仅可作为输入,是单向I/O口线。另外,GP5、GP4、GP3及GP2还可以由用户定义成各种特殊功能口线,一旦它们被用作特殊用途,则永远读为“0”.GP0、GP1和GP3还带有可编程的弱上拉和“电平变化唤醒功能”(即唤醒正处于睡眠状态下的芯片),关于这点请参阅OPTION寄存器的描述。如果GP3被用户定义为复位输入端(MCLR),则它的弱上拉自动有效,但“电平变化唤醒”特性被自动关闭。 GPIO口线的方向由TRIS寄存器控制,详情参见§1.6.1中有关TRIS寄存器的描述. §1.7.1  I/O 口结构 一根I/O口线的结构如下图所示:                                 图1.12  I/O口结构 除了GP3只能单向作为输入口外,其余的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端为低电平0,则Q1导通,I/O输出为高电平.反之,当写入数据为“0”时,Q端为“1”,则Q2导通,I/O端输出为低电平.I/O读写时序如图1。13所示。 §1。7。2  I/O口使用注意事项 1、I/O方向转置的问题 某时候可能需要一个I/O口一会做输入,一会又做输出。这就是I/O方向的转置.在编写这种I/O转置程序时必须注意,有些指令如位设置指令(BSF、BCF)写I/O口时是先从I/O读入其状态,执行位操作后再将结果写回去覆盖原来的内容(输出的结果放在I/O口的数据锁存器)。 举个例子来说:“BSF   6,5” 这条指令的目的是要把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互补推挽输出电路.因此与其他这类电路一样,当某个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端上的写入电平有一个稳定的时间,否则读入的可能是前一个状态,而不是最新的状态值。一般推荐在两条连续的写,读I/O口指令间至少加一条NOP指令。 例:                      MOVWF       6                  ;写I/O           NOP                                 ;稳定I/O电平           MOVF        6,W         ;读I/O 4、噪声环境下的I/O操作 在噪声环境下(如静电火花),I/O控制寄存器可能因受干扰而变化。比如I/O口可能会从输入态自己变成输出态,对于这种情形,WDT也是无法检测出来的。因此如果你的应用环境是较恶劣的,建议你每隔一定的间隔,都重新定义一下I/O控制寄存器.最保险的方法当然是对I/O读写前都定义一下I/O控制寄存器(但是实践证明对于大多数的应用都不必做到这样,只是提请你注意噪声干扰)。 图1.13  I/O口连续读/写时序 §1.8  定时器/计数器TIMER0 TIMER0是一个8位的定时器/计数器,其对应的映像寄存器是TMR0(地址:01h),可由用户程序直接读写,并且可带有8位的预分频器。它用于对外加在GP2/T0CKI引脚上的外部信号进行计数(计数器)或对内部指令时钟进行计时(定时器),在PIC16C5X中它被称为RTCC。 TIMER0及其相关电路如图1.14所示.从图中可看出TIMER0工作状态由OPTION寄存器控制,其中OPTION寄存器的T0SC位用来选择TIMER0的计数信号源,当T0SC为“1”时,信号源为内部时钟,T0SC为“0”时,信号源为来自T0CKI引脚的外部信号。OPTION寄存器的PSA位控制预分频器(Prescaler)分配对象,当PSA位为“1”, 分配给TIMER0,即外部或内部信号经过预分频器分频后再输出给TIMER0。 预分频器的分频比率由OPTION内的PS0~PS2决定。这时涉及写TMR0寄存器的指令均同时将预分频器清零,OPTION 寄存器内容保持不变,即分配对象、分频比率等均不变。OPTION的T0SE 位用于选择外部计数脉冲触发沿。当T0SE为“1”时为下降沿触发,为“0"时则上升沿触发.                           图1.14  TIMER0 方块图 TIMER0计数器采用递增方式计数,当计数至FFH时,在下一个计数发生后,将自动复零,重新开始计数,从此一直循环下去。TIMER0对其输入脉冲信号的响应延迟时间为2个机器周期,不论输入脉冲是内部时钟、外部信号或是预分频器的输出.响应时序见图1。15。 TIMER0对外部信号的采样周期为2个振荡周期,因此当不用预分频器时,外加在T0CKI 引脚上的脉冲宽度不得小于2个振荡周期即1/2指令周期。同时,当使用预分频器时,预分频器的输出脉冲周期不得小于指令周期,因此预分频器最大输入频率可达N,fosc/4,N 为预分频器的分频比,但不得大于50MHz。 图1.15a.  TIMER0时序图:内部时钟/无预分频器 图1。15b。  TIMER0时序图:内部时钟/预分频比1:2 应注意的是尽管PIC对外部加于T0CKI信号端上的信号宽度没有很严格的要求,但是如果高电平或低电平的维持时间太短,也有可能使TIMER0检测不到这个信号。一般要求信号宽度要大于10ns. §1.9  预分频器 预分频器是一个分频倍数可编程的8位计数器。其结构如图1.14 所示上节对预分频参数已有描述,这里不再赘述. 预分预器的分配对象完全由程序控制,可以在程序中改变Prescaler分配对象。 1、从TIMER0到WDT的改变                                    MOVLW    B'XX0X0XXX’   ;选择内部时钟和新的预分频值           OPTION                          ;如果新的预分频值=’000’或者           CLRF          1                 ;=’001’,则暂时先选一个另外的值           MOVLW    B'XXXX1XXX’     ;清零TMR0和预分频器           OPTION                         ;选择WDT为对象,但不要改变预分频值           CLRWDT                             ;清WDT和预分频器           MOVLW      B'XXXX1XXX'     ;选择新的预分频器           OPTION 2、从WDT到TIMER0的改变           CLRWDT                         ;清WDT 及Prescaler           MOVLW    B’XXXX0XXX'     ;选择TIMER0           OPTION 图1.16  预分频器方块图 注意,预分频器只能分配给TIMER0或WDT其中之一使用,而不能同时分配给二者。 §1。10  看门狗WDT 看门狗计时器(Watch Dog Timer)是一个片内自振式的RC振荡计时器,无需任何的外接元件。这意味着即使芯片振荡停止了(例如执行指令SLEEP后),WDT照样保持计时。WDT计时溢出将产生RESET。在PIC12C5XX芯片内有一个特殊的谓之“系统定义字”(Configuration EPROM)的单元,其中的一个位是用于定义WDT的,可以将其置“0"来抑制WDT使之永远不起作用.这将在第六章的烧写器介绍部分详细说明。 1、WDT周期 WDT有一个基本的溢出周期18ms(无预设倍数),如果需要更长的WDT周期,可以把预分频器分配给WDT,最大分频比可达1:128,这时的WDT溢出周期约为2。5S。WDT溢出周期和环境温度、VDD等参数有关系,请参阅附录的图表. “CLRWDT"和“SLEEP”指令将清除WDT计时器以及预分频器(当预分频器分配给WDT时).WDT一般用来防止系统失控或者说防止单片机程序“失控”.在正常情况下,WDT应在计时溢出前被CLRWDT指令清零,以防止产生RESET。如果程序由于某种干扰而失控,那么不能在WDT溢出前执行一条CLRWDT指令,就会使WDT溢出而产生RESET,使系统重新启动运行而不至失去控制。若WDT溢出产生RESET,则状态寄存器F3的“TO”位会被清零,用户可藉此判断复位是否由WDT溢时所造成. 2、WDT编程注意事项 如果使用WDT,一定要仔细在程序中的某些地方放一条“CLRWDT”指令,以保证在WDT在溢出前能被清零,否则会造成芯片不停地产生RESET,使系统无法正常工作. 在噪声工作环境下,OPTION寄存器可能会因受干扰而改变,所以最好每隔一段时间就将其重新设置一下。 §1。11  振荡 PIC12C5XX可以运行在以下四种振荡方式下:         a、LP                    低功耗低速晶体振荡         b、XT            标准晶体/陶瓷振荡         c、INTRC        内部4MHz RC振荡         d、EXTRC        外部RC振荡 以上四种振荡方式可由“系统定义字”中的Fosc1:Fosc2 两位来选择,请读者参阅后面§1。12。9的详述。   §1.11。1  晶体/陶瓷振荡 这种振荡包括XT和LP,其电路连接是在GP5/OSC1/CLKIN和GP4/OSC2两端加一晶体/陶瓷振荡,如下图所示:                                 图1。17  晶体/陶瓷振荡电路 下表是使用各种频率的晶体和陶瓷振荡所需的C1、C2电容值. 振荡类型 频率 C1 C2   振荡类型 频率 C1 C2 XT 455KHz 68—100P 68-100P LP 32KHz 15P 15P   2MHz 15-33P 15—33P XT 100KHz 15—30P 200-300P 200KHz 15-30P 100-200P   4MHz 10—22P 10-22P   1MHz 15—30P 15-30P   2MHz 15P 15P   4MHz 15P 15P                a. 陶瓷振荡                               b。晶体振荡 表1.3  各种振荡下的C1和C2值 §1。11.2  外部RC振荡 这种振荡类型成本最低,但频率的精确性较差,适用于时间精确度要求不高的应用场合。RC振荡的频率是VDD、RC值以及环境温度的函数。请参阅附录的RC频率函数图.RC 振荡的连接如图1。18所示.                                图1。18  RC振荡电路 RC振荡是在OSC1端连接一个串联的电阻电容。这个电阻如果低于2。2K,振荡不稳定,甚至不能振荡,但是电阻高于1M时,则振荡又易受干扰。所以电阻值最好取5K~100K之间。尽管电容C为0时,电路也能振荡,但也易受干扰且不稳定,所以电容值应取20P以上.RC值和频率关系如表1。4所示。RC振荡时OSC2端输出一OSC1的4分频脉冲(f=1/4OSC1)。 Rest Cext VDD Fosc/25℃ 5kΩ 0PF 5。0 4.0MHz 5kΩ 20PF 6。0 2。2MHz 5kΩ 20PF 3。5 2。5MHz 10kΩ 130PF 5.0 480MHz 10kΩ 290PF 5.0 245MHz 100kΩ 300PF 3。5 30MHz 表1。4  RC与频率的关系 §1.11。3  外部振荡 PIC12C5XX也可以接受外部振荡源(仅适合于XT和LP类型振荡),连接时将外部振荡接入GP5/OSC1/CLKIN端,见下图:                              图1。19  外部振荡源输入电路 §1。11。4  内部RC振荡 PIC12C5XX内部提供有4MHz的RC振荡源供用户选择使用,选择振荡方式和振荡源的方法见§1.12。9详介。 在PIC12C5XX的程序区最顶端(12C508:1FFh,12C509:3FFh)放了一条MOVLW XX的指令, XX是内部RC振荡的校正系数。芯片上电后,PC指针指向程序区最顶端,执行完这条指令后PC 值加1变为000h。这时W寄存器中存放即是内部RC振荡的校正系数,用户可以把这个系数置入OSCCAL寄存器(05h)以便使其起校正作用,也可以忽略不管它.      例:                           0                   ;定义存储区地址0           MOVWF      OSCCAL             ;把W中的校正系数置入OSCCAL。 §1。12  复 位(RESET) PIC12C5XX有各种各样原因造成的芯片复位:          1、芯片上电          2.、MCLR端加低电平          3、看门狗WDT超时溢出          4、睡眠中某些I/O口线电平发生变化 当芯片处于复位状态时,所有I/O口线都处于输入状态(高阻态),看门狗WDT和预分频器都被清零。 图1。20  片内复位电路(暂缺) §1。12。1  复位定时器(DRT) 复位定时器DRT(在PIC16C5X 中我们称其为OST)是为了使芯片的复位可靠安全而设计。在PIC12C5XX中,对于XT和LP振荡方式,上电后它们还需要一定的时间来建立稳定的振荡。有鉴于此,PIC12C5XX内部设计了一个复位定时器DRT。DRT在MCLR端到达高电平(VIHMC)后,即启动计时18ms,这样可以使芯片保持在复位状态约18ms以便让振荡电路起振
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服