5.建立源文件test6.C,编写实验程序,添加到工程中;
6.编译链接选项的设置同前面实验;
7.编译链接工程,点击Debug 按钮,启动AXD 进行调试;
8.编译运行程序,打开PC 机的超级终端观察程序运行情况,提示等待键盘按键,按 key1 ,灯不亮,按key2 或key3 或key4,LED4 亮。
9.理解并掌握本实验原理及程序,完成练习题
七、实验参考程序
#include \#include \#include \
/****************************************************************************** 【功能说明】GPIO 输入实验
******************************************************************************/
#include \#include \#include \#include \
#define inport32(port) *((unsigned long int*)port) #define #define #define #define
outport32(port,data) *((unsigned long int*)port)=data PORT_C_CON 0x01d20010 PORT_C_DAT 0x01d20014 PORT_C_PUL 0x01d20018
#define PORT_G_CON 0x01d20010 #define PORT_G_DAT 0x01d20014 #define PORT_G_PUL 0x01d20018
/****************************************************************************** 【功能说明】GPIO 输入按键实验 void Init_PORT_G(void) {
//Key0~3: D0~3, PORTG0~3 outport32(PORT_G_DAT, 0x00ff); //All I/O Is High
outport32(PORT_G_CON, 0x00ff); //KEY0~KEY3定义为I/O,采用查询方式 outport32(PORT_G_PUL ,0x0x0000); //PULL UP RESISTOR enabled to I/O }
void Init_PORT_C(void)
{
//LED D0 D1 D2 //PC1 PC2 PC3 outport32(PORT_C_DAT, 0xffff); //All I/O Is High
outport32(PORT_C_CON, 0x0f05ff55);
outport32(PORT_C_PUL ,0x30f0); //PULL UP RESISTOR enabled to I/O }
/************************* ledblink *****************************/
void Led_On_Off(int LedStatus) //1/2/4 {
//PC1,PC2,PC3 High available unsigned long temp;
temp=inport32(PORT_C_DAT) & 0x1f1 ; temp |= ( (LedStatus & 0x7)<<1 ) outport32(PORT_C_DAT,temp); }
int get_key(void) {
int key,tmp;
key=inport32(PORT_C_DAT)&0xf; delay(20);
temp= inport32(PORT_C_DAT)&0xf; if(key==temp) return(key); else return(0); }
void Main(void) {
rSYSCFG=CACHECFG; // Using 8KB Cache// Port_Init(); //初始化其他端口
Init_PORT_C(); //初始化端口C Init_PORT_G() ;
switch( get_key()) ) { case 0 :
Led_On_Off(0x00); break; case 1:
Led_On_Off(0x01); Delay(2000); break;
case 2:
Led_On_Off(0x01);
Delay(2000); break; //case …. }
}
七、练习题
1.本程序中如何修改换成LED1 灯亮; 2.如何读取键盘的按键值。