微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC单片机的学习心得

PIC单片机的学习心得

时间:01-11 来源:互联网 点击:

上电复位和欠压复位标志。具体的可以参看手册。

  (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、或、异或、与、非等指令,而不要整个的将其赋值,以免弄错了使其他模块受到干扰。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top