[DemoCode下载] N76E003的GPIO操作

[复制链接]
4262|11
 楼主| 稳稳の幸福 发表于 2017-3-17 20:35 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 GPIO demo code
  14. //***********************************************************************************************************

  15. #include <stdio.h>
  16. #include "N76E003.h"
  17. #include "Define.h"
  18. #include "Common.h"
  19. #include "Delay.h"
  20. #include "SFR_Macro.h"
  21. #include "Function_define.h"


  22. //*****************  The Following is in define in Fucntion_define.h  ***************************
  23. //****** Always include Function_define.h call the define you want, detail see main(void) *******
  24. //***********************************************************************************************
  25. #if 0
  26. ////------------------- Define Port as Quasi mode  -------------------
  27. //#define P00_Quasi_Mode                                P0M1&=~SET_BIT0;P0M2&=~SET_BIT0
  28. //#define P01_Quasi_Mode                                P0M1&=~SET_BIT1;P0M2&=~SET_BIT1
  29. //#define P02_Quasi_Mode                                P0M1&=~SET_BIT2;P0M2&=~SET_BIT2
  30. //#define P03_Quasi_Mode                                P0M1&=~SET_BIT3;P0M2&=~SET_BIT3
  31. //#define P04_Quasi_Mode                                P0M1&=~SET_BIT4;P0M2&=~SET_BIT4
  32. //#define P05_Quasi_Mode                                P0M1&=~SET_BIT5;P0M2&=~SET_BIT5
  33. //#define P06_Quasi_Mode                                P0M1&=~SET_BIT6;P0M2&=~SET_BIT6
  34. //#define P07_Quasi_Mode                                P0M1&=~SET_BIT7;P0M2&=~SET_BIT7
  35. //#define P10_Quasi_Mode                                P1M1&=~SET_BIT0;P1M2&=~SET_BIT0
  36. //#define P11_Quasi_Mode                                P1M1&=~SET_BIT1;P1M2&=~SET_BIT1
  37. //#define P12_Quasi_Mode                                P1M1&=~SET_BIT2;P1M2&=~SET_BIT2
  38. //#define P13_Quasi_Mode                                P1M1&=~SET_BIT3;P1M2&=~SET_BIT3
  39. //#define P14_Quasi_Mode                                P1M1&=~SET_BIT4;P1M2&=~SET_BIT4
  40. //#define P15_Quasi_Mode                                P1M1&=~SET_BIT5;P1M2&=~SET_BIT5
  41. //#define P16_Quasi_Mode                                P1M1&=~SET_BIT6;P1M2&=~SET_BIT6
  42. //#define P17_Quasi_Mode                                P1M1&=~SET_BIT7;P1M2&=~SET_BIT7
  43. //#define P20_Quasi_Mode                                P2M1&=~SET_BIT0;P2M2&=~SET_BIT0
  44. //#define P30_Quasi_Mode                                P3M1&=~SET_BIT0;P3M2&=~SET_BIT0
  45. ////------------------- Define Port as Push Pull mode -------------------
  46. //#define P00_PushPull_Mode                        P0M1|=SET_BIT0;P0M2&=~SET_BIT0
  47. //#define P01_PushPull_Mode                        P0M1|=SET_BIT1;P0M2&=~SET_BIT1
  48. //#define P02_PushPull_Mode                        P0M1&=~SET_BIT2;P0M2|=SET_BIT2
  49. //#define P03_PushPull_Mode                        P0M1&=~SET_BIT3;P0M2|=SET_BIT3
  50. //#define P04_PushPull_Mode                        P0M1&=~SET_BIT4;P0M2|=SET_BIT4
  51. //#define P05_PushPull_Mode                        P0M1&=~SET_BIT5;P0M2|=SET_BIT5
  52. //#define P06_PushPull_Mode                        P0M1&=~SET_BIT6;P0M2|=SET_BIT6
  53. //#define P07_PushPull_Mode                        P0M1&=~SET_BIT7;P0M2|=SET_BIT7
  54. //#define P10_PushPull_Mode                        P1M1&=~SET_BIT0;P1M2|=SET_BIT0
  55. //#define P11_PushPull_Mode                        P1M1&=~SET_BIT1;P1M2|=SET_BIT1
  56. //#define P12_PushPull_Mode                        P1M1&=~SET_BIT2;P1M2|=SET_BIT2
  57. //#define P13_PushPull_Mode                        P1M1&=~SET_BIT3;P1M2|=SET_BIT3
  58. //#define P14_PushPull_Mode                        P1M1&=~SET_BIT4;P1M2|=SET_BIT4
  59. //#define P15_PushPull_Mode                        P1M1&=~SET_BIT5;P1M2|=SET_BIT5
  60. //#define P16_PushPull_Mode                        P1M1&=~SET_BIT6;P1M2|=SET_BIT6
  61. //#define P17_PushPull_Mode                        P1M1&=~SET_BIT7;P1M2|=SET_BIT7
  62. //#define P20_PushPull_Mode                        P2M1&=~SET_BIT0;P2M2|=SET_BIT0
  63. //#define P30_PushPull_Mode                        P3M1&=~SET_BIT0;P3M2|=SET_BIT0
  64. ////------------------- Define Port as Input Only mode -------------------
  65. //#define P00_Input_Mode                                P0M1|=SET_BIT0;P0M2&=~SET_BIT0
  66. //#define P01_Input_Mode                                P0M1|=SET_BIT1;P0M2&=~SET_BIT1
  67. //#define P02_Input_Mode                                P0M1|=SET_BIT2;P0M2&=~SET_BIT2
  68. //#define P03_Input_Mode                                P0M1|=SET_BIT3;P0M2&=~SET_BIT3
  69. //#define P04_Input_Mode                                P0M1|=SET_BIT4;P0M2&=~SET_BIT4
  70. //#define P05_Input_Mode                                P0M1|=SET_BIT5;P0M2&=~SET_BIT5
  71. //#define P06_Input_Mode                                P0M1|=SET_BIT6;P0M2&=~SET_BIT6
  72. //#define P07_Input_Mode                                P0M1|=SET_BIT7;P0M2&=~SET_BIT7
  73. //#define P10_Input_Mode                                P1M1|=SET_BIT0;P1M2&=~SET_BIT0
  74. //#define P11_Input_Mode                                P1M1|=SET_BIT1;P1M2&=~SET_BIT1
  75. //#define P12_Input_Mode                                P1M1|=SET_BIT2;P1M2&=~SET_BIT2
  76. //#define P13_Input_Mode                                P1M1|=SET_BIT3;P1M2&=~SET_BIT3
  77. //#define P14_Input_Mode                                P1M1|=SET_BIT4;P1M2&=~SET_BIT4
  78. //#define P15_Input_Mode                                P1M1|=SET_BIT5;P1M2&=~SET_BIT5
  79. //#define P16_Input_Mode                                P1M1|=SET_BIT6;P1M2&=~SET_BIT6
  80. //#define P17_Input_Mode                                P1M1|=SET_BIT7;P1M2&=~SET_BIT7
  81. //#define P20_Input_Mode                                P2M1|=SET_BIT0;P2M2&=~SET_BIT0
  82. //#define P30_Input_Mode                                P3M1|=SET_BIT0;P3M2&=~SET_BIT0
  83. ////-------------------Define Port as Open Drain mode -------------------
  84. //#define P00_OpenDrain_Mode                P0M1|=SET_BIT0;P0M2|=SET_BIT0
  85. //#define P01_OpenDrain_Mode                P0M1|=SET_BIT1;P0M2|=SET_BIT1
  86. //#define P02_OpenDrain_Mode                P0M1|=SET_BIT2;P0M2|=SET_BIT2
  87. //#define P03_OpenDrain_Mode                P0M1|=SET_BIT3;P0M2|=SET_BIT3
  88. //#define P04_OpenDrain_Mode                P0M1|=SET_BIT4;P0M2|=SET_BIT4
  89. //#define P05_OpenDrain_Mode                P0M1|=SET_BIT5;P0M2|=SET_BIT5
  90. //#define P06_OpenDrain_Mode                P0M1|=SET_BIT6;P0M2|=SET_BIT6
  91. //#define P07_OpenDrain_Mode                P0M1|=SET_BIT7;P0M2|=SET_BIT7
  92. //#define P10_OpenDrain_Mode                P1M1|=SET_BIT0;P1M2|=SET_BIT0
  93. //#define P11_OpenDrain_Mode                P1M1|=SET_BIT1;P1M2|=SET_BIT1
  94. //#define P12_OpenDrain_Mode                P1M1|=SET_BIT2;P1M2|=SET_BIT2
  95. //#define P13_OpenDrain_Mode                P1M1|=SET_BIT3;P1M2|=SET_BIT3
  96. //#define P14_OpenDrain_Mode                P1M1|=SET_BIT4;P1M2|=SET_BIT4
  97. //#define P15_OpenDrain_Mode                P1M1|=SET_BIT5;P1M2|=SET_BIT5
  98. //#define P16_OpenDrain_Mode                P1M1|=SET_BIT6;P1M2|=SET_BIT6
  99. //#define P17_OpenDrain_Mode                P1M1|=SET_BIT7;P1M2|=SET_BIT7
  100. //#define P20_OpenDrain_Mode                P2M1|=SET_BIT0;P2M2|=SET_BIT0
  101. //#define P30_OpenDrain_Mode                P3M1|=SET_BIT0;P3M2|=SET_BIT0
  102. ////--------- Define all port as quasi mode ---------
  103. //#define Set_All_GPIO_Quasi_Mode                        P0M1=0;P0M1=0;P1M1=0;P1M2=0;P2M1=0;P2M2=0;P3M1=0;P3M2=0
  104. #endif

  105. /*------------------------------------------------
  106. The main C function.  Program execution starts
  107. here after stack initialization.
  108. ------------------------------------------------*/

  109. void main (void)
  110. {
  111.         Set_All_GPIO_Quasi_Mode;                                        // Define in Function_define.h
  112.         InitialUART0_Timer1(115200);
  113.         set_CLOEN;  
  114.          
  115.   while(1)
  116.   {
  117.         clr_GPIO1;                                                                                                // Tiny board GPIO1 LED define in Common.h
  118.         Timer3_Delay1ms(300);
  119.         set_GPIO1;
  120.                                 Timer3_Delay1ms(300);
  121.                                 Send_Data_To_UART0(0x44);
  122.   }
  123. }




评论

P2M1和P2M2会显示没有定义,是为什么呢?  发表于 2018-11-20 10:32
 楼主| 稳稳の幸福 发表于 2017-3-17 20:35 | 显示全部楼层
这个例子是不是很有趣。没想到可以这样实现一个宏。。
yiyigirl2014 发表于 2017-3-17 20:49 | 显示全部楼层
准双向模式?
huangcunxiake 发表于 2017-3-18 22:57 | 显示全部楼层
看起来很奇怪的代码。
天灵灵地灵灵 发表于 2017-3-19 18:41 | 显示全部楼层
这种方法为了兼容现在的ARM的写法。
zhuomuniao110 发表于 2017-3-19 23:42 | 显示全部楼层
应该是官方的头文件提供了一些组合操作的宏。
wahahaheihei 发表于 2017-3-20 18:17 | 显示全部楼层
不喜欢这个风格,好别扭。
huangcunxiake 发表于 2017-3-21 19:55 | 显示全部楼层
对于IO的操作不如直接用经典的51的IO操作方式。
 楼主| 稳稳の幸福 发表于 2017-3-21 23:37 | 显示全部楼层
直接使用寄存器就是经典的操作了。
xyz1015231411 发表于 2017-3-22 07:18 | 显示全部楼层
N76E003是用库开发吗
598330983 发表于 2017-3-22 14:40 | 显示全部楼层
这应该是头文件配合几个简单的库。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

204

主题

3450

帖子

8

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