1.前语
为了给前一段时刻学习PIC16F616型单片机的一个总结和便利咱们的沟通,我写了这篇关于PIC单片机的学习心得,都是在看了手册和编程调试后用自己的言语安排的,其间有缺乏或许有疑问的当地期望咱们能及时的给予纠正和批判,提出名贵的定见.
2.PIC单片机的概述
PIC16F616是一款14引脚、8位的CMOS单片机.选用精简指令集,仅有35条指令,由于选用了数据总线和指令总线别离的哈佛总线结构,使得除少数指令不是单周期之外,大部分的指令都是单周期指令.这样有利于进步单片机的运转速度和履行功率.
PIC16F616这款单片机供电电压能够在2V到5.5V之间,内部集成了一个RC振荡器,频率能够装备成8MHZ或许4MHZ,也能够用外部晶振供给时钟.内部集成有AD转化、比较器等硬件模块,还具有上电复位、欠压复位、看门狗、代码维护等功用.三个守时器、PWM产生器等能够由用户编程.下面我来逐个介绍关于PIC单片机的这些模块和功用.
3.存储器
PIC16F616分为程序存储其和数据存储器,程序存储器的巨细是2048words,数据存储器的巨细是128bytes.
程序存储器中0000H的地址为复位地址,当上电或许看门狗计时器等复位的时分,均会导致PC指针指向复位地址.地址0004H为中止地址,当不管产生什么中止的时分,PC指针就会指向此地址.在地址0005H~07FFH能够移植程序.
数据存储器分为两个部分,别离叫做bank0和bank1,其间bank0的地址规模为:00H-7FH,Bank1的地址规模为80H-FFH.一般的寄存器都放在里边.能够经过寄存器STATUSL里边的RP0位来挑选bank0和bank1.
在编程序的时分要留意的是,当你要操作的寄存器在bank0的时分,先要挑选bank0(将寄存器STATUS的RP0方位0),然后再对你所要操作的寄存器进行操作,当你要操作的寄存器在bank1的时分,同理先要挑选bank1.
假如想要界说一些变量,能够在数据存储器20H开端的地址界说,界说的地址规模为20H-7FH.一般这么多就够用了.
4.PIC的输入输出端口
在学习这个部分的时分,从前遇到过一些问题.PIC单片机的引脚不多,大多都是复用引脚,例如AD、IO、比较器、外接晶振等等,所以在装备端口的时分,必定要知道每个功用怎样设置才干完成的,在这一末节中,我要讲的是通用IO口的设置问题.
PIC16F616有12个IO口,可是有一个引脚(RA3)只能作为输入引脚用,不能用作输出,别的,A口具有电平改变中止的功用,而C口没有,在规划的时分要留意.
在设置的时分,一般要进行以下几项设置:
(1)设置端口是模仿端口仍是数字端口,能够经过寄存器ANSEL来设置.例如你想用AD,就要将相应的引脚设置为模仿输入端口.
(2)假如你挑选的是数字端口,接下来就要设置端口的方向,是输入仍是输出(RA3在外),可经过寄存器TRISA(A口)或TRISC(C口)来设置.
(3)设置端口的输出电平,能够经过寄存器PORTA(A口)或PORTC(C口)来设置.
这是对IO口的通用设置,可是这不是悉数的设置,接下来的设置要看时A口仍是C口了.关于A口,它有几个特别的功用:内部弱上拉、电平改变中止、RA2/INT引脚的沿中止.假如想要这些功用,就要对相应的寄存器进行设置.
弱上拉的设置:只要当引脚为输出的时分弱上拉才有用,能够经过寄存器WPUA来设置相应引脚的弱上拉,值得一提的假如敞开了弱上拉,会有剩余的电流糟蹋,这样关于低功耗的规划是不可取的,可是假如在进行一些例如键盘电路规划的候,能够敞开弱上拉功用,这样就不需求在键盘电路中加上拉电阻了.
电平改变中止的设置:能够经过寄存器IOCA来设置,可是首要要将相应引脚设置为数字端口且为输入状况.一起要将寄存器INTCON的REIE位设置为1,总中止要答应(置寄存器INTCON的GIE位),假如设置相应引脚有这个功用,当此引脚电平产生的时分,就会产生一个中止,一起一些中止标志位被置 上(INTCON的RAIF位被置1),且总中止GIE被置为0.在中止服务程序中,要软件铲除RAIF位和从头置GIE位才干持续敞开此中止.
RA2/INT脚的沿中止设置:相同首要要将相应引脚设置为数字端口且为输入状况,设置INTCON的INTF位为1,表明答应int引脚外部中止,寄存器OPTION_REG的INTEGD位能够设置是上升沿中止仍是下降沿中止.当产生中止时,INTCON的INTF位被置为1,GIE被清零,在中止服务 程序中,要软件铲除INTF位和从头置GIE位才干持续敞开此中止.
关于C口,不能产生电平改变中止和沿中止.
5.守时器
守时器是单片机的一个很重要的部分,用它能够产生许多不同的守时时刻,来满意程序规划的不同需求.PIC16F616有三个守时器,别离是Timer0、Timer1、Timer2.它们的用法不是很相同,下面来别离谈谈这三个守时器的用法和设置问题.
(1)Timer0
Timer0是一个八位的计数器,它有一个八位的计数寄存器TMR0,八位的预分频器(与看门狗共用),能够挑选内部或许是外部时钟源,有计数器溢出中止的功用.
Timer0能够作为一个守时器或许计数器来运用,与Timer0有关的寄存器有:TMR0,INTCON,OPTION_REG,TRISA.
当Timer0作为守时器来运用的时分,要设置OPTION_REG的T0CS位为0,表明用的是内部时钟,每一个指令周期TMR0的值会添加(当没有预 分频的时分),当TMR0被赋值的时分,会有两个指令周期的延时.预分频器能够和看门狗共用,能够由OPTION_REG的PSA位来设置,当PSA为0的时分分频器挑选Timer0,当PSA为1的时分分频器挑选看门狗.一起,与分频器的分频值能够经过寄存器OPTION_REG来设置,设置的值可 以由1:2到1:256.当Timer0的计数器TMR0计数从FFH到00H的时分会产生溢出,一起溢出标志位(INTCON寄存器的T0IF位)会置 位(不管Timer0的中止是否敞开),假如中止现已敞开了(INTCON寄存器的T0IE被置位),那么就会产生溢出中止.T0IF位需求软件对其进行 清零.
当Timer0作为计数器来运用的时分,就要用外部时钟源(OPTION_REG的T0CS置1),每次当引脚T0CK1的沿到来 时Timer0的TMR0会添加1,上升沿和下降沿能够由OPTION_REG的T0SE来设置.中止和Timer0作为守时器运用时相同.在咱们编程序的时分,能够用Timer0进行守时或产生守时信息,下面我来解说守时器的守时时刻的核算.假定Timer0用的时钟源是内部的4MHZ,那么每条指令的履行时刻便是1us,设Timer0的预分频系数是1:256,TMR0的初值是6,那么守时时刻为:
256×(256-6)×1us=64ms
在编程的时分需求留意的是Timer0的中止是不能把单片机从SLEEP的状况唤醒的.
(2)Timer1
Timer1是一个十六位的计数器.它有一个计数寄存器对(TMR1H:TMR1L),时钟源也是表里可选的,具有一个2bit的预分频器,能够同步或许异步操作,具有中止功用,可是溢出中止只能在外部时钟、异步的形式才干将单片机从SLEEP中唤醒,Timer1具有捕获/比较功用,还有被一些特别作业触发功用(ECCP),比较器的输出能够与Timer1的时钟同步.下面来逐个介绍这些功用.
在编程的 时分也能够依照这样的过程来进行.设置寄存器T1CON,时钟源能够挑选外部或许内部的时钟源,外部时钟源能够挑选LP晶体.Timer1在挑选内部时钟 时,能够运转在守时器的状况,挑选外部时钟的时分,能够运转在守时器或许是计数器状况,作业于计数器状况时能够挑选门限是高电平仍是低电平计数.这些都可 以经过寄存器T1CON来设置.
以下是T1CON每个位的详细功用:bit1:Timer1是否敞开位,当此位设为1时,Timer1敞开,设为0时,Timer1封闭;bit2:时钟 源挑选位,置1时,挑选外部时钟(T1CK1引脚的上升沿),此方位0时,挑选的是内部时钟,而且和T1ACS(寄存器CM2CON1中)合作,当T1ACS位为0时,时钟为FOSC/4,当T1ACS位为1时,时钟为FOSC.bit2:T1SYNC:守时器1的外部时钟输入同步位,当TMR1CS位为1、T1SYNC位为1,守时器1被设置成与外部时钟不同步,T1SYNC位为0时,守时器1被设置成与外部时钟同步形式.Bit3: T1OSCEN:此位为1时Timer1的时钟挑选LP,为0时LP晶体被封闭.Bit5-4:T1CKPS:Timer1时钟的预分频系数设置,经过这 两位的是指,能够讲Timer1设置成1:1、1:2、1:4、1:8几种分频值.Bit6:TMR1GE:只要当TMR1ON位为1时才有用,当此位为1时,Timer1计数被Timer1的门限操控,此位为0时,Timer1正常计数.Bit7:T1GINV:此位为1时,Timer1在门限为高时计 数,此位为0时,Timer1在门限为低时计数.
Timer1的中止编程:当Timer1的计数产生溢出的时分,假如Timer1中止答应的话,就会产生中止.中止能够这样设置,Timer1的中止答应位TMR1IE(在PIE1寄存器中)置1,寄存器INTCON的PEIE方位1,一起总中止位GIE(坐落寄存器INTCON中)要置为1.当守时器产生中止的时分,会把 中止标志T1IF置为1(坐落寄存器PIR1中),然后PC指针指向0004H地址.T1IF位有必要软件铲除.
(3)Timer2
Timer2的功用于Timer1有些不同,Timer2时一个八位的计数器,有一个八位的计数寄存器TMR2,Timer2具有以下功用:有两个分频器,一个是前分 频器,一个是后分频器.分频能够软件进行设置,别的,Timer2的时钟源是指令时刻(FOSC/4),Timer2有一个寄存器PR2,此寄存器的功用是当TMR2添加到PR2的值时,将产生中止,当然,中止有必要答应,然后PR2的值会从头变为00H.下面来介绍Timer2的编程:
Timer2的操控寄存器T2CON作用是设置Timer2的敞开封闭和前后分频的分频系数,寄存器T2CON的TOUTPS<3:0>位设置后分频系数,能够被设置成1:1~1:16;位TMR2ON为1时,Timer2敞开,为0时,Timer2封闭;位T2CKPS<1: 0>能够设置前分频系数,能够被设置成1、4、16.
Timer2的中止能够这样操控,答应Timer2中止位TMR2IE(坐落PIE1寄存器内)被置1时,Timer2中止被答应,被置0时, Timer2中止制止.寄存器INTCON的PEIE方位1,一起总中止位GIE(坐落寄存器INTCON中)置为1.经过上面的设置,Timer2就可 以产生中止了.当守时器产生中止的时分,会把中止标志T2IF置为1(坐落寄存器PIR1中),然后PC指针指向0004H地址.中止标志位T2IF有必要 软件铲除.
下面是三个守时器的比较:
唤醒功用
其他功用
守时器Timer0
内部或外部时钟源,有一个预分频器.
守时器、
醒功用.
计数器值溢出时产生中止
预分频器与看门狗共用.
守时器Timer1
内部或外部时钟源,有一个预分频器
守时器、计数器
外部时钟、异步形式时可唤醒CPU
计数器值溢出时产生中止
与比较器模块、
捕获/比较模块共用
守时器Timer2
有前分频器和后分频器
醒功用.
计数器值与预置值持平时产生中止
PWM的产生需求此守时器
6.AD模块
PIC16F616有一个十位、八路的AD转化器.其参阅电压能够为电源电压VDD,也能够是外部参阅电压(VREF引脚),当AD转化完成后能够产生一个中止,此中止能够把单片机从睡觉状况中唤醒.下面来介绍一下关于AD转化的编程办法.
要运用一个ADC,要做的有一下几件作业:
(1)设置端口,需求采样模仿信号的端口有必要设置为模仿输入状况,假如设置为数字端口,将使转化成果不正确,端口的模仿输入能够由寄存器ANSEL来装备,在讲RA口的时分现已提到了怎么装备了.
(2)通道的挑选,有八路外部通道和三路内部通道,能够经过ADCON0寄存器的CHS<3:0>位来设置通道的挑选.
(3)参阅电压的挑选,参阅电压能够是VDD,也能够是外部参阅电压,能够经过ADCON0寄存器的VCFG位来设置,当VCFG=0时,参阅电压为VDD,当VCFG=1时,参阅电压为外部参阅电压(来自VREF引脚)
(4)ADC的转化格局,AD转化后的成果保存在一个寄存器对里边:ADRESH和ADRESL,可是AD转化成果只要十位,设置AD转化格局能够经过设 置ADCON0的ADFM位来挑选,当ADFM=1时10位的AD成果的低八位保存在ADRESL内,高两位保存在ADRESH内;当ADFM=0时10位 的AD成果的高八位保存在ADRESH内,低两位保存在ADRESL内.
(5)AD时钟源的挑选,寄存器ADCON1专门来设置AD的时 钟源,ADCS<2:0>不同组合,能够将AD的时钟源设置为不同的频率,能够为FOSC/2、FOSC/4、FOSC/8、FOSC/16、FOSC/32、FOSC/64和FRC(内部RC).
(6)AD中止的装备,要运用AD的中止功用,能够先把AD中止使能,ADIE位设置为1(在寄存器PIE1中),PEIE方位1(在INTCON寄存器中),总中止GIE方位1(INTCON寄存器中).
要开端一个AD转化,首要要使能ADC模块,即把寄存器ADCON0的ADON方位1即可,然后将GO/DONE位(ADCON0中)置1就能够发动AD转化了.
AD转化需求时刻,转化1bit需求Tad的时刻,Tad与AD转化的时钟源和VDD有关,转化十位就需求11个Tad时刻,假如第一个AD转化完成了,要进 行第二个AD转化,有必要还要等候2*Tad的时刻才干开端.一个AD完成了,GO/DONE位会被置为0,假如中止答应的话,就会产生中止,且中止标志位ADIF(寄存器PIR1内)会被置1,在AD中止程序中就能够把AD转化成果读取出来(读ADRESH和ADRESL),需求时把AD中止标志位清零.
AD中止能够把单片机从睡觉中唤醒,可是要留意,运用这个功用的时分,时钟源有必要设置为FRC,不然的话在睡觉的时分就不会产生AD中止了.
7.看门狗
PIC16F616的看门狗WDT其守时计数的脉冲序列由片内独立的RC振荡器产生,所以它不需求外接任何器材就能够作业.而且这个片内RC振荡器与引脚OSC1/CLKIN上的振荡电路无 关,即便OSC1和OSC2上的时钟不作业,WDT照样能够监督守时.例如:当PIC16F616在履行SLEEP指令后,芯片进入休眠状况,CPU不作业,主振荡器也停止作业,可是,WDT照样可监督守时.当WDT超时溢出后,可唤醒芯片持续正常的操作.而在正常操作期间,WDT超时溢出将产生一个复位信号.假如不需求这种监督守时功用,在编程时,可封闭这个功用.
WDT的守时周期在不加分频器的情况下,其根本守时时刻是18ms,这个守时时刻还受温度、VDD和不同元器材的工艺参数等的影响.假如需求更长的守时周期,还 能够经过软件操控OPTION寄存器(PSA方位1)把预分频器装备给WDT,这个预分频器的最大分频比可到达1∶128.这样就可把守时周期扩展128倍,即到达2.3秒.
WDT的预分频器是和Timer0所共用的,假如把预分频器装备给WDT,用CLRWDT和SLEEP指令能够一起对WDT和预分频 器清零,然后防止计时溢出引起芯片复位.所以在正常情况下,有必要在每次计时溢出之前履行一条CLRWDT指令喂一次狗,以防止引起芯片复位.当体系遭到严 重搅扰处于失控状况时,就不可能在每次计时溢出之前履行一条CLRWDT指令,WDT就产生计时溢出,然后引起芯片复位,从失控状况又从头进入正常运转状 态.
当WDT计时溢出时,还会一起铲除状况寄存器中的D4位T0,检测T0位即可知道复位是否由于WDT计时溢出引起的.
8.比较器
PIC16F616有两个比较器:C1和C2,C1的结构比C2的结构要简略,下面我别离对这两个比较器的用法和特性作扼要阐明.
(4)比较器C1:它有一个独立的操控寄存器CM1CON0,经过这个寄存器能够对比较器C1进行一些设置.位C1ON能够操控C1的敞开封闭,位C1OE能够决议比较器的输出是从引脚输出仍是内部输出,位C1POL能够挑选比较器输出的极性,位C1R挑选参阅电压是链接到引脚C1IN+仍是连接到C1VREF,C1CH能够挑选比较器负端从哪一个引脚输入的,位C1OUT存放了比较器的输出成果.
(5)比较器C2:它的操控寄存器CM2CON0的操作跟C1相同,可是比较器C2比比较其C1功用要强,由于它与Timer1挂上钩了,C2能够连接到Timer1,而C1不能.当C2与Timer1相连接的时分,C2的输出能够设置成与Timer1的下降沿确定,假如Timer1有分频,则比较器的输 出与分频后的Timer1下降沿确定,能够经过相关寄存器来进行设置.
(6)两个比较还有其它的功用,都能组成滞回比较器,这样就能够对输入电压有必定的滤波功用.两个比较器还能够构成一个SR锁存器.
由于在本项目中没有挑选用比较器这个功用,所以在这儿就不详细叙说其细节设置,但要留意的是在不必此模块的时分,要能够确保此模块不能影响其他模块的正常作业,能够把比较器功用封闭(经过寄存器CM1CON0、CM2CON0的CxON方位0来封闭).
9.捕获/比较/PWM功用
PIC16F616具有捕获/比较/PWM的模块,下面来简略的介绍一下它们的功用.
这三个功用需求守时器的支撑,捕获和比较功用需求守时器Timer1的支撑,PWM功用需求守时器Timer2的支撑.都有中止的功用,挑选这三种功用的 某一种功用能够经过寄存器CCP1CON来设置.CCP1CON的低四位CCP1M<3:0>能够经过不同的组合来敞开某项功用和封闭一切功 能,当CCP1M<3:0>=0000的时分,捕获/比较/PWM模块的一切功用被制止.详细其他的不同组合完成的功用,请参阅PIC16F616的用户手册.
当挑选捕获功用时,它能够捕获引脚CCP1产生的作业,一起把16位Timer1的计数值拷贝到CCPR1H:CCPR1L中来,引脚CCP1的产生作业能够指的是下列作业:CCP1引脚的每个上升沿或许下降沿、第四个上升沿、第十六个上升沿.能够 经过寄存器CCP1CON的低四位CCP1M< 3:0>来设置是哪一种作业.当作业产生的时分,单片时机置中止标志位CCP1IF(寄存器PIR1上),假如中止被答应(寄存器PEIE的位CCP1IE=1)的话,就会产生中止,中止标志位CCP1IF需求软件清零.
挑选比较功用时,假如守时器Timer1的计数器值与寄存器CCPR1H:CCPR1L持平的话,将产生下面的作业:把引脚CCP1置1/0、产生一个中 断、触发一个作业(把守时器Timer1的技能器TMR1清零,而且假如此刻AD是答应的话,它将触发一次AD转化),这些作业能够经过寄存器CCP1CON的低四位CCP1M<3:0>来设置是哪一种作业.
当挑选PWM功用时,经过设置PR2、T2CON、CCPR1L、CCP1CON这四个寄存器,模块能够产生不同占空比的PWM波形.详细的设置和占空比的核算请参阅手册.
假如咱们不需求这些功用,能够把这个模块封闭掉(设置CCP1M<3:0>=0000即可).
10.复位、中止和睡觉
(1)复位
PIC16F616包含这样的几个复位功用,上电复位(Power-on)、硬件复位、欠压复位(Brown-out)、看门狗复位.
关于上电复位POR,咱们都不生疏,单片机在上电的时分坚持复位直到电压能够满意其正常的作业电压,一起你能够经过对CONNFIG(编译器上即可设置)的设置,来敞开Power-up Time,这个时刻一般为64ms.
硬件复位能够经过MCLR引脚外界复位电路,即可完成硬件复位(将此引脚接低电平).
欠压复位这个功用是可选的,也能够直接在编译环境中装备CONFIG寄存器来敞开此功用.当此功用敞开时,假如单片机在运转的时分,供电电压缺乏就会引起欠压复位,复位后单片机假如发现供电电压现已到达正常值的时分,会有一个64ms的延时,然后再运转程序.
关于看门狗的复位在看门狗部分现已说了.这儿的一些复位还涉及到一些标志位.这些标志位散布在STATUS和PCON上面.STATUS上有两个位TO、PD,当标志位TO=1时,表明表明现已操作了上电复位或许是履行了CLRWDT或许SLEEP指令,当TO=0时,表明产生了看门狗复位.当标志 位PD=1时表明操作了上电复位或许是履行了CLRWDT指令,当PD=0时,表明履行了SLEEP指令.PCON上有两个标志位是POR和BOR,别离 表明的是上电复位和欠压复位标志.详细的能够参看手册.
(2)中止
PIC16F616包含这样的几个中止源:RA2/INT引脚外部中止、RA端口电平改变中止、守时器Timer0、Timer1、Timer2溢出中止、比较器中止、AD转化中止、捕获/比较/PWM中止.
这些中止的答应位和中止标志位别离坐落INTCON、PIE1、PIR1、IOCA这些寄存器里边,假如要敞开相应的中止,就要置相应的中止答应位,敞开 总中止位(INTCON寄存器的GIE位),还要敞开INTCON上的PEIE位(守时器0溢出中止、INT引脚沿中止和RA端口的电平改变中止在外).
当中止产生的时分,相应的中止标志位就会置起来,一起总中止标志位GIE会被清零,确保在此刻刻内不会相应其他的中止,然后将当时的PC指针值压栈保存,以用来确保中止能正确的返回到本来履行的当地.然后PC指针指向中止向量地址0004H的当地,所以在编程序的时分,你能够在0004H的地址存一条跳转指令跳到你界说的中止服务程序里边去就能够了.假如在中止的时分想保存一些重要的寄存器的话,能够在中止程序的开始将其保存,然后在中止服务程序的结尾将其康复即可.
要留意的是中止标志位不会自己清零,这就需求在编程的时分在软件上对其清零,不然的话,单片机不断的履行中止服务程序.假如你想要在今后的程序中还能产生中止的话,就要把总中止答应位GIE从头置位.
(3)睡觉
要想让单片机睡觉的办法很简略,履行一条SLEEP指令就能够了,假如看门狗答应的话,WDT就会被清零,可是还坚持运转,寄存器STATUS的PD位将会置0,TO位将会置1,IO口还坚持本来的状况,在睡觉状况下,不能驱动振荡器了.
有些作业能够将单片机从睡觉状况中唤醒:看门狗、RA口电平改变中止、外部复位引脚MCLK被拉低、RA2/int引脚沿中止、Timer1中止(有必要作业在异步计数模式)、ECCP捕获形式中止、AD转化中止(时钟源有必要为内部RC的时分)、比较器输出有改变,这些作业能够将单片机唤醒,其他的作业不能.
假如某项能唤醒单片机的中止现已开了,当总中止答应位GIE为1的时分,单片机被唤醒后能够进入中止程序中去,而当GIE位为0的时分,单片机也能够被唤醒,可是是履行下面的句子,而不能进入中止程序中去.
为了确保在履行SLEEP句子后看门狗能够清零,最好在SLEEP句子之前加一句清看门狗的句子CLRWDT.
11. PIC单片机的一些电特性
VSS引脚的最大输出电流和VDD最大的输入电流为:90mA;
每个IO口的输出电流可达25mA,IO口一共输出电流可达90mA;
每个IO口是由两个维护二极管上下钳位的.当电压超越VDD和VSS的时分,二极管最大能接受20mA的电流;
IO口输入漏电流最大为±1uA,引脚MCLR和OSC漏电流最大为±5uA;
PORTA内部弱上拉(若设置了此功用)电流最大为400uA;
IO口输出低电平为0.6V,输出高电压为VDD-0.7V;
12.编程留意事项及技巧
在编程调试后和依据网上的一些材料和经历,我留意到了一些在编程的事项和技巧,经过这些设置,能够使体系愈加安稳的作业,现在总结如下:
(1)
在设置端口的时分,先将端口输出你想要预置的值,避免产生出示状况的不安稳,影响体系正常作业.虽然在当时还没有界说端口是输出仍是输入状况,这样做总是好的.
(2)
在敞开某个中止功用的时分,最好将其间止标志位清一次零.
(3)
在规划低 功耗的时分,其间有些功用是比较耗电的,假如不必的话,必定要将其关掉.例如将IO口设置成输入并将其悬空,就会很耗电流;RA口设置弱上拉的时分假如引 脚接地,电流会很大;欠压复位也是一个耗电大户.而看门狗敞开时用的时钟源为内部的RC,不怎么耗电;AD转化耗电也不多.
(4)
单片机里边的功用许多,在有些功用不需求的时分,必定要将其封闭(能够放在初始化程序之中),这样一来有利于程序的安稳性;二来能够省电,由于敞开某个功用总是要电来驱动的.
(5)
假如一个寄存器被多种功用所共用,主张只对相应位进行操作,例如用BCF、BSF、或、异或、与、非等指令,而不要整个的将其赋值,避免弄错了使其他模块遭到搅扰.