当前位置 : 主页 > 编程语言 > java >

新唐N76E003AT20单片机完整资料包(源码+PCB下载)

来源:互联网 收集:自由互联 发布时间:2022-07-05
N76E003为带有flash的增强型8位8051内核微控制器(1T工作模式),指令集与标准的80C51完全兼容并具备更高效能。 N76E003内嵌18K的Flash存储区,通常称作APROM,用于存放用户程序代码。该Fla

N76E003为带有flash的增强型8位8051内核微控制器(1T工作模式),指令集与标准的80C51完全兼容并具备更高效能。
N76E003内嵌18K的Flash存储区,通常称作APROM,用于存放用户程序代码。该Flash存储区支持在应用编程(IAP)功能,即可通过片内固件更新程序代码。IAP功能同时提供用户可自行配置程序区域或数据存储区。IAP功能可以对数据存储区进行读写操作,同时读数据也可以通过MOVC指令来实现。N76E003有一个额外的存储区称作LDROM,该区域通常存放用于执行在系统编程(ISP)的引导代码(boot code),LDROM的大小最多可配置到 4K 字节。为了方便烧写和校验,整个flash区域支持并行烧录和ICP烧录。可通过加密位对Flash加密,保障程序代码无法被读出。
N76E003提供丰富的特殊功能模块,包括:256字节SRAM,768字节XRAM。最多可达18个标准管脚。两组标准16位定时器/计数器:定时器0及1,一组带有3路管脚输入捕获模式的16位定时器:定时器2,一组看门狗定时器(WDT),一组自唤醒定时器(WKT),一组带自动重装载功能,可用于产生标准波特率的定时器:定时器3。两组标准串行口(UART),这两组串行口具有帧错误侦测及自动地址识别功能。一组SPI,一组I
2 C,6 通道增强型PWM输出,8路12位ADC。上述功能对应产生18个中断源,具有4级中断优先级配置。
N76E003支持3组时钟源输入,所有时钟源支持软件切换立即生效功能(on-the-fly)。3组时钟源包括:外部时钟,10kHz内部RC振荡时钟和一个出厂时已校准到室温下精度达±1%的16MHz内部高速时钟。
N76E003提供额外的电源监控管理模块,例如上电复位和4级低电压检测,该模块用于保障芯片在上电及掉电时系统稳定工作。
N76E003可运行在两种低功耗模式-空闲模式和掉电模式,可通过软件选择运行在哪种模式。空闲模式时,芯片主时钟关闭,但部分功能模块仍然运行。掉电模式下芯片全部时钟关闭确保芯片功耗达到最低。在正常工作模式下,也可选择主时钟除频方式工作,确保在功耗和性能之间灵活运用。高效能、丰富的功能模块及配置,N76E003可灵活用于各种应用场合,家电产品,甚至是马达控制等高端需求控制系统。

单片机源程序如下(其中的一个pwm程序):

  • /* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
  • //***********************************************************************************************************
  • //  File Function: N76E003 PWM Output demo code
  • //***********************************************************************************************************
  • #include "N76E003.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
  • //--------- PMW clock source select define ---------------------
  • //#define                PWM_CLOCK_FSYS                                        CKCON&=0xBF
  • //#define                PWM_CLOCK_TIMER1                                CKCON|=0x40
  • --------- PWM clock devide define ----------------------------
  • //#define                PWM_CLOCK_DIV_2                                        PWMCON1|=0x01;PWMCON1&=0xF9
  • //#define                PWM_CLOCK_DIV_4                                        PWMCON1|=0x02;PWMCON1&=0xFA
  • //#define                PWM_CLOCK_DIV_8                                        PWMCON1|=0x03;PWMCON1&=0xFB
  • //#define                PWM_CLOCK_DIV_16                                PWMCON1|=0x04;PWMCON1&=0xFC
  • //#define                PWM_CLOCK_DIV_32                                PWMCON1|=0x05;PWMCON1&=0xFD
  • //#define                PWM_CLOCK_DIV_64                                PWMCON1|=0x06;PWMCON1&=0xFE
  • //#define                PWM_CLOCK_DIV_128                                PWMCON1|=0x07
  • --------- PWM I/O select define ------------------------------
  • //#define                PWM5_P15_OUTPUT_ENABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x20;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P1.5 as PWM5 output enable
  • //#define                PWM5_P03_OUTPUT_ENABLE                PIOCON0|=0x20                                                                                                                                                                                                                //P0.3 as PWM5
  • //#define                PWM4_P01_OUTPUT_ENABLE                PIOCON0|=0x10                                                                                                                                                                                                                //P0.1 as PWM4 output enable
  • //#define                PWM3_P04_OUTPUT_ENABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x08;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P0.4 as PWM3 output enable
  • //#define                PWM3_P00_OUTPUT_ENABLE                PIOCON0|=0x08                                                                                                                                                                                                                //P0.0 as PWM3
  • //#define                PWM2_P05_OUTPUT_ENABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x04;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P1.0 as PWM2 output enable
  • //#define                PWM2_P10_OUTPUT_ENABLE                PIOCON0|=0x04                                                                                                                                                                                                                //P1.0 as PWM2
  • //#define                PWM1_P14_OUTPUT_ENABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1|=0x02;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P1.4 as PWM1 output enable
  • //#define                PWM1_P11_OUTPUT_ENABLE                PIOCON0|=0x02                                                                                                                                                                                                                //P1.1 as PWM1
  • //#define                PWM0_P12_OUTPUT_ENABLE                PIOCON0|=0x01                                                                                                                                                                                                                //P1.2 as PWM0 output enable
  • //#define         ALL_PWM_OUTPUT_ENABLE                        PIOCON0=0xFF;PIOCON1=0xFF
  • //#define                PWM5_P15_OUTPUT_DISABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xDF;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P1.5 as PWM5 output disable
  • //#define                PWM5_P03_OUTPUT_DISABLE                PIOCON0&=0xDF                                                                                                                                                                                                                //P0.3 as PWM5
  • //#define                PWM4_P01_OUTPUT_DISABLE                PIOCON0&=0xEF                                                                                                                                                                                                                //P0.1 as PWM4 output disable
  • //#define                PWM3_P04_OUTPUT_DISABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xF7;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P0.4 as PWM3 output disable
  • //#define                PWM3_P00_OUTPUT_DISABLE                PIOCON0&=0xF7                                                                                                                                                                                                                //P0.0 as PWM3
  • //#define                PWM2_P05_OUTPUT_DISABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xFB;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P1.0 as PWM2 output disable
  • //#define                PWM2_P10_OUTPUT_DISABLE                PIOCON0&=0xFB                                                                                                                                                                                                                //P1.0 as PWM2
  • //#define                PWM1_P14_OUTPUT_DISABLE                BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;SFRS|=0x01;PIOCON1&=0xFD;TA=0xAA;TA=0x55;SFRS&=0xFE;EA=BIT_TMP                                //P1.4 as PWM1 output disable
  • //#define                PWM1_P11_OUTPUT_DISABLE                PIOCON0&=0xFD                                                                                                                                                                                                                //P1.1 as PWM1
  • //#define                PWM0_P12_OUTPUT_DISABLE                PIOCON0&=0xFE                                                                                                                                                                                                                //P1.2 as PWM0 output disable
  • //#define         ALL_PWM_OUTPUT_DISABLE                PIOCON0=0x00;PIOCON1=0x00
  • --------- PWM I/O Polarity Control ---------------------------
  • //#define                PWM5_OUTPUT_INVERSE                        PNP|=0x20
  • //#define                PWM4_OUTPUT_INVERSE                        PNP|=0x10
  • //#define                PWM3_OUTPUT_INVERSE                        PNP|=0x08
  • //#define                PWM2_OUTPUT_INVERSE                        PNP|=0x04
  • //#define                PWM1_OUTPUT_INVERSE                        PNP|=0x02
  • //#define                PWM0_OUTPUT_INVERSE                        PNP|=0x01
  • //#define                PWM_OUTPUT_ALL_INVERSE        PNP=0xFF
  • //#define                PWM5_OUTPUT_NORMAL                        PNP&=0xDF
  • //#define                PWM4_OUTPUT_NORMAL                        PNP&=0xEF
  • //#define                PWM3_OUTPUT_NORMAL                        PNP&=0xF7
  • //#define                PWM2_OUTPUT_NORMAL                        PNP&=0xFB
  • //#define                PWM1_OUTPUT_NORMAL                        PNP&=0xFD
  • //#define                PWM0_OUTPUT_NORMAL                        PNP&=0xFE
  • //#define                PWM_OUTPUT_ALL_NORMAL                PNP=0x00
  • --------- PWM type define ------------------------------------
  • //#define                PWM_EDGE_TYPE                                                PWMCON1&=~SET_BIT4
  • //#define                PWM_CENTER_TYPE                                        PWMCON1|=SET_BIT4
  • --------- PWM mode define ------------------------------------
  • //#define                PWM_IMDEPENDENT_MODE                PWMCON1&=0x3F
  • //#define                PWM_COMPLEMENTARY_MODE        PWMCON1|=0x40;PWMCON1&=0x7F
  • //#define                PWM_SYNCHRONIZED_MODE                PWMCON1|=0x80;PWMCON1&=0xBF
  • //#define         PWM_GP_MODE_ENABLE                        PWMCON1|=0x20
  • //#define                PWM_GP_MODE_DISABLE                        PWMCON1&=0xDF
  • --------- PMW interrupt setting ------------------------------
  • //#define                PWM_FALLING_INT                                        PWMCON0&=0xF3
  • //#define                PWM_RISING_INT                                        PWMCON0|=0x04;PWMCON0&=0xF7
  • //#define                PWM_CENTRAL_POINT_INT                PWMCON0|=0x08;PWMCON0&=0xFB
  • //#define                PWM_PERIOD_END_INT                        PWMCON0|=0x0C
  • --------- PWM interrupt pin select ---------------------------
  • //#define                PWM_INT_PWM0                                                PWMCON0&=0xFC
  • //#define                PWM_INT_PWM2                                                PWMCON0|=0x01;PWMCON0&=0xFD
  • //#define                PWM_INT_PWM4                                                PWMCON0|=0x02;PWMCON0&=0xFE
  • //#define                PWM_INT_PMW6                                                PWMCON0|=0x03
  • --------- PWM Dead time setting ------------------------------
  • //#define         PWM45_DEADTIME_ENABLE                        BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x04;EA=BIT_TMP
  • //#define         PWM34_DEADTIME_ENABLE                        BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x02;EA=BIT_TMP
  • //#define         PWM01_DEADTIME_ENABLE                        BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;PDTEN|=0x01;EA=BIT_TMP
  • #endif


  • /************************************************************************************************************
  • *   PWM interrupt subroutine
  • ************************************************************************************************************/
  • void PWM_ISR (void) interrupt 13
  • {
  • clr_PWMF;               // clear PWM interrupt flag
  • P12 = ~P12;                                                        // GPIO1 show PWM INT
  • }

  • /************************************************************************************************************
  • *    Main function
  • ************************************************************************************************************/
  • void main(void)
  • {
  • Set_All_GPIO_Quasi_Mode;
  • /**********************************************************************
  • PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) <Fpwm = Fsys/PWM_CLOCK_DIV>
  • = (22.1184MHz/8)/(0x3FF + 1)
  • = 2.7KHz
  • ***********************************************************************/
  • ……………………

  • …………限于本文篇幅 余下代码请从51黑下载附件…………

  • 复制代码


    上一篇:java进程占用CPU高的问题
    下一篇:没有了
    网友评论