找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc EEPROM 讀寫錯誤,折騰一天,換了個下載軟件,好了

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:218365 發(fā)表于 2017-9-26 22:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 ZXHREG 于 2017-9-27 19:28 編輯

各位如果使用stp-isp 6.86F 的注意,是不是eeprom設(shè)置不正常

各位大神看看我這程序錯哪了,是eeprom 讀寫驗證過了沒有問題,程序主要是移位操作,沒有復(fù)雜的地方;
直接看while()循環(huán)部分吧,別的地方不重要
#include <stc8.h>
#include <eeprom.h>
#include <lcd.h>

unsigned char key1Down,key1Up;
unsigned int xx;
unsigned int xxAddr=0x0100;
sbit key1 =P1^6;

void Timer0Init(void)       //10毫秒@11.0592MHz
{
    AUXR &= 0x7F;       //定時器時鐘12T模式(cpu12分頻)
    TMOD &= 0xF0;       //設(shè)置定時器模式 T0GATE=0,T0_C/T=0,T0M1=0,T0M0=0;16位自動重裝模式
    TL0 = 0x00;     //設(shè)置定時初值
    TH0 = 0xDC;     //設(shè)置定時初值
    TF0 = 0;        //清除TF0標志
    TR0 = 1;        //定時器0開始計時
}

void Display(unsigned char a,unsigned int n)
{
        unsigned int x;
        x=n;
        lcdWriteCmd(0x80+a);//lcd顯示指針的地址
                        
        lcdWriteData(x/10000+0x30);
        lcdWriteData(x%10000/1000+0x30);
        lcdWriteData(x%1000/100+0x30);
        lcdWriteData(x%100/10+0x30);
        
        lcdWriteData(x%10+0x30);
        
}


void main()
{
        unsigned int yy;

        Timer0Init();
        lcdInit();
        ET0=1;
        EA=1;
        if(xx<6000) xx=6000;

        yy=IapRead(xxAddr);
        yy=yy<<8;
        yy=yy+IapRead(xxAddr+1);
        xx=yy;
        Display(2,xx);
        
        
        while(1)
         {
                if(key1Up>=10)         //按下松開KEY1, xx 加3000
                {
                        
                        if(xx<=60000) xx+=3000;
                        else xx=6000;
                        IapErase(xxAddr);
                        IapPrograme(xxAddr,xx>>8);
                        IapPrograme(xxAddr+1,xx);

                        yy=IapRead(xxAddr);
                        yy=yy<<8;
                        yy=yy+IapRead(xxAddr+1);

                        Display(0x42,xx);          //當 xx=12000的時候,yy=11744;xx=15000,yy=14744,當xx=18000,yy=18000


                        Display(0x02,yy);           //錯在哪了呢        21000對21000,24000對23744
                        

                        /*Display(2,xx);
                        Display(0x42,IapRead(xxAddr));         Display(0x48,IapRead(xxAddr+1)); */

                        key1Down=0; key1Up=0;
                        
        
                }
        }


}

void TM0_Isr() interrupt 1
{

        if(key1Up<10)
        {
                if(key1==0 && key1Down<10)         key1Down++;         //key1按下去抖
                if(key1Down==10 && key1==1)        key1Up++;         //按鍵按下松開計一次按鍵過程
        }
}
        

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2017-9-27 07:09 | 只看該作者
你要達成的目的是什么?現(xiàn)實情況是什么?
回復(fù)

使用道具 舉報

板凳
ID:218365 發(fā)表于 2017-9-27 08:12 | 只看該作者
yzwzfyz 發(fā)表于 2017-9-27 07:09
你要達成的目的是什么?現(xiàn)實情況是什么?

很簡單,就是試試如何寫入一個整數(shù),
回復(fù)

使用道具 舉報

地板
ID:213173 發(fā)表于 2017-9-27 09:33 | 只看該作者
程序沒有看明白,但是EEPROM讀寫一次只能1個字節(jié),大數(shù)值需要分解為多字節(jié)讀寫。
回復(fù)

使用道具 舉報

5#
ID:218365 發(fā)表于 2017-9-27 12:12 | 只看該作者
本帖最后由 ZXHREG 于 2017-9-27 19:29 編輯
wulin 發(fā)表于 2017-9-27 09:33
程序沒有看明白,但是EEPROM讀寫一次只能1個字節(jié),大數(shù)值需要分解為多字節(jié)讀寫。

是下載軟件的事,換了低版本沒事了
回復(fù)

使用道具 舉報

6#
ID:218365 發(fā)表于 2017-9-27 14:59 | 只看該作者
本帖最后由 ZXHREG 于 2017-9-27 19:30 編輯
wulin 發(fā)表于 2017-9-27 09:33
程序沒有看明白,但是EEPROM讀寫一次只能1個字節(jié),大數(shù)值需要分解為多字節(jié)讀寫。

程序就是想測試如何寫入雙字節(jié)整數(shù)



回復(fù)

使用道具 舉報

7#
ID:213173 發(fā)表于 2017-9-27 17:26 | 只看該作者
ZXHREG 發(fā)表于 2017-9-27 14:59
程序就是想測試如何寫入雙字節(jié)整數(shù)
整數(shù) 為 uint x, eeprom 地址 xAddr;

建議參考STC程序范例“EEPROM多字節(jié)連續(xù)操作”
回復(fù)

使用道具 舉報

8#
ID:218365 發(fā)表于 2017-9-27 23:00 | 只看該作者
wulin 發(fā)表于 2017-9-27 17:26
建議參考STC程序范例“EEPROM多字節(jié)連續(xù)操作”

應(yīng)該是最新的下載軟件在設(shè)置eeprom大小上出現(xiàn)問題,在512字節(jié)范圍內(nèi)沒有問題,超過512,會出錯,換了低版本就沒問題了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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