/****************************************************************************
* File:Main.C
* 功能:计数器,通过两个按键来控制加减计数器,并输出数码管显示.。
****************************************************************************/
#include "config.h"
#define CON 0x00ffffff //控制P0.0~P0.23作为输出引脚
#define s2 0x80000000
/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void delay(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<250; i++);
}
void day (int nos ,int wet )
{ int b,c;
while(nos>=0)
{
b=nos/0x0a;
c=nos%0x0a;
IO0CLR=CON;
IO0SET=b<<12|c<<8 | b<<4 |c ;
if(nos>=0x0005)
IO0SET=0x0C0000;
else
IO0SET=0x0a0000;
delay(1000);
nos--;
}
while(wet>=0)
{
b=wet/0x0a;
c=wet%0x0a;
IO0CLR=CON; //??复位???
IO0SET=b<<12|c<<8 | b<<4 |c ;
if(wet>=0x0005)
IO0SET=0x210000;
else
IO0SET=0x110000;
delay(1000);
wet--;
}
}
void night()
{
IO0SET=0x120000;
delay(1000);
IO0CLR=CON;
delay(1000);
}
/****************************************************************************
* 名称:main()
* 功能:控制计数器加减计数
****************************************************************************/
int main(void)
{
PINSEL0=0;//P0.0-15为GPIO
PINSEL1=0;//P0.16-31为GPIO
IO0DIR=CON;
IO0CLR=CON;
if((IO0PIN&s2)==s2)
day(0x1e,0x14);
else
night();
}