PIC单片机的学习心得
上电复位和欠压复位标志。具体的可以参看手册。
(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。
相关型号资料:AT25020N-10SC2。7 MUX08FP IRFI9520G TS83C51RB2-MC
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;
编程注意事项及技巧
在编程调试后和根据网上的一些资料和经验,我注意到了一些在编程的事项和技巧,通过这些设置,可以使系统更加稳定的工作,现在总结如下:
(1)在设置端口的时候,先将端口输出你想要预置的值,以免发生出示状态的不稳定,影响系统正常工作。虽然在当前还没有定义端口是输出还是输入状态,这样做总是好的。
(2)在开启某个中断功能的时候,最好将其中断标志位清一次零。
(3)在设计低功耗的时候,其中有些功能是比较耗电的,如果不用的话,一定要将其关掉。例如将IO口设置成输入并将其悬空,就会很耗电流;RA口设置弱上拉的时候如果引脚接地,电流会很大;欠压复位也是一个耗电大户。而看门狗开启时用的时钟源为内部的RC,不怎么耗电;AD转换耗电也不多。
(4)单片机里面的功能很多,在有些功能不需要的时候,一定要将其关闭(可以放在初始化程序之中),这样一来有利于程序的稳定性;二来可以省电,因为开启某个功能总是要电来驱动的。
(5)如果一个寄存器被多种功能所共用,建议只对相应位进行操作,例如用BCF、BSF、或、异或、与、非等指令,而不要整个的将其赋值,以免弄错了使其他模块受到干扰。
- 基于PIC单片机的智能型漏电断路器设计(11-25)
- 基于PIC单片机的无线实时监控防盗系统的设计与实现(11-18)
- PIC单片机键盘矩阵扫描C语言程序(12-02)
- PIC单片机控制第一个发光管闪动程序(12-02)
- PIC单片机驱动LCD12864液晶显示闪动字体程序(12-02)
- PIC单片机控制8位流水灯C语言程序(12-02)