|
#include <iom16v.h>
#include <macros.h>
#pragma interrupt_handler int0:3
unsigned char counter=0,key0=0,key1=0;
void read_key1(void);
void int0()
{CLI();
GICR|=0x00;
PORTB=0X04;
SEI();
}
void main(void)
{ CLI ();
DDRB=0xFE;
PORTB=0x01;
GIFR|=0x40;
MCUCR=0x03;
GICR|=0x00;
SEI ();
while(1)
{
read_key1 ();
}
}
void read_key1(void)
{ switch (key1)
{
case 0: // 按键初始态
if ((PINB&0x01)==0)
key1=1; // 键被按下,状态转换到键确认态
break;
case 1: // 按键确认态
if ((PINB&0x01)==0)
{ key1=2; // 状态转换到键释放态
}
else
key1=0; // 按键已抬起,转换到按键初始态
break;
case 2:
if ((PINB&0x01)==1)
{ key1=0;//按键已释放,转换到按键初始态
GICR|=0x40;
}
break;
}
return;
}
我想问一下 我在INT0外部接了一个方波 int0检测上升沿 我用一个开关来使能INT0 正常应该我按完开关后 等到检测到上升沿 PB3就是给出高电平 但是每次PB3给出的高电平时间不固定 能帮忙分析一下原因吗 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|