久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

STC8H單片機(jī)里面EEPROM檢查是否第一次上電問題

[復(fù)制鏈接]
ID:298743 發(fā)表于 2024-7-4 11:29 | 顯示全部樓層 |閱讀模式
我這里的        if(dat != First_ON)                //檢測(cè)是否第一次上電     我這個(gè)程序無論多少次上電都會(huì)觸發(fā)條件,求各位大佬指點(diǎn)一下為啥




#define First_ON 0x88



void main()
{
        unsigned char dat;
        Uart1_Init();
        dat = IapRead(0x0200);
        sendByte(dat);

        sendByte(IapRead(0x0000));

        if(dat != First_ON)                //檢測(cè)是否第一次上電
        {
                    IapProgram(0x0200, 0x88);
                        sendByte(IapRead(0x0200));
                    IapProgram(0x0000, 0x0A);
                        dat = 1;
        }

        sendByte(dat);

        dat = IapRead(0x0000);
        sendByte(dat);

        IapErase(0x0000);
        dat = IapRead(0x0000);
        sendByte(dat);


    IapProgram(0x0000, 0x05);
        dat = IapRead(0x0000);
        sendByte(dat);


        while(1);        
}

void Uart1_Init(void)        //4800bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR &= 0xBF;                //定時(shí)器時(shí)鐘12T模式
        AUXR &= 0xFE;                //串口1選擇定時(shí)器1為波特率發(fā)生器
        TMOD &= 0x0F;                //設(shè)置定時(shí)器模式
        TMOD |= 0x20;                //設(shè)置定時(shí)器模式
        TL1 = 0xFA;                        //設(shè)置定時(shí)初始值
        TH1 = 0xFA;                        //設(shè)置定時(shí)重載值
        ET1 = 0;                        //禁止定時(shí)器中斷
        TR1 = 1;                        //定時(shí)器1開始計(jì)時(shí)
}

void IapIdle()        
{
    IAP_CONTR = 0;                              //關(guān)閉IAP功能
    IAP_CMD = 0;                                //清除命令寄存器
    IAP_TRIG = 0;                               //清除觸發(fā)寄存器
    IAP_ADDRH = 0x80;                           //將地址設(shè)置到非IAP區(qū)域
    IAP_ADDRL = 0;
}

char IapRead(int addr) //扇區(qū)讀取函數(shù) 讀一個(gè)字節(jié)
{
    char dat;

    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 11;                               //設(shè)置等待參數(shù)12MHz
    IAP_CMD = 1;                                //設(shè)置IAP讀命令
    IAP_ADDRL = addr;                           //設(shè)置IAP低地址
    IAP_ADDRH = addr >> 8;                      //設(shè)置IAP高地址
    IAP_TRIG = 0x5a;                            //寫觸發(fā)命令(0x5a)
    IAP_TRIG = 0xa5;                            //寫觸發(fā)命令(0xa5)
    _nop_();
    dat = IAP_DATA;                             //讀IAP數(shù)據(jù)
    IapIdle();                                  //關(guān)閉IAP功能

    return dat;
}

void IapProgram(int addr, char dat)                   //寫一個(gè)字節(jié)
{
    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 11;                               //設(shè)置等待參數(shù)12MHz
    IAP_CMD = 2;                                //設(shè)置IAP寫命令
    IAP_ADDRL = addr;                           //設(shè)置IAP低地址
    IAP_ADDRH = addr >> 8;                      //設(shè)置IAP高地址
    IAP_DATA = dat;                             //寫IAP數(shù)據(jù)
    IAP_TRIG = 0x5a;                            //寫觸發(fā)命令(0x5a)
    IAP_TRIG = 0xa5;                            //寫觸發(fā)命令(0xa5)
    _nop_();
    IapIdle();                                  //關(guān)閉IAP功能
}

void IapErase(int addr)        //扇區(qū)擦除函數(shù)
{
    IAP_CONTR = 0x80;                           //使能IAP
    IAP_TPS = 11;                               //設(shè)置等待參數(shù)12MHz
    IAP_CMD = 3;                                //設(shè)置IAP擦除命令
    IAP_ADDRL = addr;                           //設(shè)置IAP低地址
    IAP_ADDRH = addr >> 8;                      //設(shè)置IAP高地址
    IAP_TRIG = 0x5a;                            //寫觸發(fā)命令(0x5a)
    IAP_TRIG = 0xa5;                            //寫觸發(fā)命令(0xa5)
    _nop_();                                    //
    IapIdle();                                  //關(guān)閉IAP功能
}

回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-7-4 11:46 | 顯示全部樓層
我用串口輸出檢測(cè)到第二次上電時(shí),dat已經(jīng)是等于0x88了,但是還是滿總條件進(jìn)入IF里面了
回復(fù)

使用道具 舉報(bào)

ID:276663 發(fā)表于 2024-7-4 15:36 | 顯示全部樓層
直接改if(dat != 0x88)試試
沒看出來問題。
回復(fù)

使用道具 舉報(bào)

ID:1012735 發(fā)表于 2024-7-5 05:25 | 顯示全部樓層
        if(dat != First_ON)                //檢測(cè)是否第一次上電
        {
                      IapErase(0x0200);                             //
                     IapProgram(0x0200, 0x88);
                     sendByte(IapRead(0x0200));

                     IapErase(0x0000);                            //
                     IapProgram(0x0000, 0x0A);
                         dat = 1;
         }
回復(fù)

使用道具 舉報(bào)

ID:298743 發(fā)表于 2024-7-5 08:34 | 顯示全部樓層
IdeaMing 發(fā)表于 2024-7-4 15:36
直接改if(dat != 0x88)試試
沒看出來問題。

這樣也不行,這樣也會(huì)每次觸發(fā)
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2024-7-5 10:07 | 顯示全部樓層
應(yīng)該是符號(hào)(char 和 unsigned char)問題,,,,沒芯片環(huán)境測(cè)試。

用別的單片機(jī)試了一下,和8#說的原因一致。


回復(fù)

使用道具 舉報(bào)

ID:744809 發(fā)表于 2024-7-5 10:45 | 顯示全部樓層
asdadqw2 發(fā)表于 2024-7-5 08:34
這樣也不行,這樣也會(huì)每次觸發(fā)

你要改成if(dat == First_ON)吧?!=感覺不對(duì)啊
回復(fù)

使用道具 舉報(bào)

ID:744809 發(fā)表于 2024-7-5 10:46 | 顯示全部樓層
IapProgram(0x0000, 0x0A);你看看這個(gè)是不是按頁(yè)擦除的,可能是你寫0x0000地址的時(shí)候,把0x0200的數(shù)據(jù)也一起擦除掉了
回復(fù)

使用道具 舉報(bào)

ID:226055 發(fā)表于 2024-7-5 13:55 | 顯示全部樓層
單片機(jī)型號(hào)很關(guān)鍵,STC8H說的太籠統(tǒng)了。有些出廠是沒有片內(nèi)EEPROM的,盡可能選擇出廠就帶EEPROM的來測(cè)試。
回復(fù)

使用道具 舉報(bào)

ID:402383 發(fā)表于 2024-7-10 16:54 | 顯示全部樓層
燒錄勾選擦除后,初次上電去讀取數(shù)據(jù),數(shù)據(jù)值默認(rèn)是0XFF,我是參考STC8H EEPROM的例程《EEPROM基本操作》得出的結(jié)論。
這樣改判斷語句:如果dat==0XFF 就被認(rèn)為初次上電,然后賦dat某一個(gè)值進(jìn)行“復(fù)位”。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区二区三区在线观看 | 一级全黄视频 | 国产伦精品 | 久久久久综合 | 天天干天天爽 | 91在线电影 | 久久综合影院 | 午夜成人免费视频 | 免费视频一区二区 | 性欧美xxxx | 365夜爽爽欧美性午夜免费视频 | 亚洲欧美日韩精品久久亚洲区 | 欧美人妇做爰xxxⅹ性高电影 | 天天操网 | 亚洲欧美成人 | 在线色网 | 另类专区亚洲 | 国产精品精品久久久久久 | 成人免费激情视频 | 91中文在线观看 | 奇米视频777| 久久久久久久久久久久久久av | 日韩欧美在线视频一区 | 日本一区二区视频 | 日韩欧美一区二区三区 | 一区在线播放 | 国产天天操 | 国产精品久久久久久中文字 | 色网站在线免费观看 | 免费中文字幕日韩欧美 | 中文字幕一区二区在线观看 | 亚洲一区二区三区在线播放 | 国产欧美在线观看 | 国产精品中文字幕在线 | av资源中文在线 | 亚洲成人精品 | 欧美天堂在线 | 美女天天干 | 亚洲欧美日韩电影 | 午夜国产一级 | 日韩欧美国产一区二区三区 |