欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
最簡單的STC8單片機EEPROM讀寫功能驗證代碼,無需串口回傳
[打印本頁]
作者:
千早愛音愛玩51
時間:
2025-7-4 19:59
標題:
最簡單的STC8單片機EEPROM讀寫功能驗證代碼,無需串口回傳
這段代碼用于驗證EEPROM功能,只需要測試IO電平就可以驗證EEPROM讀寫代碼是否正常,使用了一個中間值A,先把0X0A(十進制10)寫入EEPROM的0100H,然后再讀取把這個值賦予給A,然后再賦予給P3寄存器,改變預期的IO電平。
只要測量到IO電平改變,就能證明EEPROM被正確的讀寫。
#include "STC8G.H"
#include "intrins.H"
unsigned int addr = 0x0100;//EEPROM寫入地址為0100H
void IAP_OPERATE(void){//IAP操作集成,每次EEPROM操作都需要調用這個
IAP_TPS = 0X06;
IAP_CONTR = 0X80;//使能eeprom操作
IAP_ADDRL =addr; //取低8位
IAP_ADDRH =addr >> 8;//取高8位
IAP_TRIG = 0X5A;
IAP_TRIG = 0XA5;//寫完觸發命令后,CPU會進入IDLE,讀完才會恢復,無需等待標志
_nop_();_nop_();_nop_();_nop_();
}
void IAP_IDLE(){//IAP關閉
IAP_CONTR = 0X00;
IAP_CMD = 0X00;
IAP_TRIG = 0X00;
IAP_ADDRH = 0X80;//將地址設置到非IAP區
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;//將計數器值存儲在eeprom數據寄存器中
IAP_CMD = 0X02;//寫命令
IAP_OPERATE();
IAP_IDLE();
}
unsigned char A;//中間值A
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,應該在P33和P31測得高電平
EEPROM_READ();
P3 = A;
while(1);
}
作者:
huxingjie9
時間:
2025-7-6 08:16
學習了,謝謝
作者:
千早愛音愛玩51
時間:
2025-12-21 00:39
最后的eeprom_read();函數,可以改成unsigned int
改成這樣
unsigned int EEPROM_READ(void){
unsigned char B;
IAP_CMD = 0X01;//EEPROM讀命令
IAP_OPERATE();
B = IAP_DATA;
IAP_IDLE();
return B;
}
如此一來直接把想要賦值的量傳遞就行了
比如
counter = EEPROM_READ();
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1