ok6410 按键测试c语言版程序
2013-03-17 22:22
369 查看
直接贴代码:
/*
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
/*
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
相关文章推荐
- 在ok6410 Androdi开发板运行c程序,添加驱动模块,并测试android驱动
- OK6410按键驱动--Qt程序(改)亲测可以运行
- 【OK6410裸机程序】按键中断
- ok6410的定时器0 测试程序
- 飞凌ok6410开发板的按键驱动改程序
- OK6410按键驱动程序(Linux),测试通过后分享给大家
- OK6410按键驱动--Qt程序(改)亲测可以运行
- OK6410按键驱动程序(Linux),测试通过后分享给大家
- 飞凌ok6410的串口测试程序
- OK6410的6个按键驱动程序(Linux),测试通过
- OK6410 uart 简单测试程序
- OK6410的单个按键驱动程序(Linux),测试通过
- ok6410的定时器0 测试程序
- ok6410LCD测试程序
- 飞凌 ok6410 按键驱动源码及测试代码
- ok6410LCD测试程序
- 运行OK6410摄像头程序时出现Unable to handle kernel NULL pointer dereference at virtual address 00000060
- 一个基于mini2440的测试按键与led灯的测试程序
- OK6410裸机程序---leds
- Linux3.6.7在OK6410平台的移植(六)按键