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

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

QQ登錄

只需一步,快速開(kāi)始

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

求助大佬,STC8G單片機(jī)的EEPROM的疑惑

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:718536 發(fā)表于 2021-6-12 22:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
參考STC8G單片機(jī)的技術(shù)文檔里面的例程,在帶電狀態(tài)下EEPROM是可以寫(xiě),也可以讀的。但就是斷電后,在主程序里讀同一個(gè)地址。數(shù)據(jù)就是空白。什么都沒(méi)有。怎么辦呀?

貼上例程

#include<STC8.h>                 //STC15W系列單片機(jī)。晶振12MHZ
#include <INTRINS.H>
#define uint unsigned int   //宏命令,聲明uint替代unsignde int
#define uchar unsigned char

sfr        DATA1=0xC2;  //數(shù)據(jù)寄存器
sfr        ADDRH=0xC3; //地址寄存器高八位
sfr        ADDRL=0xC4; //地址寄存器低八位
sfr        CMD=0xC5;    //命令模式寄存器
sfr        TRIG=0xC6;    //命令觸發(fā)寄存器
sfr        CONTR=0xC7;  //控制寄存器
sfr        TPS=0xF5;       //等待時(shí)間控制繼存器


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


uchar read(uint add)//讀EEPROM子函數(shù),add為EEPROM讀數(shù)地址
{
                uchar dat;
        CONTR=0x80;       //定義控制寄存器工作時(shí)間,打開(kāi)控制寄存器,晶體為12M
        TPS=12;           //晶振為12MHZ
        CMD=1;            //選擇讀的方式
        ADDRH=add>>8;     //得到地址高八位
        ADDRL=add;        //得到地址低八位
        TRIG=0x5a;        //控制碼
        TRIG=0xa5;        //控制碼
         _nop_();         //延時(shí)
                 _nop_();
                 _nop_();
        dat=DATA1;
        return dat;//將值返回
        iapoff();
}


void iniap(uint add,uchar vale)//寫(xiě)EEPROM子函數(shù),add為EEPROM要寫(xiě)數(shù)的地址, vale為要存的數(shù)變量
{

        CONTR=0x80;//定義控制寄存器工作時(shí)間,打開(kāi)控制寄存器,晶體為12M
        TPS=12;//晶振為12MHZ
        CMD=0X02;//選擇寫(xiě)的方式
        ADDRH=add>>8;//得到地址高八位
        ADDRL=add;//得到地址低八位
        DATA1=vale;//將要存的數(shù)放進(jìn)存數(shù)寄存器DATA
        TRIG=0x5a;//控制碼
        TRIG=0xa5;//控制碼
         _nop_();//延時(shí)
         _nop_();
         _nop_();
        iapoff();
}


void del(uint add)//刪除子函數(shù)
{
        CONTR=0x80;

        TPS=12;//晶振為12MHZ
        CMD=3;//選擇寄存器方式
        ADDRH=add>>8;
        ADDRL=add;
        TRIG=0x5a;
        TRIG=0xa5;
         _nop_();
                 _nop_();
                 _nop_();
                 iapoff();
}


void key()
{   
     if(k1!=jat&num<=2){jat=k1,num++;}      
    if(jta==1)                                                //判斷JTA是否為1
  {               
     if(num==2)                                          //如果NUM是2
     {        
       bled=1;rled=0;                                   //藍(lán)燈滅,紅燈亮
       del(0x0f00);bled=0;                             //清除0X0F00這個(gè)EEPROM地址。
       iniap(0x0f00,1);bled=1;rled=1;             //寫(xiě)入0X0F00這個(gè)地址。注數(shù)1;所有燈滅。
       if(jta==read(0x0f00)){num=3;rled=0;}    //讀取一次0X0F00這個(gè)地址,判斷讀數(shù)是否JTA相等,直至相等就退出儲(chǔ)存狀態(tài)。
     }


  }
}

void main()
{  
   P0M0=0Xff;
   P0M1=0X00;
   P1M0=0X00;
   P1M1=0X00;
   P2M0=0X00;
   P2M1=0X00;
   P3M0=0X00;
   P3M1=0X00;
   P4M0=0X00;
   P4M1=0X00;
   P5M0=0X00;
   P5M1=0X00;
   P6M0=0X00;
   P6M1=0X00;
   P7M0=0X00;
   P7M1=0X00;

    shuxian=read(0x0f00);                    //如果是1,讀取EEPROM發(fā)送到數(shù)顯。
    while(1)   {
    key();
    }

}




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

使用道具 舉報(bào)

沙發(fā)
ID:718536 發(fā)表于 2021-6-13 03:24 | 只看該作者
看了官方技術(shù)手冊(cè)好像這個(gè)8G2K64S4這個(gè)是特殊型號(hào),可以自定義EEPROM尺寸的.....所以可能儲(chǔ)存地址有問(wèn)題。不過(guò)現(xiàn)在回家了,只能明天早上再驗(yàn)證了。定義1K容量EEPROM的話(huà),地址范圍應(yīng)該是0x0000~0x03ff.超出范圍值無(wú)效。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2021-6-13 10:51 | 只看該作者
suqianfu 發(fā)表于 2021-6-13 03:24
看了官方技術(shù)手冊(cè)好像這個(gè)8G2K64S4這個(gè)是特殊型號(hào),可以自定義EEPROM尺寸的.....所以可能儲(chǔ)存地址有問(wèn)題。 ...

8G2K64S4的EEPROM沒(méi)有固定地址,自定義地址放在用戶(hù)程序占用空間剩余下的任意扇區(qū)。重要事說(shuō)三遍:扇區(qū),扇區(qū),扇區(qū)。每個(gè)扇區(qū)512字節(jié),各扇區(qū)首地址以200H遞增,0x0000,0x0200,0x0400,......。
如同作業(yè)本,你寫(xiě)字用了3頁(yè)半,EEPROM只能從第5頁(yè)開(kāi)始。

樓主這句可能錯(cuò)了if(k1!=jat & num<=2)
按題意應(yīng)該是if(k1!=jat && num<=2)
回復(fù)

使用道具 舉報(bào)

地板
ID:718536 發(fā)表于 2021-6-14 16:48 | 只看該作者
wulin 發(fā)表于 2021-6-13 10:51
8G2K64S4的EEPROM沒(méi)有固定地址,自定義地址放在用戶(hù)程序占用空間剩余下的任意扇區(qū)。重要事說(shuō)三遍:扇區(qū), ...

嗯嗯,確實(shí)是地址問(wèn)題。現(xiàn)在可以正常讀寫(xiě)了。大佬,還有一個(gè)問(wèn)題,串口中斷導(dǎo)致了點(diǎn)陣的動(dòng)態(tài)掃描索引時(shí)序不一致而引起爆點(diǎn),就是有一行因?yàn)橹袛喽翢魰r(shí)間長(zhǎng)一點(diǎn),視覺(jué)上會(huì)特別亮。這個(gè)怎么處理呢?而且位置隨串口中斷次數(shù)不停變換。看著像鬼影。但跟鬼影又不同。難道點(diǎn)陣要用定時(shí)器中斷來(lái)掃描嗎?我是直接用P0口接的點(diǎn)陣。
回復(fù)

使用道具 舉報(bào)

5#
ID:57657 發(fā)表于 2021-6-15 00:03 | 只看該作者
EEPROM 只能把1寫(xiě)成0,無(wú)法把0寫(xiě)成1。
只有擦除后才可以恢復(fù)成1并寫(xiě)入新的數(shù)據(jù),至少擦1個(gè)扇區(qū)(512字節(jié))。
回復(fù)

使用道具 舉報(bào)

6#
ID:57657 發(fā)表于 2021-6-15 05:41 | 只看該作者
suqianfu 發(fā)表于 2021-6-14 16:48
嗯嗯,確實(shí)是地址問(wèn)題。現(xiàn)在可以正常讀寫(xiě)了。大佬,還有一個(gè)問(wèn)題,串口中斷導(dǎo)致了點(diǎn)陣的動(dòng)態(tài)掃描索引時(shí)序 ...

使用高優(yōu)先級(jí)定時(shí)器中斷控制點(diǎn)陣掃描
回復(fù)

使用道具 舉報(bào)

7#
ID:718536 發(fā)表于 2021-6-15 13:27 | 只看該作者
npn 發(fā)表于 2021-6-15 05:41
使用高優(yōu)先級(jí)定時(shí)器中斷控制點(diǎn)陣掃描

試過(guò)了,只要?jiǎng)討B(tài)掃描索引被打斷,就會(huì)造成那一行亮燈時(shí)間不一致視覺(jué)殘留久一丁點(diǎn)而顯得特別亮。我現(xiàn)在只能在串口中斷里面關(guān)顯示了。這樣整體看起來(lái)亮度均勻一點(diǎn),而沒(méi)有爆點(diǎn)。后續(xù)可能要用GN1640這種自帶定頻動(dòng)態(tài)掃描專(zhuān)門(mén)驅(qū)動(dòng)點(diǎn)陣的IC了。然后單片機(jī)只負(fù)責(zé)送數(shù)據(jù)。就是這樣成本會(huì)高一點(diǎn)。。。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久激情视频 | 亚洲www啪成人一区二区 | 国产精品欧美一区二区 | 成人精品鲁一区一区二区 | 伊人免费视频二 | 精品久久久久久亚洲综合网站 | 国产在线视频在线观看 | 日韩有码一区 | 久久九九影视 | 欧美一卡二卡在线观看 | 欧美一区二区在线 | 免费国产视频 | 日韩中文字幕一区二区 | 人碰人操 | 久久久久久久夜 | 国产成人精品久久二区二区91 | 亚洲精品视频在线观看免费 | 日韩一二三 | 日韩在线| 日本免费小视频 | 日本在线观看网址 | 日日干夜夜操 | 视频一区二区中文字幕日韩 | 国产成人亚洲精品 | 亚洲a视频 | 欧区一欧区二欧区三免费 | 一区二区伦理电影 | 国产成人精品一区二区三 | 日韩看片 | 狠狠狠色丁香婷婷综合久久五月 | 午夜精品一区二区三区在线观看 | 五月婷亚洲 | 永久免费在线观看 | 午夜精品一区 | 成人二区| 国产精品a久久久久 | 国产成人精品999在线观看 | 欧美99| 成人精品免费视频 | www.99热.com | 中文成人在线 |