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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1641|回復: 4
打印 上一主題 下一主題
收起左側

STC89C52Rc單片機怎么把數據存入eeprom

[復制鏈接]
跳轉到指定樓層
樓主
ID:815936 發表于 2021-8-4 15:17 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
count1>=115就是通過按鍵修改115這個數據后掉電后怎么保持,謝謝朋友們了

Screenshot_20210804_150838.jpg (55.38 KB, 下載次數: 26)

Screenshot_20210804_150838.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:88256 發表于 2021-8-4 16:41 | 只看該作者
打開STC的下載軟件,找到范例程序,選STC89CxRC點EEPROM就行,也有匯編的

1.png (82.1 KB, 下載次數: 23)

1.png
回復

使用道具 舉報

板凳
ID:161164 發表于 2021-8-4 16:42 | 只看該作者
  1. /*------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ---------------------------------------------*/
  3. /* --- STC89-90xx Series MCU ISP/IAP/EEPROM Demo -------------------*/
  4. /* If you want to use the program or the program referenced in the  */
  5. /* article, please specify in which data and procedures from STC    */
  6. /*------------------------------------------------------------------*/

  7. #include "reg51.h"
  8. #include "intrins.h"

  9. typedef unsigned char BYTE;
  10. typedef unsigned int WORD;

  11. /*Declare SFR associated with the IAP */
  12. sfr IAP_DATA    =   0xE2;           //Flash data register
  13. sfr IAP_ADDRH   =   0xE3;           //Flash address HIGH
  14. sfr IAP_ADDRL   =   0xE4;           //Flash address LOW
  15. sfr IAP_CMD     =   0xE5;           //Flash command register
  16. sfr IAP_TRIG    =   0xE6;           //Flash command trigger
  17. sfr IAP_CONTR   =   0xE7;           //Flash control register

  18. /*Define ISP/IAP/EEPROM command*/
  19. #define CMD_IDLE    0               //Stand-By
  20. #define CMD_READ    1               //Byte-Read
  21. #define CMD_PROGRAM 2               //Byte-Program
  22. #define CMD_ERASE   3               //Sector-Erase

  23. /*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
  24. //#define ENABLE_IAP 0x80           //if SYSCLK<40MHz
  25. #define ENABLE_IAP   0x81           //if SYSCLK<20MHz
  26. //#define ENABLE_IAP x82            //if SYSCLK<10MHz
  27. //#define ENABLE_IAP 0x83           //if SYSCLK<5MHz

  28. //Start address for STC89C58xx EEPROM
  29. #define IAP_ADDRESS 0x08000

  30. void Delay(BYTE n);
  31. void IapIdle();
  32. BYTE IapReadByte(WORD addr);
  33. void IapProgramByte(WORD addr, BYTE dat);
  34. void IapEraseSector(WORD addr);

  35. BYTE count1_Old;

  36. void main()
  37. {
  38.         count1 = IapReadByte(0x2000);
  39.         count1_Old = count1;
  40.     while (1)
  41.         {
  42.                 if(count1_Old != count1)
  43.                 {
  44.                         IapEraseSector(0x2000);
  45.                         IapProgramByte(0x2000, count1);
  46.                         count1_Old = count1;
  47.                 }
  48.                 //你的代碼
  49.                
  50.         };
  51. }

  52. /*----------------------------
  53. Software delay function
  54. ----------------------------*/
  55. void Delay(BYTE n)
  56. {
  57.     WORD x;

  58.     while (n--)
  59.     {
  60.         x = 0;
  61.         while (++x);
  62.     }
  63. }

  64. /*----------------------------
  65. Disable ISP/IAP/EEPROM function
  66. Make MCU in a safe state
  67. ----------------------------*/
  68. void IapIdle()
  69. {
  70.     IAP_CONTR = 0;                  //Close IAP function
  71.     IAP_CMD = 0;                    //Clear command to standby
  72.     IAP_TRIG = 0;                   //Clear trigger register
  73.     IAP_ADDRH = 0x80;               //Data ptr point to non-EEPROM area
  74.     IAP_ADDRL = 0;                  //Clear IAP address to prevent misuse
  75. }

  76. /*----------------------------
  77. Read one byte from ISP/IAP/EEPROM area
  78. Input: addr (ISP/IAP/EEPROM address)
  79. Output:Flash data
  80. ----------------------------*/
  81. BYTE IapReadByte(WORD addr)
  82. {
  83.     BYTE dat;                       //Data buffer

  84.     IAP_CONTR = ENABLE_IAP;         //Open IAP function, and set wait time
  85.     IAP_CMD = CMD_READ;             //Set ISP/IAP/EEPROM READ command
  86.     IAP_ADDRL = addr;               //Set ISP/IAP/EEPROM address low
  87.     IAP_ADDRH = addr >> 8;          //Set ISP/IAP/EEPROM address high
  88.     IAP_TRIG = 0x46;                //Send trigger command1 (0x46)
  89.     IAP_TRIG = 0xb9;                //Send trigger command2 (0xb9)
  90.     _nop_();                        //MCU will hold here until ISP/IAP/EEPROM operation complete
  91.     dat = IAP_DATA;                 //Read ISP/IAP/EEPROM data
  92.     IapIdle();                      //Close ISP/IAP/EEPROM function

  93.     return dat;                     //Return Flash data
  94. }

  95. /*----------------------------
  96. Program one byte to ISP/IAP/EEPROM area
  97. Input: addr (ISP/IAP/EEPROM address)
  98.        dat (ISP/IAP/EEPROM data)
  99. Output:-
  100. ----------------------------*/
  101. void IapProgramByte(WORD addr, BYTE dat)
  102. {
  103.     IAP_CONTR = ENABLE_IAP;         //Open IAP function, and set wait time
  104.     IAP_CMD = CMD_PROGRAM;          //Set ISP/IAP/EEPROM PROGRAM command
  105.     IAP_ADDRL = addr;               //Set ISP/IAP/EEPROM address low
  106.     IAP_ADDRH = addr >> 8;          //Set ISP/IAP/EEPROM address high
  107.     IAP_DATA = dat;                 //Write ISP/IAP/EEPROM data
  108.     IAP_TRIG = 0x46;                //Send trigger command1 (0x46)
  109.     IAP_TRIG = 0xb9;                //Send trigger command2 (0xb9)
  110.     _nop_();                        //MCU will hold here until ISP/IAP/EEPROM operation complete
  111.     IapIdle();
  112. }

  113. /*----------------------------
  114. Erase one sector area
  115. Input: addr (ISP/IAP/EEPROM address)
  116. Output:-
  117. ----------------------------*/
  118. void IapEraseSector(WORD addr)
  119. {
  120.     IAP_CONTR = ENABLE_IAP;         //Open IAP function, and set wait time
  121.     IAP_CMD = CMD_ERASE;            //Set ISP/IAP/EEPROM ERASE command
  122.     IAP_ADDRL = addr;               //Set ISP/IAP/EEPROM address low
  123.     IAP_ADDRH = addr >> 8;          //Set ISP/IAP/EEPROM address high
  124.     IAP_TRIG = 0x46;                //Send trigger command1 (0x46)
  125.     IAP_TRIG = 0xb9;                //Send trigger command2 (0xb9)
  126.     _nop_();                        //MCU will hold here until ISP/IAP/EEPROM operation complete
  127.     IapIdle();
  128. }

復制代碼


評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:130230 發表于 2021-8-4 16:58 | 只看該作者
直接用寫flash就行,stcisp上有例程。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久亚洲精品国产 | 午夜精品久久久久久久久久久久久 | 操亚洲 | 亚洲精品资源 | 麻豆精品国产免费 | 国产精品自产av一区二区三区 | 久久综合伊人一区二区三 | 亚洲国产第一页 | 色资源在线观看 | 免费人成在线观看网站 | 亚洲美女视频 | 欧美日韩综合 | 国产精品视频播放 | 久草视频在线播放 | 三级成人在线 | 2一3sex性hd| 国产精品亚洲视频 | 成人国产精品免费观看视频 | 一本色道精品久久一区二区三区 | 亚洲一区二区免费视频 | 我爱操 | 日韩成人在线观看 | 91视频免费观看 | 精品亚洲一区二区三区 | 亚洲综合成人网 | 黑人精品xxx一区一二区 | 日韩播放| 美美女高清毛片视频免费观看 | 成人av播放| 精品久久网 | 久久精品久久综合 | 亚洲一区二区在线视频 | 国产在线视频网 | 国产98色在线 | 日韩 | 婷婷二区 | 在线亚洲免费 | 成人免费视频一区 | 国产粉嫩尤物极品99综合精品 | 99久久亚洲 | 99久久久国产精品免费消防器 | 欧美成视频在线观看 |