mini2440 按键中断LED 实验

 此次实验实现的是当按键K1被按下是LED1亮,当按键k2按下时LED2亮,当按下K3时LED3亮,按下k4时LED4亮,按下k5时全亮,按下k6都不亮。

1、新建工程led 并添加文件start.s 和mian.c

 

 

在start.s

 area init,code,readonly
start

 ldr sp,=1024*4
 import main
 bl main
 end

 

 

 

 

 

在main.c

 

#define rGPBCON (*((volatile unsigned *)0x56000010))

#define rGPBDATA (*((volatile unsigned *)0x56000014))

 

#define rGPGCON (*((volatile unsigned *)0x56000060))

#define rGPGDATA (*((volatile unsigned *)0x56000064))

 

#define LED1_ON rGPBDATA &=(~(1<<5))

#define LED2_ON rGPBDATA &=(~(1<<6))

#define LED3_ON rGPBDATA &=(~(1<<7))

#define LED4_ON rGPBDATA &=(~(1<<8))

 

#define LED1_OFF rGPBDATA |=(1<<5)

#define LED2_OFF rGPBDATA |=(1<<6)

#define LED3_OFF rGPBDATA |=(1<<7)

#define LED4_OFF rGPBDATA |=(1<<8)

 

 

void delay(int a)

{

    while(a--);

}

 

int main()

{

    rGPBCON = 0x15400;

    rGPGCON = 0x80A882;

    LED1_OFF;

    LED2_OFF;

    LED3_OFF;

    LED4_OFF;

 

    while(1)

    {

        if((rGPGDATA&=(1<<0)) == 0)

        {   

            delay(100);

            if((rGPGDATA&=(1<<0)) == 0)

            {

                LED1_ON;

                delay(100000);

            }

        }

        if((rGPGDATA&=(1<<3)) == 0)

        {   

            delay(100);

            if((rGPGDATA&=(1<<3)) == 0)

            {

                LED2_ON;

                delay(100000);

            }

        }

        if((rGPGDATA&=(1<<5)) == 0)

        {   

            delay(100);

            if((rGPGDATA&=(1<<5)) == 0)

            {

                LED3_ON;

                delay(100000);

            }

        }

        if((rGPGDATA&=(1<<6)) == 0)

        {

            delay(100);

            if((rGPGDATA&=(1<<6)) == 0)

            {

                LED4_ON;

                delay(100000);

            }

        }
       
 if((rGPGDATA&=(1<<7)) == 0)

        {

            delay(100);

            if((rGPGDATA&=(1<<7)) == 0)

            {
             LED1_ON;
             LED2_ON;
             LED3_ON;
                LED4_ON;

                delay(100000);

            }

        }
       

       

        LED1_OFF;

        LED2_OFF;

        LED3_OFF;

        LED4_OFF;

    }

    return 0;

 

在开始我创建了个common.h文件用来存放头文件,#include"common.h"在mian.c中已添加, 在编写好以后执start.s和common.h和main.c时,在main.c 中发现很多错误,最后我将common.h 删了,将头文件全部放在main.c 中执行成功。求解!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值