資源簡介
我用的是256M的mini2440,這是不使用中斷的裸機程序,完成功能是按下四個按鍵對應的4個led燈亮,

代碼片段和文件信息
/*
*按鍵所對應的的GPIO,K1->GPG0K2->GPG3K3->GPG5K4->GPG6K5->GPG7K6->GPG11
*函數功能:通過按鍵掃描函數Key_Scan()判斷出是哪一個鍵被按下
*注意這里將6個按鍵對應的IO口都設置為輸入功能,如果只使用幾個按鍵的時候要注意修改
*/
#include“s3c2440addr.h“
#include“key.h“
#define KEY1_C (3<<0)
#define KEY2_C (3<<6)
#define KEY3_C (3<<10)
#define KEY4_C (3<<12)
#define KEY5_C (3<<14)
#define KEY6_C (3<<22)
#define KEY1 (3<<0)
#define KEY2 (3<<6)
#define KEY3 (3<<10)
#define KEY4 (3<<12)
#define KEY5 (3<<14)
#define KEY6 (3<<22)
void?Key_Init(void)
{
GPGCON&=~(KEY1_C|KEY2_C|KEY3_C|KEY4_C|KEY5_C|KEY6_C);
GPGCON|=KEY1|KEY2|KEY3|KEY4|KEY5|KEY6;
GPGUP&=~((1<<0)|(1<<3)|(1<<5)|(1<<6)|(1<<7)|(1<<11));
GPGDAT|=(1<<0)|(1<<3)|(1<<5)|(1<<6)|(1<<7)|(1<<11);
}
int?Key_Scan(void)
{
int?keynum=0;
GPGDAT=0xfff;
if((GPGDAT&(1<<0))==0)
{
keynum=1;
}
if((GPGDAT&(1<<3))==0)
{
keynum=2;
}
if((GPGDAT&(1<<5))==0)
{
keynum=3;
}
if((GPGDAT&(1<<6))==0)
{
keynum=4;
}
if((GPGDAT&(1<<7))==0)
{
keynum=5;
}
if((GPGDAT&(1<<11))==0)
{
keynum=6;
}
return?keynum;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????919??2013-04-12?14:58??head.S
?????文件???????1157??2013-04-12?20:18??key.c
?????文件????????147??2013-04-12?18:56??key.h
?????文件????????329??2013-04-12?18:46??led.c
?????文件????????422??2013-04-12?19:07??led.h
?????文件????????737??2013-04-12?20:06??main.c
?????文件????????403??2013-04-12?19:01??Makefile
?????文件???????9071??2013-04-12?16:51??s3c2440addr.h
-----------?---------??----------?-----??----
????????????????13185????????????????????8
評論
共有 條評論