2199|1

20

帖子

0

TA的资源

禁言

楼主
 

atmega128两个按键同时按下为什么不能改变端口输出的值? [复制链接]

下面是我修改的一个简单的LED 显示程序,我希望同时按下两个按键的时候,改变A端口的输出,可事实上是按着的时候就有显示,
而松开按键就没有显示呢?请哪位高手能给与指点,将不胜感激。我是新手因为喜欢单片机,所以才开始学习。
#include
#include
#define led PORTA
#define uchar unsigned char

uchar key_press(void)
{
        uchar key;
        if(((PIND&0xC0)==0x40)&((PINE&0xC0)==0x40))
                key=0x01;
        else if(((PIND&0xC0)==0x40)&((PINE&0xC0)==0x80))
                key=0x02;
        else if(((PIND&0xC0)==0x80)&((PINE&0xC0)==0x40))       
                key=0x04;
        else if(((PIND&0xC0)==0x80)&((PINE&0xC0)==0x80))       
            key=0x08;
        else
            key=0xff;         
        return(key);
}

int main(void)
{
//        uchar showcode;
        DDRD =0X00;
        DDRE =0X00;
        PORTD = 0xff;       
        PORTE = 0xff;
        DDRA = 0xff;
        PORTA = 0x88;
        while(1)
    {
    led=key_press();
//         _delay_ms(100);
        }

}
此帖出自单片机论坛

最新回复

松开按键后,PIND 或 PINE 的输入会发生变化,这样进行下一次扫描循环的时候前几个 if 的条件是不符合的,key_press(void)的返回值是0xff,显示自然没有……  详情 回复 发表于 2013-9-7 21:15
点赞 关注
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
松开按键后,PIND 或 PINE 的输入会发生变化,这样进行下一次扫描循环的时候前几个 if 的条件是不符合的,key_press(void)的返回值是0xff,显示自然没有……
此帖出自单片机论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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