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

PIC18F16Q41通过MCC配置IO中断控制LED翻转

[复制链接]
10041|8
手机看帖
扫描二维码
随时随地手机跟帖
gaoyang9992006|  楼主 | 2021-9-16 23:22 | 显示全部楼层 |阅读模式
本帖最后由 pzsh 于 2021-9-25 08:55 编辑

一、打开MPLAB X IDE,新建工程,选择你用的型号,这里我选择的是PIC18F16Q41
5358761435e6038bb8.png
创建好基本的工程文件后,启用MCC,图形化的配置如下,启用我们的LED管脚和按键SW管脚,并给他们起个好记的名字LED,SW
名词解释:interrupt-on-change (IOC),电平改变中断。
给按键的IOC设置为负极触发(低电平触发),并启用弱上拉(WPU:Weak Pull-Up )这样默认为弱上拉是正极高电平,当按下后触发了IO的变化,且低电平,
9296661435fa5e3b62.png
之后点Generate生成工程代码

二、完善主函数代码
#include "mcc_generated_files/mcc.h"

void led(void)
{
    LED_Toggle();
}
void main(void)
{
    // Initialize the device
    SYSTEM_Initialize();
    IOCCF0_SetInterruptHandler(led);
    // Enable the Global Interrupts
    INTERRUPT_GlobalInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    while (1)
    {
    }
}
其实无非就是启用全局中断,然后通过设置中断处理函数,让中断回调函数去执行我们的led翻转函数。
IOCCF0_SetInterruptHandler(led);

注意,如果烧录后,没反应,系统没立即执行新的程序,这个时候拔了开发板,重新复位上电,即可执行,之前我还以为是有什么问题,原来是因为开发板没有复位按键,系统没能正常复位。

使用特权

评论回复
gaoyang9992006|  楼主 | 2021-9-16 23:42 | 显示全部楼层
本帖最后由 gaoyang9992006 于 2021-9-16 23:49 编辑

接下来我们采用另外一种专用的外部中断:EXT_INT
设置按键的管脚为上升沿中断,实现,松手后触发中断函数

131261436516dddf3.png 489146143678f10c30.png
#include "mcc_generated_files/mcc.h"

void led(void)
{
    LED_Toggle();
}
void main(void)
{
    // Initialize the device
    SYSTEM_Initialize();


    // Enable the Global Interrupts
   INTERRUPT_GlobalInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();
    INT0_SetInterruptHandler(led);
    while (1)
    {
        // Add your application code
    }
}
这跟传统51单片机上的外部中断是很相似的一种中断方式。针对单个PIN的外部中断处理方式,这种一般用于重要的外部中断事件使用中。
编译后下载,发现已经可以做到按下按键没反应,松手后LED状态翻转。


使用特权

评论回复
gaoyang9992006|  楼主 | 2021-9-16 23:44 | 显示全部楼层
最后提供两中外部IO中断的演示工程
005_EXT_INT.X.zip (45.37 KB)

使用特权

评论回复
koala889| | 2021-9-18 16:49 | 显示全部楼层
楼主,可以把类似的帖子想办法做个汇总么?
有时候,看了这个,找之前的,要翻半天。

使用特权

评论回复
hu9jj| | 2021-9-18 17:47 | 显示全部楼层
koala889 发表于 2021-9-18 16:49
楼主,可以把类似的帖子想办法做个汇总么?
有时候,看了这个,找之前的,要翻半天。 ...

有汇总贴:
https://bbs.21ic.com/icview-3159186-1-1.html

使用特权

评论回复
gaoyang9992006|  楼主 | 2021-9-20 16:35 | 显示全部楼层
hu9jj 发表于 2021-9-18 17:47
有汇总贴:
https://bbs.21ic.com/icview-3159186-1-1.html

我在单独做一个系列,最后会打包汇总并,每一个例子做一个视频。请关注我的B站账号。

使用特权

评论回复
xinpian101| | 2021-9-21 22:01 | 显示全部楼层
例子不错,入门的好教程。

使用特权

评论回复
koala889| | 2021-9-22 10:00 | 显示全部楼层
hu9jj 发表于 2021-9-18 17:47
有汇总贴:
https://bbs.21ic.com/icview-3159186-1-1.html

感谢,这个很好

使用特权

评论回复
xinpian101| | 2021-10-24 23:19 | 显示全部楼层
参考学习。

使用特权

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

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1888

主题

15607

帖子

197

粉丝