按键控制led灯亮灭c语言实验 告,通过按键控制LED灯的实验

通过查看开发板的核心电路原理图,加上查阅SUMSANG

2440的datasheed得知四个按键K1,K2,K3,K4对应GPF中的GPF1,GPF4,GPF2,GPF0。将这四个引脚配置为输入模式,

这样通过GPFDAT寄存器中的相应为来得知哪个键被按下,当某个键被按下时,相应连接引脚接地,为低电平,在GPFDAT中相应的为表现为逻辑0。否则

为1。

设置C语言环境的汇编文件和循环点亮LED灯的实验中的一样,Makefile也不需要修改,当然,如果改变源文件的名称还是需要去修改Makefile的。贴出main.c文件如下:#define GPBCON    (*(volatile unsigned long *)0x56000010)

#define GPBDAT    (*(volatile unsigned long *)0x56000014)

#define LED4_SET_OUTPUT ((1<<10) | (1<<12) | (1<<14) | (1<<16))

#define LED1_ON    (~(1<<5))

#define LED2_ON (~(1<<6))

#define LED3_ON (~(1<<7))

#define LED4_ON (~(1<<8))

#define GPFCON (*(volatile unsigned long *)0x56000050)

#define GPFDAT (*(volatile unsigned long *)0x56000054)

#define KEY4_SET_INPUT (~((3<<0) | (3<<2) | (3<<4) | (3<<8)))

#define KEY_1    (1 << 1)

#define KEY_2    (1 << 4)

#define KEY_3    (1 << 2)

#define KEY_4    (1 << 0)

#define __IS_KEY_PRESSED(dat, keyno)

(!(dat & KEY_##keyno))

int main(void)

{

volatile unsigned long dat;

GPBCON |= LED4_SET_OUTPUT;

GPFCON |= KEY4_SET_INPUT;

while(1) {

dat = GPFDAT;

#define IS_KEY_PRESSED(n) __IS_KEY_PRESSED(dat, n)

if(IS_KEY_PRESSED(1))

GPBDAT = LED1_ON;

else if(IS_KEY_PRESSED(2))

GPBDAT = LED2_ON;

else if(IS_KEY_PRESSED(3))

GPBDAT = LED3_ON;

else if(IS_KEY_PRESSED(4))

GPBDAT = LED4_ON;

}

return 0;

}

阅读(2203) | 评论(0) | 转发(0) |

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113127 人正在系统学习中 相关资源:专业LED光动画制作软件(安装后直接用!)_setup安装包-Delphi工具…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月16日
下一篇 2021年4月16日

相关推荐