分享

avr 按键测试中断0,1程序

 共同成长888 2015-07-06
#include
#include
#define uchar unsigned char
#define uint  unsigned int

uchar count;  
void system_init()
{
   HC_595_init();//数码管初始化
   
   PORTD=0Xff;//
   DDRD=0XFC;//INTO INT1 设置为输入 有效形式 其他口为输出高电平
   
}

void interrupt_init()
{
  EIMSK=0X03;//使能外部中断0和外部中断1
  EICRA=0X0A;//int0和1下降沿触发
  MCUCSR=0X00;//控制和状态寄存器初始化

}

#pragma interrupt_handler INT0_ISR:iv_INT0//INT0_ISR:中断函数名,接着是中断向量号

void INT0_ISR()//按键一 加数字
{
  if(++count>=16)
  count=0;
 // delay_nms(40);
  while(PIND!=0XFE);//松手检测
}


#pragma interrupt_handler INT1_ISR:iv_INT1//INT0_ISR:中断函数名,接着是中断向量号

void INT1_ISR()//按键二 减数字
{
  if(count)
    --count;
else
count=15;
  //delay_nms(40);
   while(PIND!=0XFD);//松手检测
}

void main(void)
{
   system_init();
   interrupt_init();
   SREG|=0X80;
   while(1)
   {
      Seg7_Led_display(count);
   }


}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多