mini2440实验,用key控制led

来源:互联网 发布:淘宝宝贝导出excel 编辑:程序博客网 时间:2024/05/16 17:09
#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;
}
0 0