- /*---------------------------------------------------------------------------------------------------------*/
- /* */
- /* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
- /* */
- /*---------------------------------------------------------------------------------------------------------*/
- #include <stdio.h>
- #include "NUC1xx.h"
- #include "Driver\DrvGPIO.h"
- #include "Driver\DrvSYS.h"
- #ifndef SYSTEM
- #define SYSTEM (0) //(1)
- #endif
- /*************************************************************************************
- ** Function name: delay_loop
- ** Descriptions: 延时子程序
- ** input parameters: 无
- ** output parameters: 无
- ** Returned value: 无
- *************************************************************************************/
- void delay_loop(void)
- {
- uint32_t i,j;
- for(i=800;i>0;i--)
- for(j=500;j>0;j--);
- }
- /*************************************************************************************
- ** Function name:
- ** Descriptions:
- **
- ** input parameters:
- ** output parameters:
- ** Returned value:
- *************************************************************************************/
- #define delay_1S() { delay_loop(); delay_loop(); delay_loop();}
- uint32_t temp;
- int main (void)
- {
- /* SYSCLK =>12Mhz*/ //外部晶振使能
- UNLOCKREG();
- SYSCLK->PWRCON.XTL12M_EN = 1;
- LOCKREG();
- #if SYSTEM
- GPIOA->PMD.PMD0=1;
- GPIOA->PMD.PMD1=1;
- GPIOA->PMD.PMD2=1;
- GPIOA->PMD.PMD3=1;
- GPIOA->PMD.PMD4=1;
- GPIOA->PMD.PMD5=1;
- GPIOA->PMD.PMD6=1;
- GPIOA->PMD.PMD7=1;
- GPIOA->PMD.PMD8=1;
- #else
- DrvGPIO_Open( E_GPA, 0, E_IO_OUTPUT );
- DrvGPIO_Open( E_GPA, 1, E_IO_OUTPUT );
- 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_GPA, 6, E_IO_OUTPUT );
- DrvGPIO_Open( E_GPA, 7, E_IO_OUTPUT );
- DrvGPIO_Open( E_GPA, 8, E_IO_OUTPUT );
- #endif
- while(1)
- {
- #if SYSTEM
- GPIOA->DOUT&=~(1<<0);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<1);
- GPIOA->DOUT|=(1<<0);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<2);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<0);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<3);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<0);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<4);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<0);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<5);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<0);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<6);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<0);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<7);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<0);
- GPIOA->DOUT|=(1<<8);
- delay_1S();
- GPIOA->DOUT&=~(1<<8);
- GPIOA->DOUT|=(1<<1);
- GPIOA->DOUT|=(1<<2);
- GPIOA->DOUT|=(1<<3);
- GPIOA->DOUT|=(1<<4);
- GPIOA->DOUT|=(1<<5);
- GPIOA->DOUT|=(1<<6);
- GPIOA->DOUT|=(1<<7);
- GPIOA->DOUT|=(1<<0);
- delay_1S();
- #else
- DrvGPIO_ClrBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,0);
- DrvGPIO_SetBit(E_GPA,8);
- delay_1S();
- DrvGPIO_ClrBit(E_GPA,8);
- DrvGPIO_SetBit(E_GPA,1);
- DrvGPIO_SetBit(E_GPA,2);
- DrvGPIO_SetBit(E_GPA,3);
- DrvGPIO_SetBit(E_GPA,4);
- DrvGPIO_SetBit(E_GPA,5);
- DrvGPIO_SetBit(E_GPA,6);
- DrvGPIO_SetBit(E_GPA,7);
- DrvGPIO_SetBit(E_GPA,0);
- delay_1S();
- #endif
- }
- }
- /*
- 作者:21IC_strang
- 2011-08-15
- 实现功能:九路流水灯
- 接线方式: 主板 显示板
- PA.0----LED1
- PA.1----LED2
- PA.2----LED3
- PA.3----LED4
- PA.4----LED5
- PA.5----LED6
- PA.6----LED7
- PA.7----LED8
- PA.8----LED9
- VDD ----12V
- GND ----GND
- */
[local]1[/local] 九路流水灯
显示板原理图
采用条件编译,实现两种GPIO控制模式。