本帖最后由 zhoubojay 于 2011-10-20 20:40 编辑
参考论坛上的自己改动一下,初学可以看看 /*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2011 Nuvoton Technology Corp. All rights reserved. */
/* 按下KEY2键,按一下第一个lED亮,按两下第二个亮,第一个灭,按第5下全亮,第6下全灭 */
/*---------------------------------------------------------------------------------------------------------*/
#include<stdio.h>
#include"NUC1XX.h"
//#include"variables.h"
#include"Driver\DrvSYS.h"
#include"Driver\DrvGPIO.h"
void Set_System(void);
void RCC_Configuration(void);
void GPIO_Configuration(void);
void delay_ms(uint32_t count);
void Set_System(void)
{
RCC_Configuration(); //配置系统时钟
GPIO_Configuration(); //配置GPIO
}
void RCC_Configuration(void)
{
UNLOCKREG();
DrvSYS_SetOscCtrl(E_SYS_XTL12M,1);
delay_ms(100);
}
void GPIO_Configuration(void)
{
DrvGPIO_Open(E_GPA,2,E_IO_OUTPUT);
DrvGPIO_Open(E_GPA,3,E_IO_OUTPUT);
DrvGPIO_Open(E_GPA,4,E_IO_OUTPUT);
DrvGPIO_Open(E_GPA,5,E_IO_OUTPUT);
DrvGPIO_Open(E_GPB,14,E_IO_INPUT);
DrvGPIO_Open(E_GPB,15,E_IO_INPUT);
}
void delay_ms(uint32_t count)
{
uint32_t i,j;
for(i=count;i>0;i--)
for(j=2395;j>0;j--);
}
int main(void)
{
uint8_t flag=0;
uint8_t count=0;
Set_System();
while(1)
{
if(DrvGPIO_GetBit(E_GPB,14)==0)
delay_ms(30);
if(DrvGPIO_GetBit(E_GPB,14)==0)
flag=1;
if(flag)
{
if(DrvGPIO_GetBit(E_GPB,14)==1)
{
flag=0;
count++;
}
}
if(count>=7) count=1;
switch(count)
{
case 1:
DrvGPIO_ClrBit(E_GPA,2); break;
case 2: DrvGPIO_ClrBit(E_GPA,3);
DrvGPIO_SetBit(E_GPA,2); break;
case 3: DrvGPIO_ClrBit(E_GPA,4);
DrvGPIO_SetBit(E_GPA,3); break;
case 4: DrvGPIO_ClrBit(E_GPA,5);
DrvGPIO_SetBit(E_GPA,4); break;
case 5:
DrvGPIO_ClrBit(E_GPA,2);
DrvGPIO_ClrBit(E_GPA,3);
DrvGPIO_ClrBit(E_GPA,4);
DrvGPIO_ClrBit(E_GPA,5);
break;
case 6:
DrvGPIO_SetBit(E_GPA,2);
DrvGPIO_SetBit(E_GPA,3);
DrvGPIO_SetBit(E_GPA,4);
DrvGPIO_SetBit(E_GPA,5);
break;
default:break;
}
}
}
|