您当前的位置:五五电子网电子知识单片机-工控设备STC单片机(STC90/89系列内部 EEPROM 放数据(C语言) 正文
STC90/89系列内部 EEPROM 放数据(C语言)

STC90/89系列内部 EEPROM 放数据(C语言)

点击数:7278 次   录入时间:03-04 11:52:58   整理:http://www.55dianzi.com   STC单片机(
    ISP_CONTR    =    ISP_CONTR | 0x80;       /* 1000,0000 */
}

/* 关闭 ISP,IAP 功能 */
void ISP_IAP_dISAble(void)
{
    ISP_CONTR    =    ISP_CONTR & 0x7f;    /* 0111,1111 */
    ISP_TRIG    =    0x00;
    EA            =   1;                    /* 开中断 */
}

/* 字节读 */
INT8U byte_read(INT16U byte_addr)
{
    ISP_ADDRH    =    (INT8U)(byte_addr >> 8);
    ISP_ADDRL    =    (INT8U)(byte_addr & 0x00ff);

    ISP_CMD        =    ISP_CMD    &    0xf8;        /* 1111,1000 */
    ISP_CMD        =    ISP_CMD    |    READ_AP_and_Data_Memory_Command;        /* 0000,0001 */

    ISP_IAP_enable();

    ISP_TRIG    =    0x46;
    ISP_TRIG    =    0xb9;
    _nop_();

    ISP_IAP_disable();
    return (ISP_DATA);
}

/* 扇区擦除 */
INT8U sector_erase(INT16U sector_addr)
{
    INT16U get_sector_addr    =    0;
    get_sector_addr            =    (sector_addr & 0xfe00); /* 1111,1110,0000,0000; 取扇区地址 */
    ISP_ADDRH                =    (INT8U)(get_sector_addr >> 8);
    ISP_ADDRL                =    0x00;

    ISP_CMD    =    ISP_CMD    &    0xf8;    /* 1111,1000 */
    ISP_CMD    =    ISP_CMD    |    SECTOR_ERASE_AP_and_Data_Memory_Command;    /* 0000,0011 */

    ISP_IAP_enable();
    ISP_TRIG    =    0x46;        /* 触发ISP_IAP命令 */
    ISP_TRIG    =    0xb9;        /* 触发ISP_IAP命令 */
     _nop_();

    ISP_IAP_disable();
    return OK;
}

/* 字节编程 */
INT8U byte_program(INT16U byte_addr, INT8U original_data)
{
    ISP_ADDRH    =    (INT8U)(byte_addr >> 8);
    ISP_ADDRL    =    (INT8U)(byte_addr & 0x00ff);

    ISP_CMD        =    ISP_CMD    &    0xf8;        /* 1111,1000 */
    ISP_CMD        =    ISP_CMD    |    PROGRAM_AP_and_Data_Memory_Command;        /* 0000,0010 */
    ISP_DATA    =    original_data;

    ISP_IAP_enable();
    ISP_TRIG    =    0x46;        /* 触发ISP_IAP命令 */
    ISP_TRIG    =    0xb9;        /* 触发ISP_IAP命令 */
    _nop_();

    ISP_IAP_disable();
    return    OK;
}

/* 字节编程并校验 */
INT8U byte_program_and_verify(INT16U byte_addr, INT8U original_data)
{
    ISP_ADDRH    =    (INT8U)(byte_addr >> 8);
    ISP_ADDRL    =    (INT8U)(byte_addr & 0x00ff);

    ISP_CMD        =    ISP_CMD    &    0xf8;        /* 1111,1000 */
    ISP_CMD        =    ISP_CMD    |    PROGRAM_AP_and_Data_Memory_Command;    /* 0000,0010 */
    ISP_DATA    =    original_data;

    ISP_IAP_enable();

    ISP_TRIG    =    0x46;
    ISP_TRIG    =    0xb9;
    _nop_();

    ISP_DATA    =    0x00;

    ISP_CMD        =    ISP_CMD    &    0xf8;        /* 1111,1000 */
    ISP_CMD        =    ISP_CMD    |    READ_AP_and_Data_Memory_Command;        /* 0000,0001 */

    ISP_TRIG    =    0x46;        /* 触发ISP_IAP命令 */
    ISP_TRIG    =    0xb9;        /* 触发ISP_IAP命令 */
    _nop_();

    ISP_IAP_disable();

    if(ISP_DATA    ==    original_data)
        return    OK;

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页


本文关键字:C语言  STC单片机(单片机-工控设备 - STC单片机(

《STC90/89系列内部 EEPROM 放数据(C语言)》相关文章>>>