[技术问答] N76E003能使用内部EEPROM存储数据吗

[复制链接]
4965|10
 楼主| lizhenming 发表于 2017-7-12 15:37 | 显示全部楼层 |阅读模式
各位大神们!!N76E003能使用内部EEPROM存储数据吗N76E003能使用内部EEPROM存储数据吗?
怎么用?有相关例程吗?小弟跪求!!
734774645 发表于 2017-7-12 16:41 | 显示全部楼层
应该可以。
734774645 发表于 2017-7-12 16:44 | 显示全部楼层
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2016 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Nuvoton Technoledge Corp.
  8. //  Website: http://www.nuvoton.com
  9. //  E-Mail : MicroC-8bit@nuvoton.com
  10. //  Date   : Apr/21/2016
  11. //***********************************************************************************************************

  12. //***********************************************************************************************************
  13. //  File Function: N76E003 APROM program DATAFLASH as EEPROM way
  14. //***********************************************************************************************************
  15. #include <stdio.h>
  16. #include "N76E003.h"
  17. #include "Common.h"
  18. #include "Delay.h"
  19. #include "SFR_Macro.h"
  20. #include "Function_Define.h"

  21. bit BIT_TMP;

  22. //-------------------------------------------------------------------------
  23. UINT8 read_APROM_BYTE(UINT16 code *u16_addr)
  24. {
  25.         UINT8 rdata;
  26.         rdata = *u16_addr>>8;
  27.         return rdata;
  28. }
  29. //-------------------------------------------------------------------------


  30. /*****************************************************************************************************************
  31. write_DATAFLASH_BYTE :
  32. user can copy all this subroutine into project, then call this function in main.
  33. ******************************************************************************************************************/               
  34. void write_DATAFLASH_BYTE(UINT16 u16_addr,UINT8 u8_data)
  35. {
  36.         UINT8 looptmp=0,u8_addrl_r;
  37.         unsigned char code *cd_longaddr;
  38.         unsigned char xdata *xd_tmp;
  39.        
  40. //Check page start address
  41.         u8_addrl_r = u16_addr;
  42.         if (u8_addrl_r<0x80)
  43.         {
  44.                 u8_addrl_r = 0;
  45.         }
  46.         else
  47.         {
  48.                 u8_addrl_r = 0x80;
  49.         }
  50. //Save APROM data to XRAM
  51.         xd_tmp = 0x80;
  52.         cd_longaddr = (u16_addr&0xff00)+u8_addrl_r;       
  53.         while (xd_tmp !=0x100)
  54.         {
  55.                 *xd_tmp = *cd_longaddr;
  56.                 looptmp++;
  57.                 xd_tmp++;
  58.                 cd_longaddr++;
  59.         }
  60. // Modify customer data in XRAM
  61.         u8_addrl_r = u16_addr;
  62.         if (u8_addrl_r<0x80)
  63.         {
  64.                 xd_tmp = u8_addrl_r+0x80;
  65.         }
  66.         else
  67.         {
  68.                 xd_tmp = u8_addrl_r+0;
  69.         }
  70.         *xd_tmp = u8_data;
  71. //Erase APROM DATAFLASH page
  72.                 IAPAL = u16_addr;
  73.                 IAPAH = u16_addr>>8;
  74.                 IAPFD = 0xFF;
  75.           set_IAPEN;
  76.                 set_APUEN;
  77.     IAPCN = 0x22;                
  78.                 set_IAPGO;
  79. //Save changed RAM data to APROM DATAFLASH
  80.         u8_addrl_r = u16_addr;
  81.         if (u8_addrl_r<0x80)
  82.         {
  83.                 u8_addrl_r =0;
  84.         }
  85.         else
  86.         {
  87.                 u8_addrl_r = 0x80;
  88.         }
  89.                 xd_tmp = 0x80;
  90.           IAPAL = u8_addrl_r;
  91.     IAPAH = u16_addr>>8;
  92.                 set_IAPEN;
  93.                 set_APUEN;
  94.           IAPCN = 0x21;
  95.                 while (xd_tmp !=0xFF)
  96.                 {
  97.                         IAPFD = *xd_tmp;
  98.                         set_IAPGO;
  99.                         IAPAL++;
  100.                         xd_tmp++;
  101.                 }
  102.                 clr_APUEN;
  103.                 clr_IAPEN;
  104. }       
  105. /******************************************************************************************************************/               


  106. void main (void)
  107. {
  108.                 UINT8 datatemp;
  109. /* -------------------------------------------------------------------------*/
  110. /*  Dataflash use APROM area                                                                                                                         */
  111. /*        APROM 0x3800~0x38FF demo as dataflash                                                                                                     */
  112. /* Please use Memory window key in C:0x3800 to check earse result                                          */             
  113. /* -------------------------------------------------------------------------*/
  114.        
  115. //call write byte
  116.                 write_DATAFLASH_BYTE (0x3881,0x55);
  117.                 write_DATAFLASH_BYTE (0x3882,0x56);
  118.                 write_DATAFLASH_BYTE (0x3855,0xaa);
  119.                 write_DATAFLASH_BYTE (0x3856,0x66);
  120. //call read byte
  121.                 datatemp = read_APROM_BYTE(0x3882);
  122.     while(1);
  123. }
  124. //-----------------------------------------------------------------------------------------------------------
734774645 发表于 2017-7-12 16:44 | 显示全部楼层
给你找了一下,这个应该就是的。
734774645 发表于 2017-7-12 16:44 | 显示全部楼层
你可以在论坛搜索这个关键词,然后找到那个BSP开发包下载。
734774645 发表于 2017-7-12 16:44 | 显示全部楼层
zhuotuzi 发表于 2017-7-12 19:48 | 显示全部楼层
必须的能,上面朋友发的貌似就是。
 楼主| lizhenming 发表于 2017-7-13 08:11 | 显示全部楼层
734774645 发表于 2017-7-12 16:44
https://bbs.21ic.com/icview-1643854-1-1.html

谢谢了!我后面看了例程知道可以的
newphj 发表于 2017-11-26 16:32 | 显示全部楼层
真好用上,谢谢
wuchonghjp 发表于 2017-11-26 21:46 | 显示全部楼层
可以在18K的Flash通过软件分割
捉虫天师 发表于 2017-11-27 15:08 | 显示全部楼层
不要跟存储程序的空间冲突了就行,比如可以从后面倒着写。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

129

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部