[菜农助学交流] GPIO+九路流水灯实验

[复制链接]
 楼主| strang 发表于 2011-8-21 00:18 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /* */
  3. /* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
  4. /* */
  5. /*---------------------------------------------------------------------------------------------------------*/
  6. #include <stdio.h>
  7. #include "NUC1xx.h"
  8. #include "Driver\DrvGPIO.h"
  9. #include "Driver\DrvSYS.h"

  10. #ifndef SYSTEM
  11. #define SYSTEM (0) //(1)
  12. #endif
  13. /*************************************************************************************
  14. ** Function name: delay_loop
  15. ** Descriptions: 延时子程序
  16. ** input parameters: 无
  17. ** output parameters: 无
  18. ** Returned value: 无
  19. *************************************************************************************/
  20. void delay_loop(void)
  21. {
  22. uint32_t i,j;
  23. for(i=800;i>0;i--)
  24. for(j=500;j>0;j--);

  25. }

  26. /*************************************************************************************
  27. ** Function name:
  28. ** Descriptions:
  29. **
  30. ** input parameters:
  31. ** output parameters:
  32. ** Returned value:
  33. *************************************************************************************/
  34. #define delay_1S() { delay_loop(); delay_loop(); delay_loop();}
  35. uint32_t temp;
  36. int main (void)
  37. {
  38. /* SYSCLK =>12Mhz*/ //外部晶振使能
  39. UNLOCKREG();
  40. SYSCLK->PWRCON.XTL12M_EN = 1;
  41. LOCKREG();
  42. #if SYSTEM
  43. GPIOA->PMD.PMD0=1;
  44. GPIOA->PMD.PMD1=1;
  45. GPIOA->PMD.PMD2=1;
  46. GPIOA->PMD.PMD3=1;
  47. GPIOA->PMD.PMD4=1;
  48. GPIOA->PMD.PMD5=1;
  49. GPIOA->PMD.PMD6=1;
  50. GPIOA->PMD.PMD7=1;
  51. GPIOA->PMD.PMD8=1;
  52. #else
  53. DrvGPIO_Open( E_GPA, 0, E_IO_OUTPUT );
  54. DrvGPIO_Open( E_GPA, 1, E_IO_OUTPUT );
  55. DrvGPIO_Open( E_GPA, 2, E_IO_OUTPUT );
  56. DrvGPIO_Open( E_GPA, 3, E_IO_OUTPUT );
  57. DrvGPIO_Open( E_GPA, 4, E_IO_OUTPUT );
  58. DrvGPIO_Open( E_GPA, 5, E_IO_OUTPUT );
  59. DrvGPIO_Open( E_GPA, 6, E_IO_OUTPUT );
  60. DrvGPIO_Open( E_GPA, 7, E_IO_OUTPUT );
  61. DrvGPIO_Open( E_GPA, 8, E_IO_OUTPUT );
  62. #endif
  63. while(1)
  64. {
  65. #if SYSTEM
  66. GPIOA->DOUT&=~(1<<0);
  67. GPIOA->DOUT|=(1<<1);
  68. GPIOA->DOUT|=(1<<2);
  69. GPIOA->DOUT|=(1<<3);
  70. GPIOA->DOUT|=(1<<4);
  71. GPIOA->DOUT|=(1<<5);
  72. GPIOA->DOUT|=(1<<6);
  73. GPIOA->DOUT|=(1<<7);
  74. GPIOA->DOUT|=(1<<8);
  75. delay_1S();
  76. GPIOA->DOUT&=~(1<<1);
  77. GPIOA->DOUT|=(1<<0);
  78. GPIOA->DOUT|=(1<<2);
  79. GPIOA->DOUT|=(1<<3);
  80. GPIOA->DOUT|=(1<<4);
  81. GPIOA->DOUT|=(1<<5);
  82. GPIOA->DOUT|=(1<<6);
  83. GPIOA->DOUT|=(1<<7);
  84. GPIOA->DOUT|=(1<<8);
  85. delay_1S();
  86. GPIOA->DOUT&=~(1<<2);
  87. GPIOA->DOUT|=(1<<1);
  88. GPIOA->DOUT|=(1<<0);
  89. GPIOA->DOUT|=(1<<3);
  90. GPIOA->DOUT|=(1<<4);
  91. GPIOA->DOUT|=(1<<5);
  92. GPIOA->DOUT|=(1<<6);
  93. GPIOA->DOUT|=(1<<7);
  94. GPIOA->DOUT|=(1<<8);
  95. delay_1S();
  96. GPIOA->DOUT&=~(1<<3);
  97. GPIOA->DOUT|=(1<<1);
  98. GPIOA->DOUT|=(1<<2);
  99. GPIOA->DOUT|=(1<<0);
  100. GPIOA->DOUT|=(1<<4);
  101. GPIOA->DOUT|=(1<<5);
  102. GPIOA->DOUT|=(1<<6);
  103. GPIOA->DOUT|=(1<<7);
  104. GPIOA->DOUT|=(1<<8);
  105. delay_1S();
  106. GPIOA->DOUT&=~(1<<4);
  107. GPIOA->DOUT|=(1<<1);
  108. GPIOA->DOUT|=(1<<2);
  109. GPIOA->DOUT|=(1<<3);
  110. GPIOA->DOUT|=(1<<0);
  111. GPIOA->DOUT|=(1<<5);
  112. GPIOA->DOUT|=(1<<6);
  113. GPIOA->DOUT|=(1<<7);
  114. GPIOA->DOUT|=(1<<8);
  115. delay_1S();
  116. GPIOA->DOUT&=~(1<<5);
  117. GPIOA->DOUT|=(1<<1);
  118. GPIOA->DOUT|=(1<<2);
  119. GPIOA->DOUT|=(1<<3);
  120. GPIOA->DOUT|=(1<<4);
  121. GPIOA->DOUT|=(1<<0);
  122. GPIOA->DOUT|=(1<<6);
  123. GPIOA->DOUT|=(1<<7);
  124. GPIOA->DOUT|=(1<<8);
  125. delay_1S();
  126. GPIOA->DOUT&=~(1<<6);
  127. GPIOA->DOUT|=(1<<1);
  128. GPIOA->DOUT|=(1<<2);
  129. GPIOA->DOUT|=(1<<3);
  130. GPIOA->DOUT|=(1<<4);
  131. GPIOA->DOUT|=(1<<5);
  132. GPIOA->DOUT|=(1<<0);
  133. GPIOA->DOUT|=(1<<7);
  134. GPIOA->DOUT|=(1<<8);
  135. delay_1S();
  136. GPIOA->DOUT&=~(1<<7);
  137. GPIOA->DOUT|=(1<<1);
  138. GPIOA->DOUT|=(1<<2);
  139. GPIOA->DOUT|=(1<<3);
  140. GPIOA->DOUT|=(1<<4);
  141. GPIOA->DOUT|=(1<<5);
  142. GPIOA->DOUT|=(1<<6);
  143. GPIOA->DOUT|=(1<<0);
  144. GPIOA->DOUT|=(1<<8);
  145. delay_1S();
  146. GPIOA->DOUT&=~(1<<8);
  147. GPIOA->DOUT|=(1<<1);
  148. GPIOA->DOUT|=(1<<2);
  149. GPIOA->DOUT|=(1<<3);
  150. GPIOA->DOUT|=(1<<4);
  151. GPIOA->DOUT|=(1<<5);
  152. GPIOA->DOUT|=(1<<6);
  153. GPIOA->DOUT|=(1<<7);
  154. GPIOA->DOUT|=(1<<0);
  155. delay_1S();
  156. #else
  157. DrvGPIO_ClrBit(E_GPA,0);
  158. DrvGPIO_SetBit(E_GPA,1);
  159. DrvGPIO_SetBit(E_GPA,2);
  160. DrvGPIO_SetBit(E_GPA,3);
  161. DrvGPIO_SetBit(E_GPA,4);
  162. DrvGPIO_SetBit(E_GPA,5);
  163. DrvGPIO_SetBit(E_GPA,6);
  164. DrvGPIO_SetBit(E_GPA,7);
  165. DrvGPIO_SetBit(E_GPA,8);
  166. delay_1S();
  167. DrvGPIO_ClrBit(E_GPA,1);
  168. DrvGPIO_SetBit(E_GPA,0);
  169. DrvGPIO_SetBit(E_GPA,2);
  170. DrvGPIO_SetBit(E_GPA,3);
  171. DrvGPIO_SetBit(E_GPA,4);
  172. DrvGPIO_SetBit(E_GPA,5);
  173. DrvGPIO_SetBit(E_GPA,6);
  174. DrvGPIO_SetBit(E_GPA,7);
  175. DrvGPIO_SetBit(E_GPA,8);
  176. delay_1S();
  177. DrvGPIO_ClrBit(E_GPA,2);
  178. DrvGPIO_SetBit(E_GPA,1);
  179. DrvGPIO_SetBit(E_GPA,0);
  180. DrvGPIO_SetBit(E_GPA,3);
  181. DrvGPIO_SetBit(E_GPA,4);
  182. DrvGPIO_SetBit(E_GPA,5);
  183. DrvGPIO_SetBit(E_GPA,6);
  184. DrvGPIO_SetBit(E_GPA,7);
  185. DrvGPIO_SetBit(E_GPA,8);
  186. delay_1S();
  187. DrvGPIO_ClrBit(E_GPA,3);
  188. DrvGPIO_SetBit(E_GPA,1);
  189. DrvGPIO_SetBit(E_GPA,2);
  190. DrvGPIO_SetBit(E_GPA,0);
  191. DrvGPIO_SetBit(E_GPA,4);
  192. DrvGPIO_SetBit(E_GPA,5);
  193. DrvGPIO_SetBit(E_GPA,6);
  194. DrvGPIO_SetBit(E_GPA,7);
  195. DrvGPIO_SetBit(E_GPA,8);
  196. delay_1S();
  197. DrvGPIO_ClrBit(E_GPA,4);
  198. DrvGPIO_SetBit(E_GPA,1);
  199. DrvGPIO_SetBit(E_GPA,2);
  200. DrvGPIO_SetBit(E_GPA,3);
  201. DrvGPIO_SetBit(E_GPA,0);
  202. DrvGPIO_SetBit(E_GPA,5);
  203. DrvGPIO_SetBit(E_GPA,6);
  204. DrvGPIO_SetBit(E_GPA,7);
  205. DrvGPIO_SetBit(E_GPA,8);
  206. delay_1S();
  207. DrvGPIO_ClrBit(E_GPA,5);
  208. DrvGPIO_SetBit(E_GPA,1);
  209. DrvGPIO_SetBit(E_GPA,2);
  210. DrvGPIO_SetBit(E_GPA,3);
  211. DrvGPIO_SetBit(E_GPA,4);
  212. DrvGPIO_SetBit(E_GPA,0);
  213. DrvGPIO_SetBit(E_GPA,6);
  214. DrvGPIO_SetBit(E_GPA,7);
  215. DrvGPIO_SetBit(E_GPA,8);
  216. delay_1S();
  217. DrvGPIO_ClrBit(E_GPA,6);
  218. DrvGPIO_SetBit(E_GPA,1);
  219. DrvGPIO_SetBit(E_GPA,2);
  220. DrvGPIO_SetBit(E_GPA,3);
  221. DrvGPIO_SetBit(E_GPA,4);
  222. DrvGPIO_SetBit(E_GPA,5);
  223. DrvGPIO_SetBit(E_GPA,0);
  224. DrvGPIO_SetBit(E_GPA,7);
  225. DrvGPIO_SetBit(E_GPA,8);
  226. delay_1S();
  227. DrvGPIO_ClrBit(E_GPA,7);
  228. DrvGPIO_SetBit(E_GPA,1);
  229. DrvGPIO_SetBit(E_GPA,2);
  230. DrvGPIO_SetBit(E_GPA,3);
  231. DrvGPIO_SetBit(E_GPA,4);
  232. DrvGPIO_SetBit(E_GPA,5);
  233. DrvGPIO_SetBit(E_GPA,6);
  234. DrvGPIO_SetBit(E_GPA,0);
  235. DrvGPIO_SetBit(E_GPA,8);
  236. delay_1S();
  237. DrvGPIO_ClrBit(E_GPA,8);
  238. DrvGPIO_SetBit(E_GPA,1);
  239. DrvGPIO_SetBit(E_GPA,2);
  240. DrvGPIO_SetBit(E_GPA,3);
  241. DrvGPIO_SetBit(E_GPA,4);
  242. DrvGPIO_SetBit(E_GPA,5);
  243. DrvGPIO_SetBit(E_GPA,6);
  244. DrvGPIO_SetBit(E_GPA,7);
  245. DrvGPIO_SetBit(E_GPA,0);
  246. delay_1S();
  247. #endif
  248. }
  249. }
  250. /*

  251. 作者:21IC_strang

  252. 2011-08-15

  253. 实现功能:九路流水灯

  254. 接线方式: 主板 显示板
  255. PA.0----LED1
  256. PA.1----LED2
  257. PA.2----LED3
  258. PA.3----LED4
  259. PA.4----LED5
  260. PA.5----LED6
  261. PA.6----LED7
  262. PA.7----LED8
  263. PA.8----LED9
  264. VDD ----12V
  265. GND ----GND

  266. */

[local]1[/local]  九路流水灯
  显示板原理图
  

采用条件编译,实现两种GPIO控制模式。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| strang 发表于 2011-8-21 00:42 | 显示全部楼层
[local]1[/local]

网速慢的要死,崩溃中.......
 楼主| strang 发表于 2011-8-21 01:03 | 显示全部楼层


网速慢的要死,崩溃中.......

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
mbydyjj 发表于 2011-9-30 10:42 | 显示全部楼层
顶你
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:技术工程师
简介:

48

主题

3253

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部
认证:技术工程师
简介:

48

主题

3253

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部