mini2440实验,用key控制led

#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 GPGCON      (*(volatile unsigned long *)0x56000060)
#define GPGDAT      (*(volatile unsigned long *)0x56000064)


/*
 * LED1,LED2, LED3 LED4对应GPB5、GPB6、GPB7 GPB8
 */
 
#define GPB5_out (1<<(5*2))
#define GPB6_out (1<<(6*2))
#define GPB7_out (1<<(7*2))
#define GPB8_out (1<<(8*2))
 
#define GPG0_in ~(3<<(0*2))
#define GPG3_in ~(3<<(3*2))
#define GPG5_in ~(3<<(5*2))
#define GPG6_in ~(3<<(6*2))
 
 
int main()
{
unsigned long dwDat;
// LED1,LED2,LED3,LED4对应的4根引脚设为输出
GPBCON = GPB5_out | GPB6_out | GPB7_out | GPB8_out;


//S1,S2,S3,S4对应的4根引脚设为输入
GPGCON =GPG0_in | GPG3_in | GPG5_in | GPG6_in;
  
while(1)
{
//若Kn为0(表示按下),则令LEDn为0(表示点亮)
dwDat = GPGDAT;             // 读取GPG管脚电平状态

if (dwDat & (1<<0))        // S1没有按下
GPBDAT |= (1<<5);       // LED1熄灭
else    
GPBDAT &= ~(1<<5);      // LED1点亮

if (dwDat & (1<<3))         // S2没有按下
GPBDAT |= (1<<6);       // LED2熄灭
else    
GPBDAT &= ~(1<<6);      // LED2点亮


if (dwDat & (1<<5))         // S3没有按下
GPBDAT |= (1<<7);       // LED3熄灭
else    
GPBDAT &= ~(1<<7);      // LED3点亮

if (dwDat & (1<<6))         // S4没有按下
GPBDAT |= (1<<8);       // LED4熄灭
else    
GPBDAT &= ~(1<<8);      // LED4点亮
}


    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值