标题: 请教高手 [打印本页]

作者: shenxinghong168    时间: 2013-3-16 11:31
标题: 请教高手
一个简单的ARM指令,却实现不了如下功能:按下键(p0.20),实现led灯闪三下,松开键,灯灭,采用查询方式,不采用中断方式,代码如下:

********************************************************************************************************/
#include "config.h"

#define ledcon  (0xfu<<28)
#define beepcon (0x1<<7)
#define keycon  (0x1<<20)

///////////////////////////////////////////////////////////
void delay(uint32 delaytime)
{
uint32 i;
for (;delaytime>0;delaytime--)
    {for(i=5000;i>0;i--);}
}

///////////////////////////////////////////////////////////
void ledon()
{
    IO2SET=ledcon;
    delay(10);
}

//////////////////////////////////////////////////////////
void ledoff()
{
    IO2CLR=ledcon;
    delay(10);
}

///////////////////////////////////////////////////////////
void beepon()
{
    IO0SET=beepcon;
    delay(10);
}

///////////////////////////////////////////////////////////
void beepoff()
{
    IO0CLR=beepcon;
    delay(10);
}

//////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////
int main (void)
{
uint8 nCount;

//P0.20 GPIO
PINSEL1=PINSEL1 & 0xfffffcff;

while (1)
{
    if ((IO0PIN & keycon)!=0)
    {
      for(nCount=3;nCount>0;nCount--)
      {
        ledon();
        //ledoff();     //如果允许执行此语句,则开机一复位灯就一直亮,如果屏蔽此语句,则按下键灯亮,松键灯灭,不知是何原因,请高手指点?
      }
    }
    else
    {
       ledoff();
   }
   
}

    return 0;
}







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1