| 本帖最后由 缥缈九哥 于 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;
 }
 
 
 }
 }
 |