搜索
bottom↓
回复: 3

IAR LGT重写EEPROM库(IAR能直接用EEPROM关键字操作EEPROM)

[复制链接]

出0入0汤圆

发表于 2012-4-30 17:58:10 | 显示全部楼层 |阅读模式
本帖最后由 uc_c++ 于 2012-4-30 18:01 编辑

文件直接加入到IAR工程。
没有仔细测试。

  1. //IAR寄存器使用规则:
  2. //R0-R3,R16-23,R30,R31  草稿寄存器
  3. //R4-R7 R24-R27         存储寄存器 (R4-R7也可设置为为全局变量寄存器)
  4. //R8-R15                全局变量寄存器        

  5.         PUBLIC  __eeput8_16      
  6.         PUBLIC  __eeput16_16
  7.         PUBLIC  __eeput32_16
  8.         
  9.         PUBLIC  __eeget8_16
  10.         PUBLIC  __eeget16_16
  11.         PUBLIC  __eeget32_16
  12.   
  13.         //r16        data
  14.         //r20:r21    addr
  15.         RSEG    CODE:NOROOT(1)
  16. __eeput8_16:
  17.         ST      -Y,  R2        //保护寄存器R2  
  18.         IN      R2, 0x3F       //保护SREG
  19.         CLI                    //关中断
  20. ??__eeput8_16_1:
  21.         SBIC    0x1F, 0x01     //while(EECR & (1 << EEPE));
  22.         RJMP    ??__eeput8_16_1
  23.         OUT     0x22, R21      //EEARH=ADDR_H
  24.         OUT     0x21, R20      //EEARL=ADDR_L
  25.         OUT     0x20, R16      //EEDR=DATA
  26.         SBI     0x1F, 0x02     //EECR |= (1 << EEMPE);
  27.         SBI     0x1F, 0x01     //EECR |= (1 << EEPE);
  28.         OUT     0x3F, R2       //恢复SREG
  29.         LD      R2,   Y+       //恢复寄存器R2
  30.         RET

  31.         //r16:r17    data
  32.         //r20:r21    addr
  33.         RSEG    CODE:NOROOT(1)
  34. __eeput16_16        
  35.         CALL    __eeput8_16
  36.         
  37.         SUBI    R20, HIGH(-1)
  38.         SBCI    R21, LOW(-1)
  39.         MOV     R16,R17
  40.         CALL    __eeput8_16
  41.         RET
  42.         
  43.         //r16:r17:r18:r19    data
  44.         //r20:r21            addr
  45.         RSEG    CODE:NOROOT(1)
  46. __eeput32_16        
  47.         CALL    __eeput8_16
  48.         
  49.         SUBI    R20, HIGH(-1)
  50.         SBCI    R21, LOW(-1)
  51.         MOV     R16,R17
  52.         CALL    __eeput8_16
  53.         
  54.         SUBI    R20, HIGH(-1)
  55.         SBCI    R21, LOW(-1)
  56.         MOV     R16,R18
  57.         CALL    __eeput8_16        
  58.       
  59.         SUBI    R20, HIGH(-1)
  60.         SBCI    R21, LOW(-1)
  61.         MOV     R16,R19
  62.         CALL    __eeput8_16
  63.         
  64.         RET        
  65.         
  66.                
  67.         //r16        data
  68.         //r20:r21    addr
  69.         RSEG    CODE:NOROOT(1)
  70. __eeget8_16:
  71. ??__eeget8_16_1:
  72.         SBIC    0x1F, 0x01
  73.         RJMP     ??__eeget8_16_1
  74.         OUT     0x22, R21
  75.         OUT     0x21, R20
  76.         SBI     0x1F, 0x00
  77.         NOP
  78.         NOP
  79.         IN      R16, 0x20
  80.         RET
  81.         
  82.         //r16:17     data
  83.         //r20:r21    addr
  84.         RSEG    CODE:NOROOT(1)
  85. __eeget16_16:
  86.         SUBI    R20, HIGH(-1)
  87.         SBCI    R21, LOW(-1)
  88.         
  89.         CALL    __eeget8_16
  90.         MOV     R17,R16
  91.         
  92.         SUBI    R20, HIGH(1)
  93.         SBCI    R21, LOW(1)
  94.         CALL    __eeget8_16      
  95.         RET
  96.         
  97.         //r16:17:R18:R19     data
  98.         //r20:r21            addr
  99.         RSEG    CODE:NOROOT(1)
  100. __eeget32_16:
  101.         SUBI    R20, HIGH(-3)
  102.         SBCI    R21, LOW(-3)
  103.         
  104.         CALL    __eeget8_16
  105.         MOV     R19,R16
  106.         
  107.         SUBI    R20, HIGH(1)
  108.         SBCI    R21, LOW(1)
  109.         CALL    __eeget8_16
  110.         MOV     R18,R16
  111.         
  112.         SUBI    R20, HIGH(1)
  113.         SBCI    R21, LOW(1)
  114.         CALL    __eeget8_16
  115.         MOV     R17,R16
  116.         
  117.         SUBI    R20, HIGH(1)
  118.         SBCI    R21, LOW(1)
  119.         CALL    __eeget8_16
  120.         RET         
  121.         
  122.                
  123.         END
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-4-30 18:11:39 | 显示全部楼层
汇编写的,板凳啊

出0入0汤圆

发表于 2012-4-30 19:15:24 | 显示全部楼层
我也测试下了EEPROM 读写速度真的不是老妖产品所能比的

出425入0汤圆

发表于 2012-5-1 08:21:50 | 显示全部楼层
汇编!!高深!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 01:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表