STM8与汇编语言(12)--EEPROM应用

发布者:leader4最新更新时间:2021-10-12 来源: eefocus关键字:STM8  汇编语言 手机看文章 扫描二维码
随时随地手机看文章

在单片机的应用系统中,经常会用到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

关键字:STM8  汇编语言 引用地址:STM8与汇编语言(12)--EEPROM应用

上一篇:STM8与汇编语言(11)--UART应用之三
下一篇:STM8与汇编语言(13)--修改CPU的时钟

推荐阅读最新更新时间:2024-11-06 14:18

汇编语言完成读写24LCxx系列的EEPROM的实例
;************************************************************************ * ;* 以 PIC16F877A 為I2C Master 模式存取一串列式 EEPROM 的範例程式 * ;* * ;* Written by: Richard Yang * ;* Sr. Corporate Application Engineer * ;* Microchip Technology Inc. * ;* Date: Oct.
[单片机]
STM8-利用TIM2的定时功能,实现灯每隔1S闪烁
目的:熟悉定时器的定时功能的使用(自动重装) #include stm8s.h #include stm8s_gpio.h #include stm8s_tim2.h void CLK_Configuration(); void TIM2_Configuration_set_1ms(void); void GPIO_Configuration(); void main() { CLK_Configuration(); TIM2_Configuration_set_1ms(); GPIO_Configuration(); enableInterrupts();//使能总中断 while(1) { } } void CLK_Confi
[单片机]
STM8 SPI 例程 通信出错
这个STM8的SPI通信也够奇葩的,跟STM32有大区别。光判断发送空和接收空的标志还不行,还必须判断忙标志位,而且读数的时候要等忙标志完毕才能读,废话少说上代码: 这是一段发2字节收2字节的代码,注意如果第二个字节接收才有效的话,也需要发送第二个字节才能提供时钟进行接收: GPIO_WriteLow(GPIOA, GPIO_PIN_3); while (SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET){} SPI_SendData(0x80 | 0x75); while(SPI_GetFlagStatus(SPI_FLAG_BSY) == SET){}
[单片机]
IAR for stm8安装破解
1.下载安装包和注册机 链接:https://pan.baidu.com/s/1maBEtoyps2HhcdGYxmZUcA 提取码:31dn 复制这段内容后打开百度网盘手机App,操作更方便哦 百度云下载下来 这个样子: 2.双点击EWSTM8-3104-Autorun安装 同意,下一步到结束 。。。 中间会装几个驱动,装就是了 装完退出,打完收工 3. 注册 IAR for STM8是一个收费的软件,官方严厉打击盗版,若你是商业用途,建议购买正版软件。当然,我这里是针对个人开发学习的朋友而言,进行非商业用途的使用。 3.1 打开上面安装好的IAR for STM8软件(没有创建桌面快捷方式,可以从开始菜
[单片机]
IAR for <font color='red'>stm8</font>安装破解
STM8 74hc164串口输出扩为并口输出子程序
软件设计 /********************************************************************* 目 的: 建立74hc164操作库 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 *********************************************************************/ #include stm8s207s8.h #define HC164_OUT_DATA sbi(PC_DDR,3);sbi(PC_CR1,3);sbi(PC_CR2,3); //PB6 数据口 #define HC16
[单片机]
PIC 8位单片机汇编语言常用指令识读
各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。   PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。   在这里笔者介绍PIC 8位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。   一、PIC汇编语言指令格式   PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组
[单片机]
如何在C51文件和汇编语言文件中相互调用?
如何在C51文件和汇编语言文件中相互调用对方文件中的函数? 答:汇编语言文件中对于函数的调用方法,与调用汇编语言中的函数一样,如: LCALL DISPLAY 在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下: extern 返回值类型 函数名(参数表); 例如: extern unsigned char right_shift ( char, char );
[单片机]
飞利浦为嵌入式闪存和EEPROM开拓汽车电子应用
飞利浦电子公司宣布其0.18微米CMOS嵌入式闪存/EEPROM技术现已完全符合Grade-1汽车电子应用的需求,而其先进的0.14微米嵌入式闪存/EEPROM已开始在位于荷兰奈梅亨市的晶圆厂进行量产,这也是飞利浦第二家符合这一工艺生产要求的工厂。这两项最新的发展是飞利浦产品发展规划中的重要里程碑,表明公司独特的低功耗闪存/EEPROM技术已扩展到90纳米CMOS甚至更先进的水平。 嵌入式闪存和EEPROM存储器已成为当今许多片上系统解决方案的一个重要组成部分。它不但提供了在生产线上用不同的软件对这些芯片进行编程或进行现场软件升级的能力,还实现了对重要的本地数据例如PIN密码或地址簿信息的存储,并且可以在设备断电的时候保留这些数
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved