標題: 關(guān)于51單片機存儲FLASH的問題 [打印本頁]

作者: Royal丶豪    時間: 2019-1-16 10:21
標題: 關(guān)于51單片機存儲FLASH的問題
STC89C52 STC12 STC15 STC8系列等 串口接收到數(shù)據(jù) 如何存儲在FLASH中 然后換串口或者 在此串口中換器件 并且發(fā)送存儲的數(shù)據(jù)。求資料,求程序,或者指教下該去看哪方面的東西。

作者: ggzzc    時間: 2019-1-16 11:39
直接看數(shù)據(jù)手冊,中間Flash編程部分詳細看。網(wǎng)上例程非常多。
作者: ahshmj    時間: 2019-1-16 14:58
數(shù)據(jù)手冊中有示范程序,可以直接套用。
作者: Jason_Jay    時間: 2019-1-16 15:04
STCISP  自帶的例程 有擦寫EEPROM、串口的例程

作者: yy625    時間: 2019-1-16 15:26
給一個STC8的作為參考
u8 iap_byte_rd(u16 addr)
{
    u8  tmp;
   
    F0 = EA;
    EA = 0;
    IAP_CONTR = 0x80;
    IAP_CMD   = 1;
    IAP_ADDRH = (u8)(addr >> 8);
    IAP_ADDRL = addr;
    IAP_TRIG  = 0x5a;
    IAP_TRIG  = 0xa5;
    _nop_();
    tmp       = IAP_DATA;
    IAP_CONTR = 0;
    IAP_CMD   = 0;
    IAP_TRIG  = 0;
    IAP_ADDRH = 0xff;
    IAP_ADDRL = 0xff;
    EA = F0;
   
    return tmp;
}

void iap_byte_wr(u16 addr, u8 val)
{
    F0 = EA;
    EA = 0;
    IAP_CONTR = 0x80;
    IAP_CMD   = 2
    IAP_ADDRH = (u8)(addr >> 8);
    IAP_ADDRL = addr;
    IAP_DATA  = val;
    IAP_TRIG  = 0x5a;
    IAP_TRIG  = 0xa5;
    _nop_();
    IAP_CONTR = 0;
    IAP_CMD   = 0;
    IAP_TRIG  = 0;
    IAP_ADDRH = 0xff;
    IAP_ADDRL = 0xff;
    EA = F0;
}

void iap_sec_erase(u16 addr)
{
    F0 = EA;
    EA = 0;
    IAP_ADDRH = (u8)(addr >> 8);
    IAP_ADDRL = addr;
    IAP_CONTR = 0x80;
    IAP_CMD   = 3;
    IAP_TRIG  = 0x5a;
    IAP_TRIG  = 0xa5;
    _nop_();
    IAP_CONTR = 0;
    IAP_CMD   = 0;
    IAP_TRIG  = 0;
    IAP_ADDRH = 0xff;
    IAP_ADDRL = 0xff;
    EA = F0;
}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1