【问题标题】:PIC18F4550 external interrupt (push button not working)PIC18F4550 外部中断(按钮不起作用)
【发布时间】:2014-08-28 16:33:48
【问题描述】:

我尝试使用外部中断(按钮)来运行闪烁 LED 的子程序,但按下时什么也没有发生??

代码没有进入中断程序,我用变量cpt检查。

按钮接线正确(我直接尝试过 LED 并且可以正常工作)

我用 Proteus 模拟了代码,还是不行

#define _XTAL_FREQ 20000000
#include <pic18f4550.h>

// BEGIN CONFIG
#pragma config OSC = HS

static int cpt = 1;

void IntExternal_INT(void) {

    TRISB0 = 1; // PORT B0 as input
    INT0E = 1;
    INTCONbits.GIE = 1;
    INTEDG0 = 1; //: Interrupt Edge Select bit : 1 = Interrupt on rising edge of RB0/INT pin

    //  0 = interrupt on falling edge
    INT0F = 0;

}

void delay() {
    volatile int i, j;
    for (i = 0; i < 2000; i++)
        for (j = 0; j < 10; j++);
}

void interrupt ISR(void) {
    cpt++;

    if (INT0IF) //If External Edge INT Interrupt
    {

        LATDbits.LATD0 = 1; // RD-0 to High
        LATDbits.LATD1 = 1; // RD-1 to High

        delay();

        LATDbits.LATD0 = 0; // RD-0 to LOW
        LATDbits.LATD1 = 0; // RD-1 to LOW

        delay();

        INT0IF = 0; // clear the interrupt
    }
}

void main(void) {
    IntExternal_INT();
    TRISD = 0xF0; // PORT B Setting: Set all the pins in port D to Output.
    while (1) {
        if (cpt % 2 == 0) {

            delay();


            LATDbits.LATD0 = 1; // RD-0 to High
            LATDbits.LATD1 = 1; // RD-1 to High



            delay();


            LATDbits.LATD0 = 0; // RD-0 to LOW
            LATDbits.LATD1 = 0; // RD-1 to LOW


        }
    }
}

在实际方案中,我为 MCLR->vss 和 LED->vss 使用了上拉电阻

【问题讨论】:

  • 创建一个初始化为 0 的全局变量。在您的 ISR 中,立即递增它(即不在您的 if-else 条件内)。在您的main() 中,连续打印或设置断点。价值是否会改变?如果不是,请使用示波器探测 ISR 引脚。按下按钮时电平会改变吗?如果是,那么您没有在软件中正确设置中断。
  • “确实”是什么意思?做?还是没有?
  • @ChrisStratton 这意味着没有:)
  • 我通过设置中断端口 de digital 修复了它

标签: c embedded interrupt pic


【解决方案1】:

您需要启用外设中断和全局中断:

PEIE = 1

INTCONbits.PEIE = 1

就在你跑步之前

INTCONbits.GIE = 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2015-12-08
    相关资源
    最近更新 更多