avr单片机INT0模拟代码

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

/* 主函数 */
int main(void)
{
    DDRA = 0x00;    /*方向输入*/
    PORTA = 0xFF;   /*打开上拉*/
    DDRB = 0xFF;    /*方向输出*/
    PORTB = 0xFF;   /*电平设置*/
    DDRC = 0x00;    /*方向输入*/
    PORTC = 0xFF;   /*打开上拉*/
    DDRD = 0x00;    /*方向输入*/
    PORTD = 0xFF;   /*打开上拉*/

    MCUCR = (0<<ISC01 | 1<<ISC00); /* 外部int0改为任意电平变化触发方式 */
    GICR |= (1<<INT0); /* int0中断使能 */
    sei();  /*中断使能*/

    while (1)
    { 
        _delay_ms(200); 
        PORTB ^= (1 << 0);  /*PB0电平取反*/ 
    }

    return 0;
}

/* 外部INT0处理函数 */
/* 该函数可以使用调试器调试,改变PORTD的PIND2的值从而触发中断 */
SIGNAL(SIG_INTERRUPT0)
{   
    PORTB ^= (1 << 1);    /*PB1电平取反*/
}

你可能感兴趣的:(include,delay)