3271|5

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

老师让我们做的,我也不知道错哪了?大虾们看看,,,XIEIXE [复制链接]

MSP430 X22X4学习板
4*4键盘在自己焊的两个七段数码管显示



#include <msp430x22x4.h>
int tmp;
typedef unsigned int uchar;
typedef unsigned int uint;
uchar cnt = 0; //位码
uchar scandata[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x75,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/***********全局变量********************/
int key_pressed; //按键是否按下 1--是, 0--否
int key_val; //存放键值
int key_flag; //是否放开 1--是, 0--否
int tmp1;
int row;
int col;
int tmp1;
int tmp2;
//键盘逻辑键值与程序计算键值的映射
uchar key_map[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
uchar Dispbuf[2];

/****************
初始化键盘扫描的io端口
*********************/
void init_keypad(void)
{
P1DIR=0xf0;
P1OUT |=0xf0;
key_pressed =0;
key_flag=0;
key_val=0;
}

void main(void)
{
WDTCTL=WDT_ADLY_1_9;//看门狗计时 1、9毫秒中断
IE1 |=WDTIE;
P4DIR=0xff;
P3DIR=0xff;
P4OUT=0x00;
P3OUT=0xff;

_EINT(); //全局中断
init_keypad();
while(1)
{

P1OUT &=0x00;//设置p1out全为0,等待按键输入
tmp = P1IN;//获取p1in
if((key_pressed ==0x00)&&((tmp &0x0f)<0x0f))//如有键按下
{
key_pressed = 1;//如有键按下,设置key_press标志为一
{
uint tmp;
for(tmp = 12000;tmp>0;tmp--);
}


tmp1=0x80;
for(row =0;row<4;row++) //行扫描
{
P1OUT=0xf0; //p1.4--1.7全输1
P1OUT -= tmp1; //p1.4--1.7输出四位有一个为0
tmp1>>=1;
if((P1IN & 0x0F)<0x0f) //是否p1in的p1.0--p1.3有一个0

{
tmp2 = 0x01; //tmp2检测哪一位为0
for(col = 0;col < 4;col++) //列检测
{
if((P1IN & tmp2)==0x00)//是否是该列 为0是
{
key_val = key_map[row*4 + col];//获取键值
return; // 退出循环
}
tmp2 <<=1; //tmp2右移一位

}
}
}
//check_key();//调用它,获取键值
}
else if ((key_pressed == 1)&&((tmp &0x0f)==0x0f))//按键已放
{
key_pressed = 0;//清除key_press标示
key_flag = 1; //设置key_flag标志
}
else
{
_NOP();
}

if (key_flag==1)
{
key_flag=0;
Dispbuf[0]=key_val /10;
Dispbuf[1]=key_val %10;
}
}
}

#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
P3OUT=0xff;
P4OUT=scandata[Dispbuf[cnt]];//段选
P3OUT &=~(1<<(cnt));//位选
cnt++; //位计数变量在0 1间循环
if (cnt==2) cnt=0;
}

谢谢了

最新回复

描述一下你的问题现象吧,因为别人手里不一定刚好有你的硬件来验证  详情 回复 发表于 2009-3-26 10:07
 
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
单步仿真,观察寄存器和参数值的变化,结合万用表看电平的变化是否正确,一定能发现问题出在哪里。
把程序简化,分成几个部分测试,会帮助你更快找出错误
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
LZ是想需要什么帮助呢?
照着楼上说的办
 
 
 

回复

93

帖子

0

TA的资源

一粒金砂(初级)

4
 
错的话,说明下现象总要的吧?……
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
论坛有没 code模式    这样看起来很难受
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
描述一下你的问题现象吧,因为别人手里不一定刚好有你的硬件来验证
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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