找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 81|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

最簡單的STC8單片機(jī)EEPROM讀寫功能驗證代碼,無需串口回傳

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:1155837 發(fā)表于 2025-7-4 19:59 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
這段代碼用于驗證EEPROM功能,只需要測試IO電平就可以驗證EEPROM讀寫代碼是否正常,使用了一個中間值A(chǔ),先把0X0A(十進(jìn)制10)寫入EEPROM的0100H,然后再讀取把這個值賦予給A,然后再賦予給P3寄存器,改變預(yù)期的IO電平。只要測量到IO電平改變,就能證明EEPROM被正確的讀寫。
#include "STC8G.H"
#include "intrins.H"
unsigned int addr = 0x0100;//EEPROM寫入地址為0100H
void IAP_OPERATE(void){//IAP操作集成,每次EEPROM操作都需要調(diào)用這個
    IAP_TPS = 0X06;
    IAP_CONTR = 0X80;//使能eeprom操作
    IAP_ADDRL =addr; //取低8位
    IAP_ADDRH =addr >> 8;//取高8位
    IAP_TRIG = 0X5A;
    IAP_TRIG = 0XA5;//寫完觸發(fā)命令后,CPU會進(jìn)入IDLE,讀完才會恢復(fù),無需等待標(biāo)志
    _nop_();_nop_();_nop_();_nop_();
}
void IAP_IDLE(){//IAP關(guān)閉
    IAP_CONTR = 0X00;
    IAP_CMD = 0X00;
    IAP_TRIG = 0X00;
    IAP_ADDRH = 0X80;//將地址設(shè)置到非IAP區(qū)
    IAP_ADDRL = 0X00;
    IAP_DATA = 0X00;
}
void EEPROM_ERASE(void){//擦除EEPROM
    IAP_CMD = 0X03;//擦除命令
    IAP_OPERATE();
    IAP_IDLE();
}
void EEPROM_WRITE(unsigned char B){
    EEPROM_ERASE();//先擦除
    IAP_DATA = B;//將計數(shù)器值存儲在eeprom數(shù)據(jù)寄存器中
    IAP_CMD = 0X02;//寫命令
    IAP_OPERATE();
    IAP_IDLE();
}
unsigned char A;//中間值A(chǔ)
void EEPROM_READ(void){
    IAP_CMD = 0X01;//EEPROM讀命令
    IAP_OPERATE();
    A = IAP_DATA;//這里可以寫想賦予給的值
    IAP_IDLE();
}
void main(void){
    P3 = 0X0F;
    P3M0 = 0X00;
    P3M1 = 0X00;
    EEPROM_WRITE(0X0A);//1010,應(yīng)該在P33和P31測得高電平
    EEPROM_READ();
    P3 = A;
    while(1);
    }



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

樓主
ID:880573 發(fā)表于 2025-7-6 08:16 | 只看該作者
學(xué)習(xí)了,謝謝
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表