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

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

[复制链接]
3253|10
手机看帖
扫描二维码
随时随地手机跟帖
yongruru|  楼主 | 2019-6-28 16:42 | 显示全部楼层 |阅读模式
本帖最后由 yongruru 于 2019-6-28 16:52 编辑

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



添加EXT_INT外设
INT.jpg

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

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

RC2设置上拉
上拉.jpg

开启中断
开启中断.jpg

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

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

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

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

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

使能ICOIE
IOC中断.jpg

生成代码,运行,同样实现了按下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
每个月的板卡都挺好。

你也快来参加呀

使用特权

评论回复
decoding| | 2019-7-2 09:30 | 显示全部楼层
感谢分享!学习下

使用特权

评论回复
decoding| | 2019-7-2 09:31 | 显示全部楼层
感谢分享!学习下

使用特权

评论回复
G28197| | 2019-7-2 10:32 | 显示全部楼层
支持支持

使用特权

评论回复
小卡| | 2019-7-5 11:08 | 显示全部楼层
受教了~  

使用特权

评论回复
yongruru|  楼主 | 2019-7-5 13:19 | 显示全部楼层

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

使用特权

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

使用特权

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

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

使用特权

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

本版积分规则

10

主题

71

帖子

4

粉丝