#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 《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电平取反*/
}
举报