最新帖子 精华区 社区服务 会员列表 统计排行
主题 : Tiny4412裸机程序之按键控制LED
admin 离线
级别: 管理员
UID: 1
精华: 1
发帖: 997
金币: 526 个
银元: 488 个
铜钱: 7853 个
技术分: 601 个
在线时间: 736(时)
注册时间: 2010-04-21
最后登录: 2018-04-20
楼主  发表于: 2015-10-28   

Tiny4412裸机程序之按键控制LED

管理提醒: 本帖被 admin 从 阶段1讨论区 移动到本区(2016-11-20)
这1节我们通过按键来控制led,按下按键K1,4个灯全亮,松开全灭。
看一下原理图
[attachment=9867]
[attachment=9868]
K1与XNI26/GPX3_2相连,我们把GPX3_2配置成输入接口,从原理图可以看出当按键断开时XNI26与1.8v电压相连,显示高电平,
当按键按下时XNI26与地相连,显示底电平。这样我们只有读XNI26/GPX3_2状态就可以判断按键是按下还是松开。
代码如下:

//led.c文件
#define GPM4CON (*(volatile unsigned int *)0x110002E0)
#define GPM4DAT (*(volatile unsigned int *)0x110002E4)

#define GPX3CON (*(volatile unsigned int *)0x11000C60)
#define GPX3DAT (*(volatile unsigned int *)0x11000C64)

int main(void)
{
    int val;
    int i;


/*
* 配置GPM4_0,GPM4_1,GPM4_2,GPM4_3为输出引脚
* 对应LED1/2/3/4
*/

 GPM4CON = 0x1111;

 /* 设置K1对应的GPIO(GPX3_2)为输入 */
 GPX3CON &= ~(0xf << 8);  //把[11:8]位清0

 while (1)
 {

     val = GPX3DAT;
     /* 读出按键引脚状态 */

     if (val & (1<<2)) /* 按键是松开状态 : 高电平 */
     {
         /* 熄灭对应LED : GPIO输出高电平 */
         GPM4DAT |= (15);
     }
     else
     {
         /* 否则点亮LED : GPIO输出低电平 */
         GPM4DAT &= ~(15);
     }

 }


    return 0;
}

代码位置:https://github.com/cyj1988jyc/luoji4412
描述
快速回复

如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码:

验证问题:
printf("%d", 83)
按"Ctrl+Enter"直接提交