7203|6

18

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于IO0PIN指令的疑惑 [复制链接]

关于IO0PIN指令的疑惑

最近在调一个键盘程序(LPC2103),用到了IO0PIN读端口指令(据说这是飞利浦系列的BUG),发现这个指令没有手册上说的那么简单呐,直接读是读不出来的。有人说要读一个输入状态的端口,要先把它设为输出,然后置高,最后再设为输入,才能读出正确的值,但是我试了试,仍然不对。

哪位前辈解决过这样的问题?应该用怎样的指令读取输入状态的端口值?先谢谢啦。。。

最新回复

数据手册好像说IOPIN是反映真实引脚信号,实际使用的话就不大清楚了。  详情 回复 发表于 2010-3-28 22:22
点赞 关注
个人签名好好学习,富贵花开

回复
举报

2955

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
这个应该是直接读就可以了啊,IO0PIN这个寄存器就是当前IO口德状态啊
 
个人签名不断地学习,才会有创新!
淘宝小店:手机、qq点卡、游戏点卡自动充值 http://shop63727265.taobao.com/
 

回复

2131

帖子

0

TA的资源

至上芯片

板凳
 

回复 楼主 富贵花开 的帖子

可以
测试代码

        PINSEL0 = 0x00000000;                        // 所有管脚连接GPIO       
        PINSEL3 = 0x00000000;
        IO1DIR  = BEEP;                                        // 蜂鸣器控制口输出,其余输入
       
        while (1)
        {
                if ((IO0PIN & KEY1) == 0)        // 如果KEY1按下,蜂鸣器鸣叫
                {
                        IO1CLR = BEEP;                       
                }
                else                                                // 松开则停止蜂鸣
                {
                        IO1SET = BEEP;                         
                }
        }

赞赏

1

查看全部赞赏

 
个人签名处处留心皆学问!
 
 

回复

720

帖子

0

TA的资源

纯净的硅(中级)

4
 

回复 楼主 富贵花开 的帖子

IOPIN就是反映外部环境对引脚的影响,平常都是把它定为GPIO口,然后设置为输出,应该没啥问题……你再试试,有啥现象说……
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

5
 
数据手册好像说IOPIN是反映真实引脚信号,实际使用的话就不大清楚了。
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(初级)

6
 
先谢谢各位的解答,但是问题还是存在。55555

还请各位前辈帮我看看下面的测试程序有无问题(为了方便,去掉了很多无关的程序),如有,还请各位指出,再次感谢。。。


/*************************************************************
函数名称:
函数功能:初始化
入口参数:
出口参数:
**************************************************************/
void key_init()
{
        num=0xff;  //控制让程序开始时不出现乱码;
   
    PINSEL0=0x00000000;                   //设置管脚连接GPIO
   
    PINSEL1=0x00000000;
   
   

    IO0DIR|=0x00200000;           //P0.21为输出模式
   
    IO0DIR|=LED;                  //LED测试 P0.25为输出模式
   
   
        
    IO0DIR&=~0x00080000;          //P0.19为输入模式
    delay_ms(100);
   
    IO0CLR|=0x00200000;           //P0.21输出低电平
    IO0CLR|=LED;                  //LED测试
   
   
   
}



/*************************************************************
函数名称:
函数功能:1X1键盘扫描
入口参数:
出口参数:
**************************************************************/
unsigned char keyscan()
{

//P0.19接行,状态为输入,接上拉电阻;P0.21接列,输出低电平。预期为按下P0.21,P0.19被拉低。

   
   
  temp=IO0PIN;
   delay_ms(1000);
   
   temp=temp&0x00280000;//只取P0.19,P0.21端口值              
   delay_ms(100);
      switch(temp)
      {
       case 0x00000000:num=25;
                                    IO0CLR|=LED;    //LED测试,闪两下。
                                    delay_ms(1000);
                                    IO0SET|=LED;
                                    delay_ms(1000);
                                    IO0CLR|=LED;
                                    delay_ms(1000);
                                    IO0SET|=LED;
                                    delay_ms(1000);
                                    IO0CLR|=LED;
                                    delay_ms(1000);
    break;
      
       default:                num=27;
                               IO0SET|=LED;//LED测试
    break;
      }
      while (temp!=0x00080000)   //去抖动,只有松开手才会执行下面的
      {      
            temp=IO0PIN;
           delay_ms(100);
           temp=temp&0x00080000;
      }
   return num;
}

[ 本帖最后由 富贵花开 于 2010-3-29 20:53 编辑 ]
 
个人签名好好学习,富贵花开
 
 

回复

18

帖子

0

TA的资源

一粒金砂(初级)

7
 
现在问题依然是用IO0PIN指令读取的端口值为全0:L
 
个人签名好好学习,富贵花开
 
 

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

随便看看
查找数据手册?

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