首页 > 其他 > 详细

AVR_Interrupt

时间:2019-10-23 18:55:31      阅读:89      评论:0      收藏:0      [点我收藏+]

https://blog.csdn.net/dandri/article/details/54799300

技术分享图片

 

 技术分享图片

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 

/**
*作者:Dandri
*时间:2017/01/31
*MCU:ATMega16
*频率:8MHz
*功能:按下两次按键,LED灯亮一次
*/

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

unsigned char count = 0;//用于计数按下按键的次数
unsigned char flag = 0; //用于启动点灯的标志

//中断向量地址里的程序
#pragma interrupt_handler int0_isr:2 //首先使用#pragma interrupt_handler int0_isr:2声明中断,2表示中断向量号
void int0_isr(void)
{
count++;
if (count >= 2)
{
flag = 1;
count = 0; //计数器清0
}
}

//外部中断相关的寄存器初始化,因为接的是PD2,使用的是INT0
void int0_init()
{
GIFR = 0x40; //INTF0 标志位清零
MCUCR = 0X02; //INT0下降沿触发
GICR = 0X40; //INT0触发允许
}

//引脚初始化
void port_init()
{
DDRC = 0X01;
PORTC = 0X00;
}

//亮灯程序
void led()
{
if (flag == 1)
{
PORTC = 0X01;
flag = 0;
}
else
PORTC = 0X00;
}

int main()
{
port_init();
int0_init();

asm("sei"); //启用全局中断

while(1)
{
led();
}
return 0;
}

 

AVR_Interrupt

原文:https://www.cnblogs.com/forever5325/p/11727721.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!