2362|5

39

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

做键盘的时候430的中断为什么不受控制 [复制链接]

我现在用MSP430G2553做键盘实验,但是老是不成功,我还没按键盘,总是直接级进中断了。用的是中断的方法做的。由于我的4*4键盘坏了,所以我自己在面包板上面搭了一个只能有4个按键的键盘,但是作用完全一样,因为我用查询的方式写的代码已经验证成功了。现在附上代码:
//由于在面包板上实现,连接口原因只能做出4个键盘端口,即1,2,3,4
//P1.0,P1.1,P1.2,P1.3作为中端端口;P1.4,P1.5,P1.6,P1.7设置为键盘的输出口
/***********************************************************/
#include
#include

#include
#define  uchar   unsigned char
#define  uint    unsigned int  
void     delay(void); //延时函
//键盘中断服务程序
void     msp_port(void);//初始化函数
/****************延时函数*******************/
  void delay()
{
for(uint n=0;n<100;n++)
{
  ;
}
}
/****************初始化函数*******************/
void   msp_port() //初始化函数
{
P1SEL=0X00;//设置P1端口为普通的I/O
P1DIR=0X0F;//设置P1.0,P1.1,P1.2,P1.3为输入;P1.4,P1.5,P1.6,P1.7为输出
P2SEL=0X00;//设置P2端口为普通的I/O
P2DIR=0XFF;//设置P2口都为输出端口
P1OUT=0X00;//开始P1口输出都为0
P2OUT=0X1f;//开始P2口输出都为0x1f,可以检测LED灯是否正常
/*开始设置相应的中断寄存器*/
//开始将P1端口的3个中断寄存器内部的值都清零
P1IE=0;
P1IFG=0;//中断标志位
P1IES=0;
//设置P1断口中断时的工作状态
//该实验中只用到P1的前4个端口
P1IE=0X0F;
P1IES=0X0F;//设置为下降沿触发
delay();
_EINT();//开中断即打开可屏蔽中断
return;
}
/****************键盘中断服务程序*******************/
#pragma vector=PORT1_VECTOR         // P1 端口中断服务程序
__interrupt void PORT1_key1(void)
{
    delay();
   
    P2OUT=0X08;//检验进中断
switch(P1IFG&0x0f)//将P1IFG的数据当做判断标准,共有4中可能性0X01, 0X02, 0X03, 0X04
{
case  0x01:   P2OUT=0X01;
              break;
case  0x02:   P2OUT=0X02;
              break;
case  0x03:   P2OUT=0X03;
              break;
case  0x04:   P2OUT=0X04;
              break;
}
P1IFG=0X00;
delay();
P2OUT=0X07;;//检验出中断
}
void main()
{
  WDTCTL=WDTPW+WDTHOLD;
  
  msp_port();
  while(1)
  {}
}
在面包板上面的搭建方式是:给P1.0,P1.1,P1.2,P1.3,l连接上拉电阻电压接在3.3v处,举个例子吧端口P1.0的中断
P1.0开了中断,当键盘按下的时候P1.0由于是下降沿触发,就进入中断,那么P1IFG=0X01,经过swtich()语句进行判断
输出1;但是事与愿违,妈的,总是直接进中断,即使进了并且无视swtich()语句。
怒请大神指点。。。。。

最新回复

内部是带上拉电阻的,你使能就可以了!  详情 回复 发表于 2013-10-14 21:12
 
点赞 关注

回复
举报

1149

帖子

3

TA的资源

五彩晶圆(初级)

沙发
 
使能内部上拉。。。。。。

点评

请麻烦能说的稍微再清楚一点吗?新手请包涵。上拉哪里??  详情 回复 发表于 2013-10-14 18:49
 
 

回复

2781

帖子

417

TA的资源

五彩晶圆(中级)

板凳
 

点评

你的意思是不是要添加这样的代码在初始化里面 P1REN=0x0f;//我在P1.0,P1.1,P1.2,P1.3这几个端口外加了上拉电阻  详情 回复 发表于 2013-10-14 18:59
 
个人签名
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 沙发zqjqq88 的帖子

请麻烦能说的稍微再清楚一点吗?新手请包涵。上拉哪里??

点评

内部是带上拉电阻的,你使能就可以了!  详情 回复 发表于 2013-10-14 21:12
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 板凳qinkaiabc 的帖子

你的意思是不是要添加这样的代码在初始化里面
P1REN=0x0f;//我在P1.0,P1.1,P1.2,P1.3这几个端口外加了上拉电阻
 
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

6
 

回复 4楼SF很厉害 的帖子

内部是带上拉电阻的,你使能就可以了!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表