用查询方式,用按键控制led灯亮灭

本次试验条件,在TQ2440下,使用串口与电脑相连,串口软件DNW。

鉴于前面已经写过一篇关于如何在裸板条件下点亮LED灯,这次介绍如何用查询方式,使用板子上的小按键k1~k4控制led1~4的亮灭。其主要目的还是防止自己不记得...

首先查看电路图如下:

由上图可知道K1对应的中断是EINT1

K1~~EINT1
K2~~EINT4
K3~~EINT2
K4~~EINT3
不知道板子设计人的脑袋是不是被门挤了,设计出这样的对应顺序



接着我们回到2440的手册,找到EINT0~EINT4对应的这一页,看一下是怎样定义的,发现定义成10就激活了中断功能,于是我们在程序里将中断打开,注意各个按钮中断的对应!!

下面是程序:


#define GPBCON (*(volatile unsigned long *)0x56000010)   
#define GPBDAT (*(volatile unsigned long *)0x56000014)
#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)


#define GPB5_out (1<<(5*2))
#define GPB6_out (1<<(6*2))
#define GPB7_out (1<<(7*2))
#define GPB8_out (1<<(8*2))

int main()
{
unsigned long dwDat;
GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out; //将所有的led设置成打开状态
GPBDAT = 0x3FF;          //将所有led关闭
GPFCON = 0x22A;          //这里将所有用到的4个中断打开,具体为什么这样请参考上一篇led点亮

while(1){

dwDat = GPFDAT;
if (dwDat & 1<<1)            //k1 与 10 相与,实际意义是检测这个位置是高、低电平,如果是低,则点亮
GPBDAT |=(1<<5);          //led1 亮
else
GPBDAT &=~(1<<5);

if (dwDat & 1<<4)           //k2 与10000 相与
GPBDAT |=(1<<6);         //led2
else
GPBDAT &=~(1<<6);

if (dwDat & 1<<2)           //k3 与100相与
GPBDAT |=(1<<7);          //led3
else
GPBDAT &=~(1<<7);

if (dwDat & 1)               //k4 与 1   相与
GPBDAT |=(1<<8);          //led4
else
GPBDAT &=~(1<<8);
}
}



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值