日志档案

发表于 2008-1-29 8:39:56

0

标签: CC1110  键盘  

CC1110的I/O与键盘

对于从51直接转型来做CC1110的朋友们来说,做键盘可能会遇到点麻烦。麻烦就是无法扫到键值,下面就说说为什么得不到键值。
下面的讨论电路是在I/O上接一个100K的电阻到地,I/O过一开关接AVDD,按键接P11,1有效。在不对I/O相关寄存器进行任何配置的情况下,CC1110的I/O状态是普通I/O口,方向是输入,可是读1来判断键值却得不到,原因是还没有选择下拉,下拉。正确做法是设按键相对应的I/O位为下拉。下面给出简单的代码:
P1SEL &= ~0X01;//普通I/O
P1DIR &= ~0X01;//输入
P1INP  &= ~0X01;//有上拉、下拉
P2INP |= 0X40; //选择下拉
好了,以上就是对P11的设置方法,不过还有另一个方法同样可行,而且可节约1条语句,不容易犯错,方法就是I/O设为三态,代码如下:
P1SEL &= ~0X01;//普通I/O
P1DIR &= ~0X01;//输入
P1INP |= 0X01;//三态

系统分类: 单片机   |   用户分类: 软体   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(614)    回复(6)  

投一票您将和博主都有获奖机会!

最新评论

  • tang

    2008-2-21 11:53:57

    P2INP |= 0X40; //选择下拉是什么意思?

    不是对P2口进行设置了吗?

  • emot

    2008-2-21 14:58:46

    P2INP的D6位是控制P1口上下拉的,PDF里原文如下:Port 1 pull-up/down select. Selects function for all Port 1 pins configured as pull-up/pull-down inputs.

  • tang

    2008-2-21 17:03:13

    非常感谢!!!

    你搞了DMA那部分没?它到底是怎么传输数据的?是怎么设置的?非常感谢!!!

  • emot

    2008-2-25 10:29:36

    以前没做过,这个周末我再看能不能帮你。

  • emot

    2008-3-3 8:47:46

    tang,对不起你,这个周末接待两位朋友,没有给你做DMA程序了。

  • tang

    2008-3-3 14:48:20

    没什么,有时间帮我看看,谢谢拉!