欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: stc EEPROM 讀寫錯誤,折騰一天,換了個下載軟件,好了 [打印本頁]

作者: ZXHREG    時間: 2017-9-26 22:55
標(biāo)題: stc EEPROM 讀寫錯誤,折騰一天,換了個下載軟件,好了
本帖最后由 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標(biāo)志
    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);          //當(dāng) xx=12000的時候,yy=11744;xx=15000,yy=14744,當(dāng)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++;         //按鍵按下松開計一次按鍵過程
        }
}
        


作者: yzwzfyz    時間: 2017-9-27 07:09
你要達(dá)成的目的是什么?現(xiàn)實情況是什么?
作者: ZXHREG    時間: 2017-9-27 08:12
yzwzfyz 發(fā)表于 2017-9-27 07:09
你要達(dá)成的目的是什么?現(xiàn)實情況是什么?

很簡單,就是試試如何寫入一個整數(shù),
作者: wulin    時間: 2017-9-27 09:33
程序沒有看明白,但是EEPROM讀寫一次只能1個字節(jié),大數(shù)值需要分解為多字節(jié)讀寫。
作者: ZXHREG    時間: 2017-9-27 12:12
本帖最后由 ZXHREG 于 2017-9-27 19:29 編輯
wulin 發(fā)表于 2017-9-27 09:33
程序沒有看明白,但是EEPROM讀寫一次只能1個字節(jié),大數(shù)值需要分解為多字節(jié)讀寫。

是下載軟件的事,換了低版本沒事了
作者: ZXHREG    時間: 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ù)




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

建議參考STC程序范例“EEPROM多字節(jié)連續(xù)操作”
作者: ZXHREG    時間: 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,會出錯,換了低版本就沒問題了




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