发新帖我要提问
12
返回列表
打印
[技术问答]

N79E8132如何用ISP写掉电**

[复制链接]
楼主: 晓涵
手机看帖
扫描二维码
随时随地手机跟帖
21
void Flash_Page_Erase(unsigned int address)
{
        Enable_ISP();
        ISPCN=0x22;
        ISPAH=address/256;
        ISPAL=address%256;
        Trigger_ISP();
        Disable_ISP();        
}
页面擦除。

使用特权

评论回复
22
ivanchowst| | 2015-12-3 16:35 | 只看该作者
bit EA_Save_bit = 1;
void Clear_BOF(void)
{
    EA_Save_bit = EA;
    EA = 0;
    TA = 0xAA;
    TA = 0x55;
    PMCR &= 0xF3;
    EA = EA_Save_bit;
}
//-----------------------------------------------------------------------------------------------------------
void Enable_ISP_Mode(void)
{
    /* Enable ISP  */
ISPCN=0x30;
    EA_Save_bit = EA;
    EA = 0;
    TA = 0xAA;
    TA = 0x55;
    CHPCON |= 0x01;
    EA = 1;
Trigger_ISP();
}
//-----------------------------------------------------------------------------------------------------------
void Disable_ISP_Mode(void)
{
    /* Disable ISP */
ISPCN=0x30;
Trigger_ISP();
    EA_Save_bit = EA;
    EA = 0;
    TA = 0xAA;
    TA = 0x55;
    CHPCON &= 0xFE;
    EA = 1;//EA_Save_bit;
}
//-----------------------------------------------------------------------------------------------------------
void Trigger_ISP(void)
{
    EA_Save_bit = EA;
    EA = 0;
    EA = 0;
    TA = 0xAA;
    TA = 0x55;
    ISPTRG |= 0x01;//start
    EA = 1;//EA_Save_bit;
}
//-----------------------------------------------------------------------------------------------------------
void Erase_DATA(void)
{
    static uint u16Count;
    Enable_ISP_Mode();
    ISPCN = ERASE_ALL_DATA;
    for(u16Count=96;u16Count<128;u16Count++)
    {
        ISPAL = LOBYTE(u16Count*128);               // 96*128=12288=0x3000
        ISPAH = HIBYTE(u16Count*128);               // 96*128=12288=0x3000
        Trigger_ISP();
    }
    Disable_ISP_Mode();
}
//-----------------------------------------------------------------------------------------------------------
void Read_DATA(void)
{
uchar j = 0;
Enable_ISP_Mode();
    ISPAL = 0x00;
    ISPAH = 0x30;
    ISPCN = FLASH_READ_DATA;
if(j < 4)
{
        Trigger_ISP();  
  status_buff.flash_value[j] = ISPFD;
        ISPAL++;
        if(ISPAL == 0)
        {
            ISPAH++;
        }
    }
j++;
Disable_ISP_Mode();
}
//-----------------------------------------------------------------------------------------------------------
void Program_DATA(void)
{
uchar j = 0;
    Enable_ISP_Mode();
    ISPAL = 0x00;
    ISPAH = 0x30;
    ISPCN = BYTE_PROGRAM_DATA;
if(j < 4)
{
     ISPFD = status_buff.flash_value[j];
        Trigger_ISP();
        ISPAL++;
        if(ISPAL == 0)
        {
            ISPAH++;
        }
    }
j++;
Disable_ISP_Mode();
}

有大神可以帮我指点上面的程序在N79E815芯片中为什么没办法工作呢?
本人想要将键值保存到下次开机显示,请问我该怎么修改?@版主

使用特权

评论回复
23
QQ715209572| | 2016-5-10 16:19 | 只看该作者
WWW 这个有限制的吗?

使用特权

评论回复
24
598330983| | 2016-5-11 10:52 | 只看该作者
有寄存器可以通过ISP方式在Flash写数据的。

使用特权

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

本版积分规则