[技术问答]

求一个N76E003的ISP或者IAP例程

[复制链接]
4502|12
手机看帖
扫描二维码
随时随地手机跟帖
terryeva06|  楼主 | 2017-9-18 13:46 | 显示全部楼层 |阅读模式
RT,芯片的BSP里面只有如何开启使用和存储LDROM,但是具体该怎么操作呢?比如我收到串口发来的数据,该怎么存?串口改怎么发?
求高手搞一套来,模仿模仿,谢谢拉
terryeva06|  楼主 | 2017-9-18 13:54 | 显示全部楼层
最好能分享下源码,行么

使用特权

评论回复
xixi2017| | 2017-9-18 22:15 | 显示全部楼层
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Jan/21/2017
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E003 APROM program DATAFLASH (APROM) demo code
//***********************************************************************************************************
#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"


//***********************************************************************************************************
#define     CID_READ            0x0B
#define     DID_READ            0x0C

/*
        Since the DATAFLASH is in the APROM. Program command is same as program APROM
*/
#define     PAGE_ERASE_AP       0x22
#define     BYTE_READ_AP        0x00
#define     BYTE_PROGRAM_AP     0x21
#define     PAGE_SIZE           128


#define     ERASE_FAIL          0x70
#define     PROGRAM_FAIL        0x71
#define     IAPFF_FAIL          0x72
#define     IAP_PASS            0x00

//---------------------------------------------------------------
// Following define by customer
// Please confirm the start addresss not over your code size
//---------------------------------------------------------------
#define     DATA_SIZE           4096   
#define     DATA_START_ADDR     0x3800                                        

/********************************************************************************************
Following IAP command register is also define in SFR_Macro.h

        #define set_IAPEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON |= SET_BIT0 ;EA=BIT_TMP
        #define clr_IAPEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON &= ~SET_BIT0;EA=BIT_TMP
        #define set_APUEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN |= SET_BIT0 ;EA=BIT_TMP
        #define clr_APUEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN &= ~SET_BIT0;EA=BIT_TMP
       
**********************************************************************************************/
void IAP_ERROR_LED(void)
{
        while (1)
        {
                clr_P03;
                Timer0_Delay1ms(100);
                set_P03;
                Timer0_Delay1ms(100);
        }

}

//-----------------------------------------------------------------------------------------------------------/
void Trigger_IAP(void)
{   
    set_IAPGO;                                                                                                                                        //trigger IAP
    if((CHPCON&SET_BIT6)==SET_BIT6)             // if fail flag is set, toggle error LED and IAP stop
                {
                        clr_IAPFF;
                        IAP_ERROR_LED();
                }
}
/*
                WARNING:
        No matter read or writer, when IAPFF is set 1,
        this step process is fail. DATA should be ignore.
*/
//-----------------------------------------------------------------------------------------------------------/

/*****************************************************************************************************************
Erase APROM subroutine:
       

******************************************************************************************************************/               
void Erase_APROM(void)
{   
    UINT16 u16Count;

    set_IAPEN;                                                                                                        // Enable IAP function
                IAPFD = 0xFF;                                                                                                // IMPORTANT !! To erase function must setting IAPFD = 0xFF
    IAPCN = PAGE_ERASE_AP;
    set_APUEN;                                                                                                        //  APROM modify Enable
       
    for(u16Count=0x0000;u16Count<DATA_SIZE/PAGE_SIZE;u16Count++)                //
    {        
        IAPAL = LOBYTE(u16Count*PAGE_SIZE + DATA_START_ADDR);
        IAPAH = HIBYTE(u16Count*PAGE_SIZE + DATA_START_ADDR);
        Trigger_IAP();
    }
    clr_APUEN;
    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------
void Erase_APROM_Verify(void)
{   
    UINT16 u16Count;
    set_IAPEN;
    IAPAL = LOBYTE(DATA_START_ADDR);
    IAPAH = HIBYTE(DATA_START_ADDR);
    IAPCN = BYTE_READ_AP;

    for(u16Count=0;u16Count<DATA_SIZE;u16Count++)
    {   
        IAPFD = 0x00;   
        Trigger_IAP();
        if(IAPFD != 0xFF)
                                        IAP_ERROR_LED();
        IAPAL++;
        if(IAPAL == 0x00)
          IAPAH++;
    }
               
    clr_IAPEN;
   
}
//-----------------------------------------------------------------------------------------------------------
void Program_APROM(void)
{   
    UINT16 u16Count;

    set_IAPEN;
    set_APUEN;   
    IAPAL = LOBYTE(DATA_START_ADDR);
    IAPAH = HIBYTE(DATA_START_ADDR);
    IAPCN = BYTE_PROGRAM_AP;
   
    for(u16Count=0;u16Count<DATA_SIZE;u16Count++)
    {   
        IAPFD++;     
        Trigger_IAP();
      
        IAPAL++;
        if(IAPAL == 0)
        {
            IAPAH++;
        }
    }
               
    clr_APUEN;
    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------
void Program_APROM_Verify(void)
{   
    UINT16 u16Count;
    UINT8  u8Read_Data;

    set_IAPEN;
    IAPAL = LOBYTE(DATA_START_ADDR);
    IAPAH = HIBYTE(DATA_START_ADDR);
    IAPCN = BYTE_READ_AP;
    u8Read_Data = 0x00;

    for(u16Count=0;u16Count<DATA_SIZE;u16Count++)
    {   
        Trigger_IAP();
        if(IAPFD != u8Read_Data)
                                        IAP_ERROR_LED();
        IAPAL++;
        if(IAPAL == 0)
        {
            IAPAH++;
        }
        u8Read_Data ++;
    }

    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------------------------
void main (void)
{

  Set_All_GPIO_Quasi_Mode;
//---------toggle GPIO1---------       
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
//---------end toggle GPIO1---------
       
    Erase_APROM();
                Erase_APROM_Verify();
    Program_APROM();
    Program_APROM_Verify();

//---------toggle GPIO1---------       
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
//---------end toggle GPIO1---------

    while(1);
}
//-----------------------------------------------------------------------------------------------------------

使用特权

评论回复
xixi2017| | 2017-9-18 22:15 | 显示全部楼层
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* 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 APROM program DATAFLASH (APROM) demo code
//***********************************************************************************************************

#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"

#define     CID_READ            0x0B
#define     DID_READ            0x0C

/*
        Since the DATAFLASH is in the APROM. Program command is same as program APROM
*/
#define     PAGE_ERASE_LD       0x62
#define     BYTE_READ_LD        0x40
#define     BYTE_PROGRAM_LD            0x61
#define     PAGE_SIZE           128


#define     ERASE_FAIL          0x70
#define     PROGRAM_FAIL        0x71
#define     IAPFF_FAIL          0x72
#define     IAP_PASS            0x00

//---------------------------------------------------------------
// Following define by customer
// Please confirm the start addresss not over your code size
//---------------------------------------------------------------
#define     DATA_SIZE           1024   
#define     DATA_START_ADDR     0x0000                                        

/********************************************************************************************
Following IAP command register is also define in SFR_Macro.h

        #define set_IAPEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON |= SET_BIT0 ;EA=BIT_TMP
        #define clr_IAPEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;CHPCON &= ~SET_BIT0;EA=BIT_TMP
        #define set_APUEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN |= SET_BIT0 ;EA=BIT_TMP
        #define clr_APUEN   BIT_TMP=EA;EA=0;TA=0xAA;TA=0x55;IAPUEN &= ~SET_BIT0;EA=BIT_TMP
       
**********************************************************************************************/
void IAP_ERROR_LED(void)
{
        while (1)
        {
                clr_P03;
                Timer0_Delay1ms(100);
                set_P03;
                Timer0_Delay1ms(100);
        }

}

//-----------------------------------------------------------------------------------------------------------/
void Trigger_IAP(void)
{   
    set_IAPGO;                                                                                                                                        //trigger IAP
    if((CHPCON&SET_BIT6)==SET_BIT6)             // if fail flag is set, toggle error LED and IAP stop
                {
                        clr_IAPFF;
                        IAP_ERROR_LED();
                }
}
/*
                WARNING:
        No matter read or writer, when IAPFF is set 1,
        this step process is fail. DATA should be ignore.
*/
//-----------------------------------------------------------------------------------------------------------/

/*****************************************************************************************************************
Erase APROM subroutine:
       

******************************************************************************************************************/               
void Erase_LDROM(void)
{   
    UINT16 u16Count;

    set_IAPEN;                                                                                                        // Enable IAP function
                IAPFD = 0xFF;                                                                                                // IMPORTANT !! To erase function must setting IAPFD = 0xFF
    IAPCN = PAGE_ERASE_LD;
    set_LDUEN;                                                                                                        //  APROM modify Enable
       
    for(u16Count=0x0000;u16Count<DATA_SIZE/PAGE_SIZE;u16Count++)                //
    {        
        IAPAL = LOBYTE(u16Count*PAGE_SIZE + DATA_START_ADDR);
        IAPAH = HIBYTE(u16Count*PAGE_SIZE + DATA_START_ADDR);
        Trigger_IAP();
    }
//    clr_LDUEN;
//    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------
void Erase_LDROM_Verify(void)
{   
    UINT16 u16Count;
    set_IAPEN;
    IAPAL = LOBYTE(DATA_START_ADDR);
    IAPAH = HIBYTE(DATA_START_ADDR);
    IAPCN = BYTE_READ_LD;

    for(u16Count=0;u16Count<DATA_SIZE;u16Count++)
    {   
        IAPFD = 0x00;   
        Trigger_IAP();
        if(IAPFD != 0xFF)
                                        IAP_ERROR_LED();
        IAPAL++;
        if(IAPAL == 0x00)
          IAPAH++;
    }
               
    clr_IAPEN;
   
}
//-----------------------------------------------------------------------------------------------------------
void Program_LDROM(void)
{   
    UINT16 u16Count;

    set_IAPEN;
    set_LDUEN;   
    IAPAL = LOBYTE(DATA_START_ADDR);
    IAPAH = HIBYTE(DATA_START_ADDR);
    IAPCN = BYTE_PROGRAM_LD;
   
    for(u16Count=0;u16Count<DATA_SIZE;u16Count++)
    {   
        IAPFD++;     
        Trigger_IAP();
      
        IAPAL++;
        if(IAPAL == 0)
        {
            IAPAH++;
        }
    }
               
    clr_LDUEN;
    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------
void Program_LDROM_Verify(void)
{   
    UINT16 u16Count;
    UINT8  u8Read_Data;

    set_IAPEN;
    IAPAL = LOBYTE(DATA_START_ADDR);
    IAPAH = HIBYTE(DATA_START_ADDR);
    IAPCN = BYTE_READ_LD;
    u8Read_Data = 0x00;

    for(u16Count=0;u16Count<DATA_SIZE;u16Count++)
    {   
        Trigger_IAP();
        if(IAPFD != u8Read_Data)
                                        IAP_ERROR_LED();
        IAPAL++;
        if(IAPAL == 0)
        {
            IAPAH++;
        }
        u8Read_Data ++;
    }

    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------

//-----------------------------------------------------------------------------------------------------------
void main (void)
{

  Set_All_GPIO_Quasi_Mode;
//---------toggle GPIO1---------       
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
//---------end toggle GPIO1---------
       
    Erase_LDROM();
                Erase_LDROM_Verify();
    Program_LDROM();
    Program_LDROM_Verify();

//---------toggle GPIO1---------       
        clr_GPIO1;
//---------end toggle GPIO1---------

    while(1);
}
//-----------------------------------------------------------------------------------------------------------

使用特权

评论回复
xixi2017| | 2017-9-18 22:17 | 显示全部楼层
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* 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 APROM program DATAFLASH as EEPROM way
//***********************************************************************************************************
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"


/*****************************************************************************************************************
write_DATAFLASH_BYTE :
user can copy all this subroutine into project, then call this function in main.
******************************************************************************************************************/               
void write_DATAFLASH_BYTE(UINT16 u16_addr,UINT8 u8_data)
{
        UINT8 looptmp=0,u8_addrl_r;
        unsigned char code *cd_longaddr;
        unsigned char xdata *xd_tmp;
       
//Check page start address
        u8_addrl_r = u16_addr;
        if (u8_addrl_r<0x80)
        {
                u8_addrl_r = 0;
        }
        else
        {
                u8_addrl_r = 0x80;
        }
//Save APROM data to XRAM
        xd_tmp = 0x80;
        cd_longaddr = (u16_addr&0xff00)+u8_addrl_r;       
        while (xd_tmp !=0x100)
        {
                *xd_tmp = *cd_longaddr;
                looptmp++;
                xd_tmp++;
                cd_longaddr++;
        }
// Modify customer data in XRAM
        u8_addrl_r = u16_addr;
        if (u8_addrl_r<0x80)
        {
                xd_tmp = u8_addrl_r+0x80;
        }
        else
        {
                xd_tmp = u8_addrl_r+0;
        }
        *xd_tmp = u8_data;
//Erase APROM DATAFLASH page
                IAPAL = u16_addr;
                IAPAH = u16_addr>>8;
                IAPFD = 0xFF;
          set_IAPEN;
                set_APUEN;
    IAPCN = 0x22;                
                set_IAPGO;
//Save changed RAM data to APROM DATAFLASH
        u8_addrl_r = u16_addr;
        if (u8_addrl_r<0x80)
        {
                u8_addrl_r =0;
        }
        else
        {
                u8_addrl_r = 0x80;
        }
                xd_tmp = 0x80;
          IAPAL = u8_addrl_r;
    IAPAH = u16_addr>>8;
                set_IAPEN;
                set_APUEN;
          IAPCN = 0x21;
                while (xd_tmp !=0xFF)
                {
                        IAPFD = *xd_tmp;
                        set_IAPGO;
                        IAPAL++;
                        xd_tmp++;
                }
                clr_APUEN;
                clr_IAPEN;
}       
       
//-------------------------------------------------------------------------
UINT8 read_APROM_BYTE(UINT16 code *u16_addr)
{
        UINT8 rdata;
        rdata = *u16_addr>>8;
        return rdata;
}

/******************************************************************************************************************/       


void main (void)
{
                UINT8 datatemp;
/* -------------------------------------------------------------------------*/
/*  Dataflash use APROM area, please ALWAYS care the address of you code    */
/*        APROM 0x3800~0x38FF demo as dataflash                                                                                                     */
/*         Please use Memory window key in C:0x3800 to check earse result                                        */             
/* -------------------------------------------------------------------------*/
                InitialUART0_Timer1(115200);
//call write byte
                write_DATAFLASH_BYTE (0x3881,0x55);
                write_DATAFLASH_BYTE (0x3882,0x56);
                write_DATAFLASH_BYTE (0x3855,0xaa);
                write_DATAFLASH_BYTE (0x3856,0x66);
//call read byte
                datatemp = read_APROM_BYTE(0x3882);

    while(1)
                {
//                                printf ("\n data temp = 0x%bx", datatemp);
                }
}
//-----------------------------------------------------------------------------------------------------------

使用特权

评论回复
xixi2017| | 2017-9-18 22:17 | 显示全部楼层
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2015 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 LDROM program APROM demo code
//***********************************************************************************************************

//***********************************************************************************************************
//  Before using this demo code, please remind below CONFOGs setting, thanks.
//                 CONFIG0.7 --> CBS=0
//                 CONFIG1 = 0xFC, because this demo code size is 2495 Byte
//***********************************************************************************************************
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"


#define     CID_READ            0x0B
#define     DID_READ            0x0C
#define     CFG_READ            0xC0
#define     CFG_ERASE           0xE2

#define     PAGE_ERASE_AP       0x22
#define     BYTE_READ_AP        0x00
#define     BYTE_PROGRAM_AP     0x21

#define     BYTE_PROGRAM_CFG    0xE1
#define     BYTE_READ_CFG       0xC0

#define     PAGE_SIZE           128

#define     APROM_SIZE          8192   
#define     APROM_START_ADDR    0x0000

#define     ERASE_FAIL          0x70
#define     PROGRAM_FAIL        0x71
#define     IAPFF_FAIL          0x72
#define     IAP_PASS            0x00

//-----------------------------------------------------------------------------------------------------------
void Trigger_IAP(void)
{   
    set_IAPGO;                                  //trigger IAP
    if((CHPCON&SET_BIT6)==SET_BIT6)             //check IAPFF (CHPCON.6), if flag = 1, the ISP process is fail.
                {
                                while(1)
                                {
                                        clr_GPIO1;
                                        Timer0_Delay1ms(100);
                                        set_GPIO1;
                                        Timer0_Delay1ms(100);
                                }
                }
}                                                                       

//-----------------------------------------------------------------------------------------------------------
void Erase_CONFIG(void)
{   
    set_IAPEN;
   
    IAPAL = 0x00;
    IAPAH = 0x00;
    IAPFD = 0xFF;
    IAPCN = CFG_ERASE;
   
    set_CFUEN;
    Trigger_IAP();
    clr_CFUEN;
   
    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------
void Erase_APROM(void)
{   
    UINT16 u16Count;

    set_IAPEN;
          set_APUEN;                                                                                                // To erase or program APROM must enable APUEN
       
    IAPFD = 0xFF;                                                                            // MUST setting IAPFD = 0xFF when do erase process.
    IAPCN = PAGE_ERASE_AP;

    for(u16Count=0x0000;u16Count<APROM_SIZE/PAGE_SIZE;u16Count++)
    {        
        IAPAL = LOBYTE(u16Count*PAGE_SIZE + APROM_START_ADDR);
        IAPAH = HIBYTE(u16Count*PAGE_SIZE + APROM_START_ADDR);
        Trigger_IAP();
    }
               
    clr_APUEN;
    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------
BIT Erase_APROM_Verify(void)
{   
    UINT16 u16Count;
    BIT    Error_Flag = 0;

    set_IAPEN;
   
    IAPAL = LOBYTE(APROM_START_ADDR);
    IAPAH = HIBYTE(APROM_START_ADDR);
    IAPCN = BYTE_READ_AP;

    for(u16Count=0;u16Count<APROM_SIZE/PAGE_SIZE;u16Count++)
    {   
        IAPFD = 0x00;   
        Trigger_IAP();

        if(IAPFD != 0xFF)
        {
            Error_Flag = 1;
            break;
        }

        IAPAL++;
        if(IAPAL == 0x00)
        {
            IAPAH++;
        }
    }
   
    clr_IAPEN;
   
    if(Error_Flag == 1)
        return FAIL;
    else
        return PASS;
}
//-----------------------------------------------------------------------------------------------------------
void Program_APROM(void)
{   
    UINT16 u16Count;

    set_IAPEN;
    set_APUEN;   
       
    IAPAL = LOBYTE(APROM_START_ADDR);
    IAPAH = HIBYTE(APROM_START_ADDR);
    IAPFD = 0xFF;
    IAPCN = BYTE_PROGRAM_AP;

    for(u16Count=0;u16Count<APROM_SIZE;u16Count++)
    {   
        IAPFD++;     
        Trigger_IAP();
      
        IAPAL++;
        if(IAPAL == 0)
        {
            IAPAH++;
        }
    }
               
    clr_APUEN;
    clr_IAPEN;
}
//-----------------------------------------------------------------------------------------------------------
BIT Program_APROM_Verify(void)
{   
    UINT16 u16Count;
    UINT8  u8Read_Data;
    BIT    Error_Flag = 0;

    set_IAPEN;
   
    IAPAL = LOBYTE(APROM_START_ADDR);
    IAPAH = HIBYTE(APROM_START_ADDR);
    IAPCN = BYTE_READ_AP;

    u8Read_Data = 0x00;

    for(u16Count=0;u16Count<APROM_SIZE;u16Count++)
    {   
        Trigger_IAP();
        if(IAPFD != u8Read_Data)
        {
            Error_Flag = 1;
            break;
        }

        IAPAL++;
        if(IAPAL == 0)
        {
            IAPAH++;
        }
        u8Read_Data ++;
    }

    clr_IAPEN;
     
    if(Error_Flag == 1)
        return FAIL;
    else
        return PASS;
}
//-----------------------------------------------------------------------------------------------------------
void Program_CONFIG(UINT8 u8Address,UINT8 u8Data)
{   
    set_IAPEN;
   
    IAPAL = u8Address;
    IAPAH = 0x00;
    IAPFD = u8Data;
    IAPCN = BYTE_PROGRAM_CFG;
   
    set_CFUEN;
    Trigger_IAP();
    clr_CFUEN;
   
    clr_IAPEN;
}

//-----------------------------------------------------------------------------------------------------------
void main (void)
{
    Set_All_GPIO_Quasi_Mode;
       
                clr_GPIO1;
                Timer0_Delay1ms(300);
                set_GPIO1;
                Timer0_Delay1ms(300);
                clr_GPIO1;
                Timer0_Delay1ms(300);
                set_GPIO1;

  
    Erase_APROM();
//    if(Erase_APROM_Verify() == FAIL)
//    {
//        DISPLAY_LED = ERASE_FAIL;
//        while(1);
//    }

    Program_APROM();
//    if(Program_APROM_Verify() == FAIL)
//    {
//        DISPLAY_LED = PROGRAM_FAIL;
//        while(1);
//    }   
    Program_CONFIG(0x04,0x0F);              //Program CONFIG4 =  0x0F; Enable WDT reset function.
                //Please always very carefully about the CONFIG program function. espcially about the CBS bit / LDROM size...
    Timer0_Delay1ms(200);
    while(1);
}
//-----------------------------------------------------------------------------------------------------------

使用特权

评论回复
xixi2017| | 2017-9-18 22:19 | 显示全部楼层
http://www.nuvoton.com/resource-files/N76E003_BSP_Keil_C51_V1.0.2.zip

使用特权

评论回复
Eric@Wei| | 2017-9-19 08:59 | 显示全部楼层
同求链接

使用特权

评论回复
wanduzi| | 2017-9-19 09:19 | 显示全部楼层

哈哈,你楼上就是啊。

使用特权

评论回复
wanduzi| | 2017-9-19 09:19 | 显示全部楼层
多谢分享下载链接。

使用特权

评论回复
terryeva06|  楼主 | 2017-9-19 17:51 | 显示全部楼层
这个BSP...难用哒,只跟你说了怎么存...

使用特权

评论回复
lvyisu123| | 2018-7-8 22:44 | 显示全部楼层
同样求isp ldrom源码

使用特权

评论回复
xinpian101| | 2018-7-9 23:38 | 显示全部楼层
卧牛堂,有这个。

使用特权

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

本版积分规则

2

主题

17

帖子

0

粉丝