国嵌实验:key_poll,采用查询的方式一旦按键再松开,LED亮灭一次



/*************************************************

Function name: 这是基础实验的一个模版
Parameter    : 无
Description  : 做基础实验,直接调用该模板即可
Return     : 无
Argument     : 无
Autor & date : Daniel
**************************************************/
#define GLOBAL_CLK 1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
int Wait_key(void);
void key_init(void);
void Led1_run(void);
void Led1_init(void);
/*************************************************
Function name: delay
Parameter    : times
Description : 延时函数
Return : void
Argument     : void
Autor & date :
**************************************************/
void delay(int times)
{
    int i,j;
    for(i=0;i<times;i++)
       for(j=0;j<400;j++);
}
/*************************************************
Function name: Main
Parameter    : void
Description : 主功能函数
Return : void
Argument     : void
Autor & date :
**************************************************/
void Main(void)
{
   Led1_init();
   while(1)
   {
        if(Wait_key())
        //if(!(rGPGDAT & 0x1))
        Led1_run();
   }
}
/*************************************************
Function name: key_init()
Parameter    : void
Description : key的初始化函数,其中K1连接的是GPG0
               初始化GPG0为输入模式
Return : void
Argument     : void
Autor & date : Daniel
**************************************************/
void key_init(void) /*为什么这个函数没有被调用?*/
{
   rGPGCON &= ~(3<<0);       //input mode
}
/*************************************************
Function name: beep_init()
Parameter    : void
Description : Led1的初始化函数,其中Led1连接的是GPB5
               初始化GPB5为输出模式
Return : void
Argument     : void
Autor & date : Daniel
**************************************************/
void Led1_init(void)
{
   rGPBCON &= ~(3<<10);
   rGPBCON |= (1<<10);
}
/*************************************************
Function name: beep_run()
Parameter    : void
Description : beep的初始化函数,其中beep连接的是GPB0
               初始化GPB0为输出模式
Return : void
Argument     : void
Autor & date : Daniel
**************************************************/
void Led1_run(void)
{
   rGPBDAT &=~(1<<5); /*LED亮还是灭?*///亮
   delay(1000);
   rGPBDAT |=(1<<5);//灭
   delay(1000);
}
/*************************************************
Function name: Wait_key()
Parameter    : void
Description : 按键等待函数
Return : 返回1表示有按键动作,返回0表示无按键
Argument     : void
Autor & date : Daniel
**************************************************/
int Wait_key(void)
{
   if(!(rGPGDAT & 0x1))//当有键按下时,port上为低电平.
   delay(200);
   if(!(rGPGDAT & 0x1)) /*为什么又要判断?*/    //去抖动
     {
      while(!(rGPGDAT & 0x1));//等待按键放开
      return 1;
     }
    else
      return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值