- #include"nuc1xx.h"
- #include"drvgpio.h"
- #include"drvtimer.h"
- int n;
- void delay(int i) //延时小程序
- {
- unsigned int j,k;
- for(j=0;j<i;j++)
- for(k=0;k<600;k++);
- }
- void deng1() //1 2 3 4(点亮方式)
- {
- DrvGPIO_ClrBit(E_GPA,2);delay(200);
- DrvGPIO_SetBit(E_GPA,2);delay(200);
- DrvGPIO_ClrBit(E_GPA,3);delay(200);
- DrvGPIO_SetBit(E_GPA,3);delay(200);
- DrvGPIO_ClrBit(E_GPA,4);delay(200);
- DrvGPIO_SetBit(E_GPA,4);delay(200);
- DrvGPIO_ClrBit(E_GPA,5);delay(200);
- DrvGPIO_SetBit(E_GPA,5);delay(200);
- }
- void deng2() //1 12 123 1234 234 34 4
- {
- DrvGPIO_ClrBit(E_GPA,2);
- delay(600);
- DrvGPIO_ClrBit(E_GPA,3);
- delay(600);
- DrvGPIO_ClrBit(E_GPA,4);
- delay(600);
- DrvGPIO_ClrBit(E_GPA,5);
- delay(600);
- DrvGPIO_SetBit(E_GPA,2);
- delay(600);
- DrvGPIO_SetBit(E_GPA,3);
- delay(600);
- DrvGPIO_SetBit(E_GPA,4);
- delay(600);
- DrvGPIO_SetBit(E_GPA,5);
- delay(600);
- }
- void deng3() //24 13
- {
- DrvGPIO_ClrBit(E_GPA,2);
- DrvGPIO_ClrBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,5);
- delay(800);
- DrvGPIO_ClrBit(E_GPA,3);
- DrvGPIO_ClrBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,4);
- delay(800);
- }
- void deng4() //14 23
- {
- DrvGPIO_ClrBit(E_GPA,2);
- DrvGPIO_ClrBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- delay(800);
- DrvGPIO_ClrBit(E_GPA,3);
- DrvGPIO_ClrBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,5);
- delay(800);
- }
- void deng5() //23 45
- {
- DrvGPIO_ClrBit(E_GPA,2);
- DrvGPIO_ClrBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- delay(800);
- DrvGPIO_ClrBit(E_GPA,4);
- DrvGPIO_ClrBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- delay(800);
- }
- void deng6() // 1 4 2 3
- {
- DrvGPIO_ClrBit(E_GPA,2);delay(200);
- DrvGPIO_SetBit(E_GPA,2);delay(200);
- DrvGPIO_ClrBit(E_GPA,5);delay(200);
- DrvGPIO_SetBit(E_GPA,5);delay(200);
- DrvGPIO_ClrBit(E_GPA,3);delay(200);
- DrvGPIO_SetBit(E_GPA,3);delay(200);
- DrvGPIO_ClrBit(E_GPA,4);delay(200);
- DrvGPIO_SetBit(E_GPA,4);delay(200);
- }
- void EINT0Callback(void) //按键中断的n++程序,n的值不同,闪灯的小程序不同。
- {
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- n++;
- if(n>5)
- n=0;
- }
- main()
- {
- DrvGPIO_Open(E_GPA,2,E_IO_OUTPUT); //配置GPA2345为输出口
- 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_EnableEINT0(E_IO_FALLING,E_MODE_EDGE,EINT0Callback); //使能外部中断0
- DrvGPIO_EnableDebounce(E_GPB,14); //使能中断防反跳模式
- while(1) // 亮灯的循环
- {
- switch(n)
- {
- case 0:deng1();break;
- case 1:deng2();break;
- case 2:deng3();break;
- case 3:deng4();break;
- case 4:deng5();break;
- case 5:deng6();break;
- default :break;
- }
- }
- }