关于ICC AVR中断的问题,程序如下 10

#include<iom16v.h>#include<macros.h>#defineuintunsignedint#defineucharunsignedchar#pr... #include<iom16v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
#pragma interrupt_handler interp:2
uchar count;

//*********延时函数***********
void delay()
{
unsigned int i,j;
for(i=70;i>0;i--)
{
for(j=1000;j>0;j--);
}
}

//*********外部中断0子程序***********
void interp()
{
uchar i;
delay();
i=PINC;
i=i&0x80; //read PD7
if(i==0) //there is keypress
{
count++;
if(count>=10)
count=0;
}
}

//***********初始化***************
void init0()
{
GICR==0X40; //enable
MCUCR=0x02; //INT0 down
GIFR=0X40; //remove date
}

//***********show*************
uchar decode(uchar k)
{
uchar showcode;
switch(k)
{
case 0:showcode=0x3f;
break;
case 1:showcode=0x06;
break;
case 2:showcode=0x5b;
break;
case 3:showcode=0x4f;
break;
case 4:showcode=0x66;
break;
case 5:showcode=0x6d;
break;
case 6:showcode=0x7d;
break;
case 7:showcode=0x07;
break;
case 8:showcode=0x7f;
break;
case 9:showcode=0x6f;
break;
}
return (showcode);
}

//***********main*************
void main()
{
SREG=0X80;
DDRA=0XFF;
DDRC=0X00;
PORTC=0XFF;
init0();
count=0;
while(1)
{
PORTA=decode(count);
}

}
展开
 我来答
百度网友5a45a47
2013-10-01 · TA获得超过136个赞
知道答主
回答量:71
采纳率:0%
帮助的人:63.9万
展开全部
i=PINC;
i=i&0x80; //read PD7
看你的开关是接在那里的,PINC读的是PC不是PD;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fgale
2013-09-29 · TA获得超过1450个赞
知道小有建树答主
回答量:1857
采纳率:50%
帮助的人:538万
展开全部
中断中每次进去后只会加一,然后回到主程序就显示了,所以你要的结果不会出现,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友186dfeac08
2013-09-28 · TA获得超过754个赞
知道小有建树答主
回答量:1074
采纳率:50%
帮助的人:529万
展开全部
然后呢?你的问题是什么?
追问
用protues仿真没动静呀,只是显示我的count初值0,按键根本就没反应
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式