找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4154|回復(fù): 8
收起左側(cè)

STC15W408AS單片機(jī)的內(nèi)部EEPROM使用源程序

  [復(fù)制鏈接]
ID:977804 發(fā)表于 2022-2-19 10:24 | 顯示全部樓層 |閱讀模式
論壇看到一個(gè)朋友上傳了這個(gè)的代碼,但是他的里面有些串口不相關(guān)的部分,我這個(gè)EEPROM只有最簡單的一個(gè)按鍵,一個(gè)LED,
題外話,一個(gè)C里面多個(gè)H文件時(shí),先用到的H,在C文件里先包含,

單片機(jī)源程序如下:
//說明
//  定義了一個(gè)BIT 位 y,上電讀取y值 ,附給LED,
//  按鍵切換LED狀態(tài),
//  斷電,重新上電,如果成功,LED則會(huì)還原斷電前狀態(tài)

#include<STC15W.H>
#include <intrins.h>  
#include<STC15EEPROM.H>        
#include<KEY_02.H>        

sbit led=P2^2;

void main()
{
        y=DU_eeprom(0x0400);   //上電,讀一次數(shù)值

        while(1)
        {
        led=y;                                   //把讀到的數(shù)附給led
        Key_Scan2();
        }
        
}




#ifndef __STC15EEPROM_H__
#define __STC15EEPROM_H__


//sfr  IAP_DATA=  0XC2;
//sfr  IAP_ADDRH        =   0XC3;
//sfr  IAP_ADDRL        =   0XC4;
//sfr  IAP_CMD   =   0XC5;
//sfr  IAP_TRIG  =    0XC6;
//sfr  IAP_CONTR        =  0XC7;


#define ENABLE_IAP 0x82
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_PROGRAM 2
#define CMD_ERASE 3



typedef unsigned char BYTE;
typedef unsigned int WORD;
//Byte IapReadByte(WORD addr);
//#define IAP_ADDRESS 0x0400
//BYTE IapReadByte(WORD addr);


// 關(guān)閉 IAP
void iapidle()
{
IAP_CONTR=0;
IAP_CMD=0;
IAP_TRIG=0X80;
IAP_ADDRL=0;
}

//  讀一個(gè)字節(jié)
BYTE DU_eeprom(WORD addr)
{
BYTE dat;
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_READ;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_TRIG=0x5a;
IAP_TRIG=0XA5;
_nop_();
dat=IAP_DATA;
iapidle();

return dat;

}

//  寫一個(gè)字節(jié)
void XIE_eeprom(WORD addr,BYTE dat)
{

IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_PROGRAM;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;
IAP_DATA=dat;
IAP_TRIG=0X5a;
IAP_TRIG=0XA5;
_nop_();

iapidle();
}

//  扇區(qū)擦除
void CA_eeprom(WORD addr)
{
IAP_CONTR=ENABLE_IAP;
IAP_CMD=CMD_ERASE;
IAP_ADDRL=addr;
IAP_ADDRH=addr>>8;

IAP_TRIG=0X5a;
IAP_TRIG=0XA5;
_nop_();

iapidle();
}




#endif






#ifndef __KEY_02_H__
#define ___KEY_02_H__

#define u8 unsigned char
sbit KEY_02=P3^4;
bit y;

void Key_Scan2()        ///////////////////////////////////按鍵1
{
        static u8 j2=0,k2=0;

        if(KEY_02==0)
        {
                if(j2==0)
                {
                        if(KEY_02==0&&k2++>=20)
                        {
                            j2=1;
                                                        y=~y;
                                                        CA_eeprom(0x0400);        //先擦
                                                        XIE_eeprom(0x0400,y);        //再寫
                        }                       
                }
        }
        else  //按鍵釋放
        {
                j2=0;
                k2=0;
        }
}



#endif


以上的Keil代碼工程下載: 3 單獨(dú)測試EEPROM -把其他的H文件刪了.rar (23.6 KB, 下載次數(shù): 92)

評分

參與人數(shù) 2黑幣 +62 收起 理由
catlu + 12
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:230500 發(fā)表于 2022-3-5 15:13 | 顯示全部樓層
不錯(cuò), 值得我們這些新手學(xué)習(xí)了解!
回復(fù)

使用道具 舉報(bào)

ID:399179 發(fā)表于 2022-3-23 21:11 來自觸屏版 | 顯示全部樓層
一直無法實(shí)現(xiàn)
回復(fù)

使用道具 舉報(bào)

ID:977804 發(fā)表于 2022-3-23 22:16 來自觸屏版 | 顯示全部樓層
快樂眼淚 發(fā)表于 2022-3-23 21:11
一直無法實(shí)現(xiàn)

你是完全用的我這個(gè)代碼嗎?單片機(jī)是這個(gè)型號嗎?我測試是正?捎茫虐l(fā)上來的,可惜這個(gè)型號沒有仿真,
回復(fù)

使用道具 舉報(bào)

ID:977804 發(fā)表于 2022-3-23 22:18 來自觸屏版 | 顯示全部樓層
a399288395 發(fā)表于 2022-3-5 15:13
不錯(cuò), 值得我們這些新手學(xué)習(xí)了解!

同是新手,我也是東拼西湊的
回復(fù)

使用道具 舉報(bào)

ID:960619 發(fā)表于 2022-3-23 23:00 來自觸屏版 | 顯示全部樓層
Stc的E2PROM在官方下載軟件有現(xiàn)成的。
回復(fù)

使用道具 舉報(bào)

ID:977804 發(fā)表于 2022-3-24 08:22 來自觸屏版 | 顯示全部樓層
baobao125 發(fā)表于 2022-3-23 23:00
Stc的E2PROM在官方下載軟件有現(xiàn)成的。

這就是官方手冊里抄來的,但是改了判斷方法,只用。只用一個(gè)按鍵,一個(gè)led來判斷掉電保存是否正常。
回復(fù)

使用道具 舉報(bào)

ID:796012 發(fā)表于 2022-5-17 16:02 | 顯示全部樓層
我實(shí)驗(yàn)可以了,只是要兩只按鍵控制,1開2關(guān),任意按鍵保存0或1就可以了。只是欠缺掉電檢測
回復(fù)

使用道具 舉報(bào)

ID:795427 發(fā)表于 2023-1-19 13:05 | 顯示全部樓層
手冊上,STC15W408AS的 EEPROM起始扇區(qū)地址在:0x2000,你的程序的 EEPROM起始扇區(qū)地址寫的是0x400,該起始地址對應(yīng)的是STC15W401AS型號的才對。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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