小编sne*_*ezy的帖子

引脚电平变化中断 - 带内部中断的外部中断

在程序中,我使用定时器中断循环通过LED,如果有人按下开关,它应该停止第一个中断并触发第二个应该根据按下的开关点亮LED.在这里,我有点困惑,正在调用哪个中断.我为Pin Change Interrupt提到了一些书,并为设置PCMSK2写了几行.我得到的输出是"最初所有的LED都在循环,当按下一个开关...... LED的循环停止并重新开始(这意味着程序正在读取输入,只是没有触发第二次中断).它不会停止或者暂停并且不会点亮随后的领导." 有人可以帮忙吗?

#include <avr/io.h>
#include <avr/interrupt.h>
#define PINK_MASK \
    ((1<<PINK0)|(1<<PINK1)|(1<<PINK2)|(1<<PINK3)|(1<<PINK4)|(1<<PINK5)|(1<<PINK6)|(1<<PINK7))


volatile unsigned int intrs, i=1;

void enable_ports(void);
void delay(void);

extern void __vector_23 (void) __attribute__ ((interrupt));

extern void __vector_25 (void) __attribute__ ((signal));

void enable_ports()
{
    DDRB = 0xff;   //PORTB as output for leds

    PORTB = 0xff;

    DDRK = 0x00;  //PORTK as input from switches

    PORTK |= PINK_MASK;

    PCMSK2 = PINK_MASK;     //ENABLE PCMSK2, Setting interrupts

    PCICR = 0x04;

    PCIFR = 0x04;

    TCCR0B = 0x03;      //Setting TIMER

    TIMSK0 = 0x01; …
Run Code Online (Sandbox Code Playgroud)

c avr interrupt-handling

4
推荐指数
1
解决办法
4708
查看次数

标签 统计

avr ×1

c ×1

interrupt-handling ×1