打印
[PIC®/AVR®/dsPIC®产品]

【4月板卡】PIC16F184x6学习笔记-按键中断

[复制链接]
3773|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yongruru 于 2019-6-28 16:52 编辑

PIC16F184x6只有一个中断入口,不像AVR有几十个中断向量,所以中断也没有优先级和中断嵌套。当处于中断状态,来了新的中断,新的中断只能等待。当来了多个新的中断,按中断触发的先后依次执行。
PIC16F184x6也只有一个外部中断,它可以映射到任意IO口上。
个人感觉PIC16F184x6的中断和外部中断设计的比较简单,并没有做的很丰富灵活。
下面做一个实例,开机进入休眠,按下SW0按键唤醒。
时钟HFINT0SC 16m。关看门狗,关BOR。




添加EXT_INT外设


触发方式,只有上升沿或者下降沿,没有电平触发。


将外部中断匹配到RC2引脚,也就是板子上的按键


RC2设置上拉


开启中断


生成代码,添加程序
void main(void)
{
    SYSTEM_Initialize();

    VREGPM=1;       //关LDO
    SLEEP();        //进入睡眠
    while (1)
    {
        NOP();
    }
}

运行程序,开机进入休眠,电流显示为0,小于1ua。按下按键唤醒MCU,电流为1.8ma



因为只有一个外部中断,可能是作为补充,PIC还有IOC,可以独立的设置某个引脚或某几个引脚,当产生上升沿或下降沿变化时产生中断。同样可以从睡眠中唤醒。
MCC中删除外部中断,设置RC2为输入

设置上拉和IOC为上升沿和下降沿

使能ICOIE

生成代码,运行,同样实现了按下SW2按键唤醒。

个人理解,EXT-INT和ICO在这款芯片上共存没有太大意义,基本上ICO都能实现了。可能EXT-INT稍简单点。大家觉得呢?欢迎交流。




使用特权

评论回复
沙发
yongruru|  楼主 | 2019-6-28 16:45 | 只看该作者
PIC16F184x6学习笔记-按键中断.pdf (623.77 KB)

使用特权

评论回复
板凳
小灵通2018| | 2019-6-28 20:00 | 只看该作者
每个月的板卡都挺好。

使用特权

评论回复
地板
yongruru|  楼主 | 2019-7-2 08:53 | 只看该作者
小灵通2018 发表于 2019-6-28 20:00
每个月的板卡都挺好。

你也快来参加呀

使用特权

评论回复
5
decoding| | 2019-7-2 09:30 | 只看该作者
感谢分享!学习下

使用特权

评论回复
6
decoding| | 2019-7-2 09:31 | 只看该作者
感谢分享!学习下

使用特权

评论回复
7
G28197| | 2019-7-2 10:32 | 只看该作者
支持支持

使用特权

评论回复
8
小卡| | 2019-7-5 11:08 | 只看该作者
受教了~  

使用特权

评论回复
9
yongruru|  楼主 | 2019-7-5 13:19 | 只看该作者

小卡,还有一篇“定时器中断”,也帮我放到汇总里吧,谢谢

使用特权

评论回复
10
lcczg| | 2019-7-5 14:35 | 只看该作者
IOC和INT中断基本功能差不多。区别在于INT只有一个中断源,只能配上升或下降;IOC是多个源共享一个中断,可以上升,下降或同时。

使用特权

评论回复
11
yongruru|  楼主 | 2019-7-5 15:02 | 只看该作者
lcczg 发表于 2019-7-5 14:35
IOC和INT中断基本功能差不多。区别在于INT只有一个中断源,只能配上升或下降;IOC是多个源共享一个中断,可 ...

对的,IOC可以是一个或多个源

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

72

帖子

4

粉丝