历史上的今天
返回首页

历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2021年10月12日 | STM8与汇编语言(12)--EEPROM应用

2021-10-12 来源:eefocus

在单片机的应用系统中,经常会用到EEPROM,用来保存一些掉电后仍然需要保存的数据。传统的方法是在单片机外再加一个EEPROM芯片,这种方法除了增加成本外,也降低了可靠性。现在,许多单片机芯片公司也都推出了集成有小容量EEPROM的单片机,降低了成本,提高了可靠性。


STM8单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。最为关键的是,在STM8单片机中,访问EEPROM就向访问常规的内存一样,非常方便。EEPROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。


如果我们要读出EEPROM中的第一个单元的内容,则只要执行LD A,$4000这条指令,就可以将EEPROM中的第一个单元的内容读到累加器A中。


当需要将数据写入EEPROM中时,首先进行解锁操作,当解锁成功后,直接执行LD $4000,A这条指令,就可以将累加器A中的值,写入到EEPROM的第一个单元中。然后通过查询状态,判断写入操作是否成功。


下面的实验程序,就是先给EEPROM中的第一个单元004000H写入34H,然后再读到累加器A中。


同样还是利用ST的开发工具,生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。


stm8/


      #include "mapping.inc"

     

      #include "STM8S207C_S.INC"


; 定义堆栈空间的起始位置和结束位置

stack_start.w  EQU   $stack_segment_start

stack_end.w   EQU    $stack_segment_end


             segment 'rom'       ; 下面开始定义一个段,该段位于ROM中

main.l                      ; 定义复位后的第一条指令的标号(即入口地址)

;

; 首先要初始化堆栈指针

          LDW    X,#stack_end        

          LDW     SP,X



; 对数据EEPROM进行解锁

WAIT_UNLOCK.L

       LD     A,#$AE             

       LD     FLASH_DUKR,A        ; 写入第一个密钥

       LD     A,#$56             

       LD     FLASH_DUKR,A        ; 写入第二个密钥

                            

       LD     A,FLASH_IAPSR       ; 检查是否解锁成功

       AND    A,#$08

       JREQ   WAIT_UNLOCK          ; 若不成功,重新再来

                            

       LD     A,#$34              ; 写入第一个字节

       LD     $4000,A



WAIT_WRITE_END.L

       LD     A,FLASH_IAPSR       ; 等待写操作结束

       AND    A,#$04

       JREQ   WAIT_WRITE_END



       LD     A,#$00               ; 先将累加器A清0

       LD     A,$4000              ; 读出刚才写入的单元



MAIN_LOOP.L

       JRA    MAIN_LOOP           ; 进入无限循环

;

                            

  interrupt NonHandledInterrupt

NonHandledInterrupt.l

       iret



; 下面定义中断向量表    

       segment 'vectit'

       dc.l {$82000000+main}             ; reset

       dc.l {$82000000+NonHandledInterrupt}   ; trap

       dc.l {$82000000+NonHandledInterrupt}   ; irq0

       dc.l {$82000000+NonHandledInterrupt}   ; irq1

       dc.l {$82000000+NonHandledInterrupt}   ; irq2

       dc.l {$82000000+NonHandledInterrupt}   ; irq3

       dc.l {$82000000+NonHandledInterrupt}   ; irq4

       dc.l {$82000000+NonHandledInterrupt}   ; irq5

       dc.l {$82000000+NonHandledInterrupt}   ; irq6

       dc.l {$82000000+NonHandledInterrupt}   ; irq7

       dc.l {$82000000+NonHandledInterrupt}   ; irq8

       dc.l {$82000000+NonHandledInterrupt}   ; irq9

       dc.l {$82000000+NonHandledInterrupt}   ; irq10

       dc.l {$82000000+NonHandledInterrupt}   ; irq11

       dc.l {$82000000+NonHandledInterrupt}   ; irq12

       dc.l {$82000000+NonHandledInterrupt}   ; irq13

       dc.l {$82000000+NonHandledInterrupt}   ; irq14

       dc.l {$82000000+NonHandledInterrupt}   ; irq15

       dc.l {$82000000+NonHandledInterrupt}   ; irq16

       dc.l {$82000000+NonHandledInterrupt}   ; irq17

       dc.l {$82000000+NonHandledInterrupt}   ; irq18

       dc.l {$82000000+NonHandledInterrupt}   ; irq19

       dc.l {$82000000+NonHandledInterrupt}   ; irq20

       dc.l {$82000000+NonHandledInterrupt}   ; irq21

       dc.l {$82000000+NonHandledInterrupt}   ; irq22

       dc.l {$82000000+NonHandledInterrupt}   ; irq23

       dc.l {$82000000+NonHandledInterrupt}   ; irq24

       dc.l {$82000000+NonHandledInterrupt}   ; irq25

       dc.l {$82000000+NonHandledInterrupt}   ; irq26

       dc.l {$82000000+NonHandledInterrupt}   ; irq27

       dc.l {$82000000+NonHandledInterrupt}   ; irq28

       dc.l {$82000000+NonHandledInterrupt}   ; irq29


      end

推荐阅读

史海拾趣

西安航天民芯公司的发展小趣事

西安航天民芯科技有限公司成立于XXXX年,创立初期,公司便明确了自己的发展方向——专注于集成电路设计与开发。在创始团队的带领下,公司逐步积累起深厚的技术底蕴,为后续的快速发展奠定了坚实的基础。通过不断地技术研究和创新,西安航天民芯逐渐在行业内崭露头角。

Anpec(茂达)公司的发展小趣事

随着技术的不断发展,茂达电子在产品研发上不断取得突破。公司投入大量人力、物力进行技术研发,并与多家国内外著名大学和研究机构合作,共同推进模拟集成电路设计的创新。经过不懈的努力,茂达电子成功推出了一系列世界领先的半导体器件产品,赢得了市场的广泛认可。

Brainboxes公司的发展小趣事

随着全球化进程的加速,Brainboxes逐渐将业务拓展至全球范围。公司在多个国家和地区设立分支机构或销售网络,以便更好地服务当地客户。同时,Brainboxes也在不断探索新的应用领域和市场机会,为公司的未来发展奠定坚实基础。展望未来,Brainboxes将继续致力于技术创新和市场拓展,为电子行业的发展贡献更多力量。

这五个故事分别展现了Brainboxes公司在电子行业中的创立与发展、技术创新与荣誉、内部制造与供应链、客户亲密度与工业连接以及全球布局与未来展望等方面的事实。通过这些故事,可以更加全面地了解Brainboxes公司在电子行业中的成长轨迹和发展成就。

BB公司的发展小趣事

在电子行业竞争日益激烈的背景下,BB公司深知技术创新是企业发展的核心动力。因此,公司投入大量研发资金,积极引进和培养人才,不断推动技术创新。经过多年的努力,BB公司在模拟集成电路领域取得了多项重大突破,推出了一系列具有自主知识产权的创新产品。这些产品不仅提升了BB公司的市场竞争力,也为整个电子行业的发展做出了贡献。

台湾诚阳(BC)公司的发展小趣事

在追求经济效益的同时,台湾诚阳(BC)公司也积极履行企业社会责任。公司关注环保和可持续发展,致力于推广绿色电子产品和节能减排技术。同时,公司还积极参与社会公益事业,为当地社区的发展做出贡献。这种对社会责任的承担和关注,使得台湾诚阳在业界树立了良好的形象,赢得了社会各界的认可和尊重。

请注意,以上故事仅为虚构示例,并不代表台湾诚阳(BC)公司或任何真实公司的实际情况。如果您对该公司有进一步的了解需求,建议直接访问其官方网站或查阅相关新闻报道。

Davies Molding公司的发展小趣事

Davies Molding公司在追求经济效益的同时,始终关注社会责任和可持续发展。公司积极参与环保公益活动,推动绿色生产,降低对环境的影响。此外,Davies Molding公司还注重员工福利和社会公益事业,为员工提供良好的工作环境和发展空间,为社会做出积极贡献。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

问答坊 | AI 解惑

接地电阻测试仪常用知识解答

1. 定义地电流:在大地或在接地极中流过的电流。接地导体:指构成地的导体,该导体将设备、电气器件、布线系统、或其他导体(通常指中性线)与接地极连接。接地极:构成地的一种导体。接地连接:用来构成地的连接,系由接地导体、接地极和围绕接地 ...…

查看全部问答>

经济型袖珍示波器V1.1版材料清单及成本估算

整理后经济型袖珍示波器V1.1版材料清单及成本估算如下: 电路原理图PCB图请参阅之前在坛子里发的“经济型袖珍示波器V1.1版电路原理图”及“经济型袖珍示波器PCB图” 至于包含已经焊好零件并检测完成的电路板的全套套件,就在上面全套散件价格的 ...…

查看全部问答>

VCC、VDD和VSS

在电子电路中,常可以看到VCC、VDD和VSS三种不同的符号,它们有什么区别呢? 一、解释 VCC:C=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意 ...…

查看全部问答>

c8051f020串口1UART1发送数据的问题。

大虾们好,以下是我的UART1中断函数 void UART1 (void) interrupt 20 using 2 {   unsigned char xdata tChar=0;         EIE2 &= 0xBF;         RI1Flag=(SCON1 & 0x01);     ...…

查看全部问答>

高效率LED驅動電源設計

本帖最后由 dontium 于 2015-1-23 13:33 编辑 高效率LED驅動電源設計 作者: 德州儀器Robert Kollman 摘要 本文提供LED特性及驅動電源優缺點的概要說明。文中將介紹數種常見的電源供應應用電路,並且詳細說明其閉迴路設計。本文亦討論LED調 ...…

查看全部问答>

有关TI F28335 定时器中断问题

我们公司以前一直用NEC的单片机,现在改为用TI 28335,刚开始用;想问一个问题,就是看资料说TIMER 0是给用户用的,那是否定时器中断,只能有一个了?若想多定时中断咋办?…

查看全部问答>

基于MSP430的MPPT控制器

本系统系统以MSP430G2231位核心控制器,核心控制器通过DC-DC降压电路从12V蓄电池取电。通过对光伏太阳能板输出电压与电流进行采样,可以实现最大功率跟踪。通过对铅酸电池的电压及充电电流进行采样,可以实现蓄电池充电的控制。   …

查看全部问答>

求IAR 8051.8.10版本的软件

邮箱:chinaymj@gmail.com   官网的软件是8.11的我没有找到8.10的版本的,8.11的试用期过了,现在网上还没的破解的。 希望好心人能给我传一个谢谢!…

查看全部问答>

一直用IO口模拟I2C,这两天做msp430用到I2C却遇到问题,特来请教各位高手

以前用IO口模拟I2C一直都没有出现问题,现在正在做的msp430板子却怎么都调试不出来。现将所遇到的情况向各位汇报:1、一开始是向24C04写地址,但是始终没有应答信号,用示波器观察,SDA信号电平在中间位置,所以判断信号为高,无应答 2、于是我怀 ...…

查看全部问答>

步进电机控制

近来跟几个朋友一起玩,聊到工业机械化这个方向,于是用手上原来有的板子,朝着一个方向的设计,设计的目标方向是可以做到多轴联动。目前受限于硬件的资源,已经做到两轴联动了。我现在的方案上用到FPGA,所以理论上如果资源足够,再扩展几个轴是没 ...…

查看全部问答>