国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

�������gӭ�M(j��n)�������зf���¿Ƽ����޹�˾�ٷ��W(w��ng)վ��

���F(xi��n)�ڵ�λ�ã���� ��„�YӍ >> ��„?l��)^�l >> N76E003֮IAP
��„�YӍ
NEWS INFORMATION

N76E003֮IAP

�P(gu��n)�I�֣���Ƭ�C(j��)��� N76E003 �l(f��)���r(sh��)�g��2019-05-22

�޸�FLASH��(sh��)��(j��)ͨ����Ҫ���L�r(sh��)�g������RAM�ǘӿ��Ԍ�(sh��)�r(sh��)���������Ҳ��������̻��xȡFLASH��(sh��)��(j��)��Ҫ��ѭ�ஔ(d��ng)��(f��)�s�ĕr(sh��)���E��N76E003�ṩ����FALSH���̷�ʽ�����Ԏ����Ñ�ͨ�^IAP��ʽ�����¾���FLASH��(n��i)����IAP����ͨ�^ܛ����(sh��)�F(xi��n)�ھ�늲����;��̵ķ�����

ͨ�^�O(sh��)��IAPEN��CHPCON.0��TA���o(h��)��ʹ��IAP�������O(sh��)��IAPUEN�Ĵ���������(y��ng)λ��ʹ����Ҫ������FLASH�^(q��)��CONFIG��LDROM��APROM�����Ñ�16λ������ַ����IAPAH��IAPAL����(sh��)��(j��)����IAPFD�������IAPCN��Ȼ��ͨ�^�O(sh��)���|�l(f��)λIAPGO(IAPTRG.0)��ȥ��(zh��)��IAP��ע�⣺IAPTRGҲ��TA���o(h��)���˕r(sh��)��CPU���ֳ���Ӌ(j��)��(sh��)������(n��i)ǶIAP�Ԅ�(d��ng)���ƃ�(n��i)����늱����늉�����̖�r(sh��)���������;��̕r(sh��)�g�ǃ�(n��i)�����Ƶ����c����늉����l�ʟo�P(gu��n)��ͨ��퓲����r(sh��)�g��5ms���ֹ�(ji��)���̕r(sh��)�g�� 3.5��s��IAP��(d��ng)����ɺ�������Ӌ(j��)��(sh��)���^�m(x��)�\(y��n)��֮���ָ����IAPGOλ���Ԅ�(d��ng)���㡣IAPFF (CHPCON.6)��IAP�e(cu��)�`��(bi��o)־�������Á�z��֮ǰIAP�����ɹ��c����ͨ�^�@Щ��ܛ�����O(sh��)�����Ñ����Ժܷ��㌦FLASH�惦(ch��)���M(j��n)�в��������̺�У�(y��n)��

 

 

IAP���Է����Ñ�����FLASH��(n��i)�ݣ����^�Ñ������ѭһ��Ҏ(gu��)�t���Դ_��IAP���_��(zh��)������t�������𲻴_���ĽY(ji��)���������p�����������������Č������_��(zh��)��IAP�кܺý��h��
(1)�]��IAP�����r(sh��)���Ñ������IAPEN (CHPCON.0)λ�����Է�ֹϵ�y(t��ng)�����|�l(f��)IAP�����⣬IAP��Ҫʹ�Ã�(n��i)��HIRC��ʎ��������x���ⲿ�r(sh��)�Դ����ֹIAP��ֹͣ��(n��i)��HIRC�������_(d��)��ʡ늵�Ŀ�ġ�ע����IAPEN��TA���o(h��)��
(2)��(d��ng)LOCKλ(CONFIG0.1) ��������IAP�x�����������Ȼ��Ч��


���M(j��n)��IAP�r(sh��)������Д���_��(y��ng)ԓ�R�r(sh��)���EAλ
�����򾎳̵�퓲����Ǯ�(d��ng)ǰ���a��(zh��)�е�퓡���t��(hu��)���F(xi��n)�����A(y��)Ӌ(j��)�����(d��ng)���������ƉĴ惦(ch��)�Ĕ�(sh��)��(j��)

ʹ��flash�惦(ch��)�����锵(sh��)��(j��)�惦(ch��)
��һ�㑪(y��ng)�������Еr(sh��)��ҪһЩ��(sh��)��(j��)�ڔ����r�²��܁Gʧ���Ա��Ñ��x�ػ����������ϵ�y(t��ng)���Ƶą���(sh��)��N76E003֧��IAP���ܲ��Ҵ惦(ch��)��flash�е��ֹ�(ji��)��������MOVCָ���xȡ�����Ժ��m���������ʧ��(sh��)��(j��)�惦(ch��)����Flash���Δ�(sh��)��100,000�������…�����(y��ng)�ô��a��

�R����������:
;******************************************************************************
; This code illustrates how to use IAP to make APROM 201h as a byte of
; Data Flash when user code is executed in APROM.
;******************************************************************************
PAGE_ERASE_AP EQU 00100010b
BYTE_PROGRAM_AP EQU 00100001b
ORG 0000h
MOV TA,#0Aah ;CHPCON is TA protected
MOV TA,#55h
ORL CHPCON,#00000001b ;IAPEN = 1, enable IAP mode
MOV TA,#0Aah ;IAPUEN is TA protected
MOV TA,#55h
ORL IAPUEN,#00000001b ;APUEN = 1, enable APROM update
MOV IAPCN,#PAGE_ERASE_AP ;Erase page 200h~27Fh
MOV IAPAH,#02h
MOV IAPAL,#00h
MOV IAPFD,#0FFh
MOV TA,#0Aah ;IAPTRG is TA protected
MOV TA,#55h
ORL IAPTRG,#00000001b ;write ��1�� to IAPGO to trigger IAP process
MOV IAPCN,#BYTE_PROGRAM_AP ;Program 201h with 55h
MOV IAPAH,#02h
MOV IAPAL,#01h
MOV IAPFD,#55h

MOV TA,#0Aah
MOV TA,#55h
ORL IAPTRG,#00000001b
MOV TA,#0Aah
MOV TA,#55h
ANL IAPUEN,#11111110b ;APUEN = 0, disable APROM update
MOV TA,#0Aah
MOV TA,#55h
ANL CHPCON,#11111110b ;IAPEN = 0, disable IAP mode
MOV DPTR,#201h
CLR A
MOVC A,@A+DPTR ;Read content of address 201h
MOV P0,A
SJMP $

C �Z����������:
//******************************************************************************
// This code illustrates how to use IAP to make APROM 201h as a byte of
// Data Flash when user code is executed in APROM.
//******************************************************************************
#define PAGE_ERASE_AP 0x22
#define BYTE_PROGRAM_AP 0x21
/*Data Flash, as part of APROM, is read by MOVC. Data Flash can be defined as
128-element array in ��code�� area from absolute address 0x0200 */
volatile unsigned char code Data_Flash[128] _at_ 0x0200;
Main (void)
{
TA = 0xAA; //CHPCON is TA protected
TA = 0x55;
CHPCON |= 0x01; //IAPEN = 1, enable IAP mode
TA = 0xAA; //IAPUEN is TA protected
TA = 0x55;
IAPUEN |= 0x01; //APUEN = 1, enable APROM update
IAPCN = PAGE_ERASE_AP; //Erase page 200h~27Fh
IAPAH = 0x02;
IAPAL = 0x00;
IAPFD = 0xFF;
TA = 0xAA; //IAPTRG is TA protected
TA = 0x55;
IAPTRG |= 0x01; //write ��1�� to IAPGO to trigger IAP process
IAPCN = BYTE_PROGRAM_AP; // Program 201h with 55h
IAPAH = 0x02;
IAPAL = 0x01;

IAPFD = 0x55;

TA = 0xAA;
TA = 0x55;
IAPTRG |= 0x01; //write ��1�� to IAPGO to trigger IAP process
TA = 0xAA; //IAPUEN is TA protected
TA = 0x55;
IAPUEN &= ~0x01; //APUEN = 0, disable APROM update
TA = 0xAA; //CHPCON is TA protected
TA = 0x55;
CHPCON &= ~0x01; //IAPEN = 0, disable IAP mode
P0 = Data_Flash[1]; //Read content of address 200h+1
while(1);
}

 N76E003 APROM����DATAFLASH��EEPROM��ʽ

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

bit BIT_TMP;

//-------------------------------------------------------------------------
UINT8 read_APROM_BYTE(UINT16 code *u16_addr)
{
    UINT8 rdata;
    rdata = *u16_addr>>8;
    return rdata;
}
//-------------------------------------------------------------------------


/*****************************************************************************************************************
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;
}    
/******************************************************************************************************************/        


void main (void) 
{
        UINT8 datatemp;
/* -------------------------------------------------------------------------*/
/*  Dataflash use APROM area                                                                         */
/*    APROM 0x3800~0x38FF demo as dataflash                                                         */
/* Please use Memory window key in C:0x3800 to check earse result                      */          
/* -------------------------------------------------------------------------*/
    
//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);
}

����ᘌ�ÿһ��(g��)�{(di��o)�ú���(sh��)�M(j��n)���v��

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;
}    

�����@��(g��)����(sh��)���nj�DATAFLASH  EEPROM�M(j��n)���x������������(sh��)�o����ַ�͔�(sh��)��(j��)����ԓ����(sh��)�M(j��n)��̎��



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;
}    

��(bi��o)�t�����漰���ɂ�(g��)�Ĵ���IAPL�cIAPH���@��ʲô����������һ���փ�

�ɴ˿�֪���@�ɂ�(g��)�Ĵ����nj���16λ��ַ�ֹ�(ji��)����Ҳ�����fu8_addrl_r�@��(g��)׃���ĺ��x�ǽo�Ĵ����ṩ��ַ���������ҪһЩ��(sh��)��(j��)�ķ�����̎����

 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++;
    }
Save APROM data to XRAM

���Ȳ鿴N76E003�Ĕ�(sh��)��(j��)�փԵ�֪�@�wоƬ��XRAM�Ĵ�С�飺768�ֹ�(ji��)i ������С��0x300������߀��֪��Flashÿһ퓵Ĵ�С��128�ֹ�(ji��)��0x80���@�Κv�̄��օ^(q��)��0X100��256����

 

 

// 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; 

 

 Modify customer data in XRAM
 ��XRAM���޸Ŀ͑���(sh��)��(j��)

 

 

 

 

//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;
}    

�@���ֱ��^��(f��)�s���Һ��m(x��)��(hu��)�и��£������ʲô��Ҋ���h���gӭ�uՓ

֪�R(sh��)�]�ЌW(xu��)��ĕr(sh��)����ֻ�ܱ��C������Լ������첻һ��������(g��)�������oՓ������߀���������oՓ�nj��I(y��)���|(zh��)��߀�Ǟ���̎�������˽��

“(li��n)ϵ��ʽ0755-82591179

���棺0755-82591176

�]�䣺vicky@yingtexin.net

��ַ�����������A�^(q��)���νֵ����δ��973�f�����S��(chu��ng)�I(y��)�@A��2��A08