打印

为什么按下P3^2按键 不会进入中断

[复制链接]
3183|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
meimiao88|  楼主 | 2013-11-28 22:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
迷途小羔羊| | 2013-11-28 22:48 | 只看该作者
中断里 那个a变量赋值应该用指针吧, 函数间 的变量用 指针来传递 。

使用特权

评论回复
板凳
大前门| | 2013-11-28 22:50 | 只看该作者
多年没碰过51了,请问现在51的int不是16-bit了吗?

使用特权

评论回复
地板
W_Controller| | 2013-11-29 08:59 | 只看该作者
编译器优化了。楼主把unsigned  char   a改成volatile unsigned char a试试。
另外提醒楼主,局部变量超出范围了。。。

使用特权

评论回复
5
qmh524| | 2013-11-29 08:59 | 只看该作者
电路是怎么样的,另外你这个设置的是低电平触发,看看低电平保持的时间够不够

使用特权

评论回复
6
zoudejile| | 2013-11-29 09:02 | 只看该作者
楼主,你这个程序可以进入中断了,只是你的P1端口,经过一次中断后,a一直0xfe不会再变化

使用特权

评论回复
7
gx_huang| | 2013-11-29 09:22 | 只看该作者
看见:
unsigned   int  j=500000;
就笑了,uint 16bit会这么大吗?

使用特权

评论回复
8
leesff| | 2013-11-29 16:36 | 只看该作者
这也能有问题?无非开中断,进入中断,退出中断而已嘛。用汇编还会想个中断保护的。关于变量范围,这种小错误就别犯了!

使用特权

评论回复
9
meimiao88|  楼主 | 2013-11-29 19:14 | 只看该作者
大前门 发表于 2013-11-28 22:50
多年没碰过51了,请问现在51的int不是16-bit了吗?

是的

使用特权

评论回复
10
meimiao88|  楼主 | 2013-11-29 19:15 | 只看该作者
leesff 发表于 2013-11-29 16:36
这也能有问题?无非开中断,进入中断,退出中断而已嘛。用汇编还会想个中断保护的。关于变量范围,这种小错 ...

刚接触  没办法  以后一定改进

使用特权

评论回复
11
meimiao88|  楼主 | 2013-11-29 19:23 | 只看该作者
W_Controller 发表于 2013-11-29 08:59
编译器优化了。楼主把unsigned  char   a改成volatile unsigned char a试试。
另外提醒楼主,局部变量超出 ...

我改了   没有按下按键  就跳到了中断程序   

使用特权

评论回复
12
meimiao88|  楼主 | 2013-11-29 19:24 | 只看该作者
德意志精神 发表于 2013-11-29 10:35
unsigned   int  最大6500左右吧

那个  在我调试的时候 随意改动的   而且不是被我屏蔽了吗

使用特权

评论回复
13
meimiao88|  楼主 | 2013-11-29 19:27 | 只看该作者
zoudejile 发表于 2013-11-29 09:02
楼主,你这个程序可以进入中断了,只是你的P1端口,经过一次中断后,a一直0xfe不会再变化 ...

是的    我就是这种情况  我想得到的是按下按键进入中断   松开的时候就跳出了
这需要如何改进呢??

使用特权

评论回复
14
W_Controller| | 2013-11-29 19:48 | 只看该作者
meimiao88 发表于 2013-11-29 19:23
我改了   没有按下按键  就跳到了中断程序

这个应该是硬件问题,仔细检查你的电路。同时也建议楼主把中断触发方式设置为边沿触发(IT0  = 1;)

使用特权

评论回复
15
meimiao88|  楼主 | 2013-11-29 20:17 | 只看该作者
W_Controller 发表于 2013-11-29 19:48
这个应该是硬件问题,仔细检查你的电路。同时也建议楼主把中断触发方式设置为边沿触发(IT0  = 1;) ...

这个我之前也有试过   刚刚再改了   情况还是相同的

使用特权

评论回复
16
lidreamer| | 2013-11-30 12:42 | 只看该作者
你的帖子我本来不想发表任何言论的,一眼看上去问题一大堆!!!
unsigned   int  j=500000;你的c语言这是什么水平啊。
另外进入中断你赋一次值然后再while(1)中执行,之后值就一直没发生改变。

提个建议,c51方面的书多看一些,另外在中断里面设置一个标志位,然后再while中延时,并清除标志位,延时是为了发生的现象肉眼可以看到

使用特权

评论回复
17
zoudejile| | 2013-12-1 11:17 | 只看该作者
meimiao88 发表于 2013-11-29 19:27
是的    我就是这种情况  我想得到的是按下按键进入中断   松开的时候就跳出了
这需要如何改进呢?? ...

void  ext0() interrupt 0
{

//if(s2==0)
{
a=0xfe;


//delay();
//a=0xff;
//delay();

}
IT0=0;
}

使用特权

评论回复
18
zoudejile| | 2013-12-1 11:17 | 只看该作者
本帖最后由 zoudejile 于 2013-12-1 11:23 编辑
meimiao88 发表于 2013-11-29 19:27
是的    我就是这种情况  我想得到的是按下按键进入中断   松开的时候就跳出了
这需要如何改进呢?? ...

void  ext0() interrupt 0
{
  IT0=0;
  if(a==0xFE)a=0x01;
  else a=0xFE;
}
这样就是按下一次灯就会闪动

使用特权

评论回复
19
meimiao88|  楼主 | 2013-12-1 20:50 | 只看该作者
zoudejile 发表于 2013-12-1 11:17
void  ext0() interrupt 0
{
  IT0=0;

这样是可以实现   但还是跳不出中断   还是要谢谢你  算了  结贴吧

使用特权

评论回复
20
zoudejile| | 2013-12-1 22:19 | 只看该作者
meimiao88 发表于 2013-12-1 20:50
这样是可以实现   但还是跳不出中断   还是要谢谢你  算了  结贴吧

跳不出中断?你详细描述是什么现象啊?或者你把程序发我,你要什么效果我帮你调试下zoudejile@126.com

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

19

帖子

0

粉丝