低电平触发中断问题

[复制链接]
3154|5
 楼主| sjw766 发表于 2008-5-15 22:38 | 显示全部楼层 |阅读模式
要实现的功能,按下按键S1,灯左移一位。中断触发方式为低电平触发。程序如下,但是在试验板实现不了。哪位大哥指点下,问题出在哪?不胜感谢!!!
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
uchar Status=0xFE;     //初始状态最左一个LED亮

//外部中断1中断程序
void INT0Int() interrupt 2 using 1
{
Status=_crol_(Status,1); //循环左移1位
}
//主程序
main()
{
EX1=1;
IT1=0;
EA=1;
while(1){
P1=Status;
}
}
dai_weis 发表于 2008-5-15 22:56 | 显示全部楼层

改成下沿触发看看

低电平触发,只要低电平不撤销,就会一直中断
rgxia 发表于 2008-5-17 08:19 | 显示全部楼层

1.要考虑开关的抖动,连续的触发不该响应 2.要用下降边沿触

1.要考虑开关的抖动,连续的触发不该响应
2.要用下降边沿触发
薛奎 发表于 2008-5-18 17:24 | 显示全部楼层

中断处理

进入中断后先确认是否误动作,确认是中断信号后要关闭EA再执行服务程序
dfgeoff 发表于 2008-5-18 22:43 | 显示全部楼层

是一点都没有变化吗?

如果一直显示一个,从来都没变过(不管变到哪个上面),那么估计是Status被优化掉了,定义的时候加个volatile吧。

如果有变化,只是乱,那就如ls两位的指点,做个延时去抖判断。
hnsw 发表于 2011-7-25 21:11 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部