mini2440裸机试炼之--按键控制蜂鸣器和LED

根据用户手册和数据手册得到

***************************************************************************************************************************************************************

       
  
 
      
      

***************************************************************************************************************************************************************

实现功能:

前四个按键一个按键控制灯的亮和灭
另外两个中一个控制四个灯全亮并且发出beep声,
另一个控制四个灯全闪三下后beep一声后熄灭

***************************************************************************代码段******************************************************************************

<pre name="code" class="html">#define GPBCON    (*(volatile unsigned long*)0x56000010)  //rGPBCON是指向0x56000010这个地址空间的一个宏
#define GPBDAT    (*(volatile unsigned long*)0x56000014)
#define GPGCON    (*(volatile unsigned long*)0x56000060)
#define GPGDAT    (*(volatile unsigned long*)0x56000064)
#define U8        unsigned char
#define U32       unsigned int
#define PWM_out   (1)
#define LED1_out  (1<<(5*2))
#define LED2_out  (1<<(6*2))
#define LED3_out  (1<<(7*2))
#define LED4_out  (1<<(8*2))
#define LED_OFF   (0x0F<<5)
#define BEEP_OFF  (0)        //蜂鸣器来说1代表发出声音,而0则代表不出声音
#define BEEP_ON   (1)
#define LED1_ON   (0x0E<<5)  //LED1                ON
#define LED2_ON   (0x0E<<6)  //LED1+LED2           ON
#define LED3_ON   (0x0E<<7)  //LED1+LED2+LED3      ON
#define LED4_ON   (0x0E<<8)  //LED1+LED2+LED3+LED4 ON
void daly()
{
    U32 t, i;
    for(t=8888;t>0;t--){
    for(i=0;i<3000;i++){} }
}
int Main()
{
    U8 j;
    GPBCON=LED1_out|LED2_out|LED3_out|LED4_out|PWM_out;                                  //led PWM 设置为输出
    GPGCON= ~( (3<<(2*0))|(3<<(2*3))|(3<<(2*5))|(3<<(2*6))|(3<<(2*7))|(3<<(2*11)) );     //GPG0 3 5 6 7 11 输入
    GPBDAT=LED_OFF;
    while(1)
    {
        GPBDAT=LED_OFF;
        if( !(GPGDAT &( 1<<0 )) ){      // K1>>LED1 
            GPBDAT=LED1_ON;daly();    
            GPBDAT=LED_OFF;         
            } else
         
        if(!(GPGDAT &( 1<<3 )) ){      // K2>>LED1+LED2 
            GPBDAT=LED2_ON; daly();
            GPBDAT=LED_OFF;
            } else
        if(!(GPGDAT &( 1<<5 )) ){      // K3>>LED1+LED2+LED3 
            GPBDAT=LED3_ON;daly();
            GPBDAT=LED_OFF;
            } else
        if(!(GPGDAT &( 1<<6 )) ){      // K4>>LED1+LED2+LED3+LED4 
            GPBDAT=LED4_ON; daly();
            GPBDAT=LED_OFF;
            } else
        if(!(GPGDAT &( 1<<7 )) ){      // K5>>LED1+LED2+LED3+LED4+BEEP 
            GPBDAT=LED4_ON|BEEP_ON;daly();
            GPBDAT=LED_OFF;
            } else
        if(!(GPGDAT &( 1<<11 )) ){      // K6>>(LED1+LED2+LED3+LED4)*3+BEEP 
            for(j=0; j<2; j++){
                GPBDAT=LED4_ON;daly();
                GPBDAT=LED_OFF;daly();
                }
            GPBDAT=LED4_ON|BEEP_ON; daly();
            GPBDAT=LED_OFF;
            }
    }
    return 0;
}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值