ok6410 按键测试c语言版程序

直接贴代码:

/*
    name:led_key
    author:lvtory
    硬件平台:ok6410
    function:
              key1:实现从0-15二进制级数点亮led
              key2:实现初始化
              key3-key6:按键对应点亮相应led
              使用查询方式
    create:2013.3.17          
    





*/

/**** led gpio NLED1-4 -> GPM0-3  */
#define rGPMCON (*(volatile unsigned *)0x7F008820)
#define rGPMDAT (*(volatile unsigned *)0x7f008824)
#define rGPMPUD (*(volatile unsigned *)0x7f008828)


/****    key gpio  KEYINT1-6 ->GPN0-5 */
#define rGPNCON (*(volatile unsigned *)(0x7F008830))
#define rGPNDAT (*(volatile unsigned *)(0x7F008834))

#define rGPNPUD (*(volatile unsigned *)(0x7F008838))


void led_run();

void init()
{
    /*配置led*/
    rGPMCON=0x1111    ;//配置为    OUTPOUT
    rGPMPUD=0x0;    
    rGPMDAT=0x0f;    //全灭
    
    
    /*配置key*/
    rGPNCON=0x00    ;//配置为    INPUT

    
        
            
}

void delay(int n)
{
    int i=0;
    int j=0;
    for(i=0;i<10000;i++)
    {
        for(j=0;j<2000;j++)
        {
            
        }
    }
}
void key()
{
    int key;
    while(1)
    {
        
    
        while((key=(rGPNDAT&0x3f))==0x3f);
    

        switch(key)
        {
            case 0x3e:
                        led_run();
                        break;
            case 0x3d:
                        init();
                        break;
            case 0x3b:
                        rGPMDAT=0x0e;
                        break;
            case 0x37:
                        rGPMDAT=0x0d;
                        break;
            case 0x2f:
                        rGPMDAT=0x0b;
                        break;
            case 0x1f:
                        rGPMDAT=0x07;
                        break;
                
        }    
        
    }
}

void led_run()
{
    int num=0;
    int i;
    
        
    
        for(i=0;i<16;i++)
        {
        
            if((rGPNDAT&0x3f)==0x3d)
            {
                i=0;
                rGPMDAT=~i;
                break;
            }
            rGPMDAT=~i;
            delay(100);
            
    
        
        }

}




void Main()
{
    init();

    key();

        
}




汇编启动代码:


    IMPORT Main


    AREA |C$$code|, CODE, READONLY
    ENTRY
    
start

        B       Main         ;跳入MAIN程序
    END
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值