2519|2

6

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430 矩阵按键 +LED显示 [复制链接]

矩阵按键连接P2口 LED灯P1口,但是程序有问题,按键没反应,然后L2 L3 L4 灯不亮,其余都亮,在线等
#include

#define uchar unsigned char

#define uint unsigned int

#define CLR_Led1 P1OUT&=~BIT4;

#define SET_Led1 P1OUT|=BIT4;

#define CLR_Led2 P1OUT&=~BIT5;

#define SET_Led2 P1OUT|=BIT5;

#define CLR_Led3 P1OUT&=~BIT6;

#define SET_Led3 P1OUT|=BIT6;

#define CLR_Led4 P1OUT&=~BIT7;

#define SET_Led4 P1OUT|=BIT7;

uchar GetKey();

void Delay1ms(uint);

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

uchar key,disp;

P1DIR=0xff;

// P1OUT=0x00;//全亮

P1OUT=0xf0;//全灭

while (1)

{

// key='2';

key=GetKey();

if(key>=0x30 && key<=0x39)

{ disp=key-0x30;

Delay1ms(3);

}

if (key=='F')

{P1OUT |=0xf0;// 灭灯

disp=0xf0;//清零

//break;

continue;

}

P1OUT&=0xf0;//

// key=key|0xf0;

P1OUT|=disp;

CLR_Led1;

Delay1ms(30);

SET_Led1;

}

}

uchar GetKey()

{

P2DIR=0x0f;

P2OUT=0x0e;//扫描第一行

_NOP();_NOP();

//P1DIR &=0x0f;//读列

if((P2IN & 0xf0)== 0xe0)return'0';

if((P2IN & 0xf0)== 0xd0)return'1';

if((P2IN & 0xf0)== 0xb0)return'2';

if((P2IN & 0xf0)== 0x70)return'3';

P2DIR=0x0f;

P2OUT=0x0d;//扫描第二行

_NOP();_NOP();

P2DIR &=0x0f;//读列

if((P2IN & 0xf0)== 0xe0)return'4';

if((P2IN & 0xf0)== 0xd0)return'5';

if((P2IN & 0xf0)== 0xb0)return'6';

if((P2IN & 0xf0)== 0x70)return'7';

P2DIR=0xff;

P2OUT=0xfb;//扫描第三行

_NOP();_NOP();

P2DIR &=0x0f;//读列

if((P2IN & 0xf0)== 0xe0)return'8';

if((P2IN & 0xf0)== 0xd0)return'9';

if((P2IN & 0xf0)== 0xb0)return'A';

if((P2IN & 0xf0)== 0x70)return'B';

P2DIR=0xff;

P2OUT=0xf7;//扫描第四行

_NOP();_NOP();

P2DIR &=0x0f;//读列

if((P2IN & 0xf0)== 0xe0)return'C';

if((P2IN & 0xf0)== 0xd0)return'D';

if((P2IN & 0xf0)== 0xb0)return'E';

if((P2IN & 0xf0)== 0x70)return'F';

return 0;//

}

void Delay1ms(unsigned int count)

{

unsigned int i,j;

for(i=0;i
for(j=0;j<120;j++);

}

最新回复

配置一下时钟,感觉延时太短,仿真器调试一下,看看按键GetKey()返回数据是否可以得到  详情 回复 发表于 2017-5-31 22:06
 
点赞 关注

回复
举报

1059

帖子

1

TA的资源

版主

沙发
 
配置一下时钟,感觉延时太短,仿真器调试一下,看看按键GetKey()返回数据是否可以得到
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
qwerghf 发表于 2017-5-31 22:06
配置一下时钟,感觉延时太短,仿真器调试一下,看看按键GetKey()返回数据是否可以得到

好的
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表