本帖最后由 缥缈九哥 于 2012-9-14 12:09 编辑
最笨的LED灯渐亮渐暗实现方式,利用软件延时来实现。
#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
#define zq 250
unsigned int l,a;
void delay_loop(void)
{
unsigned char j;
for(j=0;j<100;j++);
}
/*---------------------------------------------------------------------------------------------------------*/
/* MAIN function */
/*---------------------------------------------------------------------------------------------------------*/
int main (void)
{
/* SYSCLK =>12Mhz*/
UNLOCKREG();
SYSCLK->;PWRCON.XTL12M_EN = 1;
LOCKREG();
/*set GPI0 output*/
DrvGPIO_Open(E_GPA,2, E_IO_OUTPUT);
l=zq;
a=0;
while(1)
{
unsigned int m,n,k;
while(l)
{
m=l;
n=a;
if(l>zq/4)
k=1;
else
k=255;
for(;k;k--)
{
DrvGPIO_ClrBit(E_GPA,2);
for(;m;m--)
delay_loop();
DrvGPIO_SetBit(E_GPA,2);
for(;n;n--)
delay_loop();
}
l--;
a=zq-l;
}
for(k=10000;k;k--)
delay_loop();
while(a)
{
m=l;
n=a;
if(l>zq/4)
k=1;
else
k=255;
for(;k;k--)
{
DrvGPIO_ClrBit(E_GPA,2);
for(;m;m--)
delay_loop();
DrvGPIO_SetBit(E_GPA,2);
for(;n;n--)
delay_loop();
}
a--;
l=zq-a;
}
}
} |