打印
[DemoCode下载]

N76E003的GPIO操作

[复制链接]
3649|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
稳稳の幸福|  楼主 | 2017-3-17 20:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

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

//***********************************************************************************************************
//  File Function: N76E003 GPIO demo code
//***********************************************************************************************************

#include <stdio.h>
#include "N76E003.h"
#include "Define.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"


//*****************  The Following is in define in Fucntion_define.h  ***************************
//****** Always include Function_define.h call the define you want, detail see main(void) *******
//***********************************************************************************************
#if 0
////------------------- Define Port as Quasi mode  -------------------
//#define P00_Quasi_Mode                                P0M1&=~SET_BIT0;P0M2&=~SET_BIT0
//#define P01_Quasi_Mode                                P0M1&=~SET_BIT1;P0M2&=~SET_BIT1
//#define P02_Quasi_Mode                                P0M1&=~SET_BIT2;P0M2&=~SET_BIT2
//#define P03_Quasi_Mode                                P0M1&=~SET_BIT3;P0M2&=~SET_BIT3
//#define P04_Quasi_Mode                                P0M1&=~SET_BIT4;P0M2&=~SET_BIT4
//#define P05_Quasi_Mode                                P0M1&=~SET_BIT5;P0M2&=~SET_BIT5
//#define P06_Quasi_Mode                                P0M1&=~SET_BIT6;P0M2&=~SET_BIT6
//#define P07_Quasi_Mode                                P0M1&=~SET_BIT7;P0M2&=~SET_BIT7
//#define P10_Quasi_Mode                                P1M1&=~SET_BIT0;P1M2&=~SET_BIT0
//#define P11_Quasi_Mode                                P1M1&=~SET_BIT1;P1M2&=~SET_BIT1
//#define P12_Quasi_Mode                                P1M1&=~SET_BIT2;P1M2&=~SET_BIT2
//#define P13_Quasi_Mode                                P1M1&=~SET_BIT3;P1M2&=~SET_BIT3
//#define P14_Quasi_Mode                                P1M1&=~SET_BIT4;P1M2&=~SET_BIT4
//#define P15_Quasi_Mode                                P1M1&=~SET_BIT5;P1M2&=~SET_BIT5
//#define P16_Quasi_Mode                                P1M1&=~SET_BIT6;P1M2&=~SET_BIT6
//#define P17_Quasi_Mode                                P1M1&=~SET_BIT7;P1M2&=~SET_BIT7
//#define P20_Quasi_Mode                                P2M1&=~SET_BIT0;P2M2&=~SET_BIT0
//#define P30_Quasi_Mode                                P3M1&=~SET_BIT0;P3M2&=~SET_BIT0
////------------------- Define Port as Push Pull mode -------------------
//#define P00_PushPull_Mode                        P0M1|=SET_BIT0;P0M2&=~SET_BIT0
//#define P01_PushPull_Mode                        P0M1|=SET_BIT1;P0M2&=~SET_BIT1
//#define P02_PushPull_Mode                        P0M1&=~SET_BIT2;P0M2|=SET_BIT2
//#define P03_PushPull_Mode                        P0M1&=~SET_BIT3;P0M2|=SET_BIT3
//#define P04_PushPull_Mode                        P0M1&=~SET_BIT4;P0M2|=SET_BIT4
//#define P05_PushPull_Mode                        P0M1&=~SET_BIT5;P0M2|=SET_BIT5
//#define P06_PushPull_Mode                        P0M1&=~SET_BIT6;P0M2|=SET_BIT6
//#define P07_PushPull_Mode                        P0M1&=~SET_BIT7;P0M2|=SET_BIT7
//#define P10_PushPull_Mode                        P1M1&=~SET_BIT0;P1M2|=SET_BIT0
//#define P11_PushPull_Mode                        P1M1&=~SET_BIT1;P1M2|=SET_BIT1
//#define P12_PushPull_Mode                        P1M1&=~SET_BIT2;P1M2|=SET_BIT2
//#define P13_PushPull_Mode                        P1M1&=~SET_BIT3;P1M2|=SET_BIT3
//#define P14_PushPull_Mode                        P1M1&=~SET_BIT4;P1M2|=SET_BIT4
//#define P15_PushPull_Mode                        P1M1&=~SET_BIT5;P1M2|=SET_BIT5
//#define P16_PushPull_Mode                        P1M1&=~SET_BIT6;P1M2|=SET_BIT6
//#define P17_PushPull_Mode                        P1M1&=~SET_BIT7;P1M2|=SET_BIT7
//#define P20_PushPull_Mode                        P2M1&=~SET_BIT0;P2M2|=SET_BIT0
//#define P30_PushPull_Mode                        P3M1&=~SET_BIT0;P3M2|=SET_BIT0
////------------------- Define Port as Input Only mode -------------------
//#define P00_Input_Mode                                P0M1|=SET_BIT0;P0M2&=~SET_BIT0
//#define P01_Input_Mode                                P0M1|=SET_BIT1;P0M2&=~SET_BIT1
//#define P02_Input_Mode                                P0M1|=SET_BIT2;P0M2&=~SET_BIT2
//#define P03_Input_Mode                                P0M1|=SET_BIT3;P0M2&=~SET_BIT3
//#define P04_Input_Mode                                P0M1|=SET_BIT4;P0M2&=~SET_BIT4
//#define P05_Input_Mode                                P0M1|=SET_BIT5;P0M2&=~SET_BIT5
//#define P06_Input_Mode                                P0M1|=SET_BIT6;P0M2&=~SET_BIT6
//#define P07_Input_Mode                                P0M1|=SET_BIT7;P0M2&=~SET_BIT7
//#define P10_Input_Mode                                P1M1|=SET_BIT0;P1M2&=~SET_BIT0
//#define P11_Input_Mode                                P1M1|=SET_BIT1;P1M2&=~SET_BIT1
//#define P12_Input_Mode                                P1M1|=SET_BIT2;P1M2&=~SET_BIT2
//#define P13_Input_Mode                                P1M1|=SET_BIT3;P1M2&=~SET_BIT3
//#define P14_Input_Mode                                P1M1|=SET_BIT4;P1M2&=~SET_BIT4
//#define P15_Input_Mode                                P1M1|=SET_BIT5;P1M2&=~SET_BIT5
//#define P16_Input_Mode                                P1M1|=SET_BIT6;P1M2&=~SET_BIT6
//#define P17_Input_Mode                                P1M1|=SET_BIT7;P1M2&=~SET_BIT7
//#define P20_Input_Mode                                P2M1|=SET_BIT0;P2M2&=~SET_BIT0
//#define P30_Input_Mode                                P3M1|=SET_BIT0;P3M2&=~SET_BIT0
////-------------------Define Port as Open Drain mode -------------------
//#define P00_OpenDrain_Mode                P0M1|=SET_BIT0;P0M2|=SET_BIT0
//#define P01_OpenDrain_Mode                P0M1|=SET_BIT1;P0M2|=SET_BIT1
//#define P02_OpenDrain_Mode                P0M1|=SET_BIT2;P0M2|=SET_BIT2
//#define P03_OpenDrain_Mode                P0M1|=SET_BIT3;P0M2|=SET_BIT3
//#define P04_OpenDrain_Mode                P0M1|=SET_BIT4;P0M2|=SET_BIT4
//#define P05_OpenDrain_Mode                P0M1|=SET_BIT5;P0M2|=SET_BIT5
//#define P06_OpenDrain_Mode                P0M1|=SET_BIT6;P0M2|=SET_BIT6
//#define P07_OpenDrain_Mode                P0M1|=SET_BIT7;P0M2|=SET_BIT7
//#define P10_OpenDrain_Mode                P1M1|=SET_BIT0;P1M2|=SET_BIT0
//#define P11_OpenDrain_Mode                P1M1|=SET_BIT1;P1M2|=SET_BIT1
//#define P12_OpenDrain_Mode                P1M1|=SET_BIT2;P1M2|=SET_BIT2
//#define P13_OpenDrain_Mode                P1M1|=SET_BIT3;P1M2|=SET_BIT3
//#define P14_OpenDrain_Mode                P1M1|=SET_BIT4;P1M2|=SET_BIT4
//#define P15_OpenDrain_Mode                P1M1|=SET_BIT5;P1M2|=SET_BIT5
//#define P16_OpenDrain_Mode                P1M1|=SET_BIT6;P1M2|=SET_BIT6
//#define P17_OpenDrain_Mode                P1M1|=SET_BIT7;P1M2|=SET_BIT7
//#define P20_OpenDrain_Mode                P2M1|=SET_BIT0;P2M2|=SET_BIT0
//#define P30_OpenDrain_Mode                P3M1|=SET_BIT0;P3M2|=SET_BIT0
////--------- Define all port as quasi mode ---------
//#define Set_All_GPIO_Quasi_Mode                        P0M1=0;P0M1=0;P1M1=0;P1M2=0;P2M1=0;P2M2=0;P3M1=0;P3M2=0
#endif

/*------------------------------------------------
The main C function.  Program execution starts
here after stack initialization.
------------------------------------------------*/

void main (void)
{
        Set_All_GPIO_Quasi_Mode;                                        // Define in Function_define.h
        InitialUART0_Timer1(115200);
        set_CLOEN;  
         
  while(1)
  {
        clr_GPIO1;                                                                                                // Tiny board GPIO1 LED define in Common.h
        Timer3_Delay1ms(300);
        set_GPIO1;
                                Timer3_Delay1ms(300);
                                Send_Data_To_UART0(0x44);
  }
}




评论
Lchen1990 2018-11-20 10:32 回复TA
P2M1和P2M2会显示没有定义,是为什么呢? 
沙发
稳稳の幸福|  楼主 | 2017-3-17 20:35 | 只看该作者
这个例子是不是很有趣。没想到可以这样实现一个宏。。

使用特权

评论回复
板凳
yiyigirl2014| | 2017-3-17 20:49 | 只看该作者
准双向模式?

使用特权

评论回复
地板
huangcunxiake| | 2017-3-18 22:57 | 只看该作者
看起来很奇怪的代码。

使用特权

评论回复
5
天灵灵地灵灵| | 2017-3-19 18:41 | 只看该作者
这种方法为了兼容现在的ARM的写法。

使用特权

评论回复
6
zhuomuniao110| | 2017-3-19 23:42 | 只看该作者
应该是官方的头文件提供了一些组合操作的宏。

使用特权

评论回复
7
wahahaheihei| | 2017-3-20 18:17 | 只看该作者
不喜欢这个风格,好别扭。

使用特权

评论回复
8
huangcunxiake| | 2017-3-21 19:55 | 只看该作者
对于IO的操作不如直接用经典的51的IO操作方式。

使用特权

评论回复
9
稳稳の幸福|  楼主 | 2017-3-21 23:37 | 只看该作者
直接使用寄存器就是经典的操作了。

使用特权

评论回复
10
xyz1015231411| | 2017-3-22 07:18 | 只看该作者
N76E003是用库开发吗

使用特权

评论回复
11
598330983| | 2017-3-22 14:40 | 只看该作者
这应该是头文件配合几个简单的库。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

3089

帖子

8

粉丝