用AVR单片机编程序,用到4*4键盘,遇到问题,请大侠帮我看一看。

用AVR单片机编程序,用到4*4键盘,找到了以下程序,我看着没有问题,用proteus仿真也没有问题,可是烤到单片机里就出不来,返回值一直是0,检查了一下,读取PIN值得... 用AVR单片机编程序,用到4*4键盘,找到了以下程序,我看着没有问题,用proteus仿真也没有问题,可是烤到单片机里就出不来,返回值一直是0,检查了一下,读取PIN值得时候读的跟我想的有很大差距,
DDR为0,PORT为1的时候,PIN码居然是0.(我一直以为是1 )
所以一直返回的是default的值。
用的单片机是atmega8
下面附程序的键盘头文件
有哪位大侠指点一下,应该怎么解决这个问题。

//设一个变量:记录KEY()的返回值
#defineKEY_DDRDDRC
#defineKEY_PORT PORTC
#define KEY_PINPINC
//说明:采用线反转法4*4键盘
//键值: 第一列A3 第二列A2 第三列A1 第四列A0
//A7第一行:0x77 0x7b 0x7d 0x7e
//A6第二行:0xb7 0xbb 0xbd 0xbe
//A5第三行:0xd7 0xdb 0xdd 0xde
//A4第四行:0xe7 0xeb 0xed 0xee
//快速读状态,不延时
unsigned char KEY(void)
{
KEY_PORT=0X0F;
KEY_DDR=0XF0;//高4位出低,低4位拉高
unsigned char key_data=0;//保存按键状态的变量
if(KEY_PIN!=0x0F)//若有按键按下
{
_delay_ms(10);//防抖动
key_data=KEY_PIN;//保存此时低四位的状态
KEY_PORT=0XF0;
KEY_DDR=0X0F;//高4位拉高,低4位出低
key_data|=KEY_PIN;//保存此时高四位的状态,并与低四位合并
while(KEY_PIN!=0xF0);//等待按键释放
_delay_ms(10);//延时消抖
while(KEY_PIN!=0xF0);//等待按键释放
switch(key_data)//对按键的值编码
{
case 0x77:key_data=1; break;//第一行
case 0x7b:key_data=2; break;
case 0x7d:key_data=3; break;
case 0x7e:key_data=4; break;
case 0xb7:key_data=5; break;//第二行
case 0xbb:key_data=6; break;
case 0xbd:key_data=7; break;
case 0xbe:key_data=8; break;
case 0xd7:key_data=9; break;//第三行
case 0xdb:key_data=10;break;
case 0xdd:key_data=11;break;
case 0xde:key_data=12;break;
case 0xe7:key_data=13;break;//第四行
case 0xeb:key_data=14;break;
case 0xed:key_data=15;break;
case 0xee:key_data=16;break;
default:key_data=0;break;//无有效按键
}
}
return (key_data);//返回键值
}
展开
 我来答
yes__mcu
2013-03-17 · TA获得超过923个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:443万
展开全部
读取AVR单片机引脚上的数据时,不管DDRx如何配置,都可以通过PINx来读取引脚上的数据。但是PINx和输出锁存器之间有一个同步器,这样可以避免在引脚电平改变的时候引起引脚电平不稳。同时也导致了读取输入信号会有延时。所以在改变引脚电平之后,最好等待1个时钟周期以上,再读取该引脚的电平
wwpwwp20088
2013-03-17 · TA获得超过429个赞
知道小有建树答主
回答量:651
采纳率:0%
帮助的人:251万
展开全部
我也遇到一样的问题了。。。现在也没解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dawmoon
2013-03-18 · TA获得超过134个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:170万
展开全部
先看看硬件吧,是不是连到地上了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式