无线电电子与电气工程百科全书 MCS-51 系列微控制器程序中附加内存段的初始化。 无线电电子电气工程百科全书 现代微控制器具有内置的非易失性数据存储器 (EEPROM),有时需要在设备开始工作之前将信息输入其中。 该存储器的映像(固件)必须在程序开发过程中形成。 例如,可以使用 PICmicro 和 AVR 系列微控制器的汇编器来完成此操作。 它们使程序员有机会组织额外的内存段并在其中设置初始数据以写入 EEPROM。 具有 MSC-51 内核的微控制器的汇编器还允许您将存储器分为几个部分,但只有其中一个部分(可执行代码段)可以进行初始化。 在所有其他情况下,只能在程序执行期间保留存储单元并向其中写入数据。 摆脱这种情况的方法可以是下面描述的技术。 其本质是使用条件汇编,因此根据翻译条件,代码段的初始化以不同的方式发生。 生成的 HEX 文件不仅可用于对微控制器的内部 EEPROM 进行编程,还可用于对外部存储芯片进行编程。 人为创建的附加段(允许任意数量)放置在程序文本中实际代码段之前。 其中之一中定义的标签在以下所有内容中都是已知的,包括实际的代码段。 但不允许反向链接。 附加内存的类型和物理位置没有限制。 表中给出了具有两个附加初始化段(通常称为 EEPROM 和 FLASH)的程序示例。 1. 将其保存在 example.asm 文件中后,我们将使用 ASEM-51 汇编器,可以在以下位置免费“下载” 。 首先,让我们在命令行上运行汇编程序 asem example.asm eeprom.hex/define:EEPROM 当处理程序文本的第一行时,它将把标签 idEeprom、ptrWord 和 prtBufE 放入其符号表中,并将 DB 和 DW 指令指定的数据放入输出文件 eeprom.hex 中(表 2)。 然后将检查段长度。 如果程序计数器值超过物理上存在的 EEPROM 容量(在本例中为 640 个单元),则会显示错误消息。 如果段大小明显较小,则可以省略该检查。 类似的检查可以在其他部分提供。 接下来,汇编器将遇到 IFNDEF EEPROM 指令。 由于具有此名称的符号是在命令行(/define:EEPROM 参数)上定义的,因此程序的所有后续行(直到 ENDIF 伪指令)都将被忽略,并且翻译将在那里结束。 从命令行运行同一个程序的重传 asem example.asm flash.hex/define:FLASH 它与前一种的区别仅在于FLASH符号的定义,而不是EEPROM。 转换的第一阶段将完全如上所述进行,并且 EEPROM 段的数据将被写入输出文件。 不过,这次 IFNDEF EEPROM 指令不会中断该过程,并且后面的 ORG 0 指令将重置程序计数器。 汇编器将从地址 3 开始将目的地为 FLASH 段的数据写入到输出文件中。 广播将被 IFNDEF FLASH 指令中断。 flash.hex 文件的最终形式如表所示。 XNUMX. 我们通过命令设置可执行代码真实段的翻译 asem 例子.asm 首先,额外的段将被重新编译,其中定义的所有标签将被输入到汇编器符号表中,这将允许从代码段中引用它们。 最开始的指令 ORG 0 将再次重置程序计数器。 广播将照常继续。 在生成的 example.hex 文件(表 4)中,程序的可执行代码从第四行开始,位于与之前的 HEX 文件中包含的行相同的行之后。 不必要信息的存在通常不会干扰将代码正确加载到微控制器的适当存储区域中。 在控制编程的程序的缓冲区中,当地址匹配时,正确的数据会“替换”先前输入的数据。 并且只有当新的段比前一个段短时,它的“尾部”才会被存储在缓冲区中。 因此,建议按照长度递增的顺序来描述程序中的段。 有些程序员没有中间缓冲区或严格控制输入数据,以防止地址重叠。 在第一种情况下,编程将是不正确的,在第二种情况下,在“错误”被消除之前,编程根本不会启动。 您可以使用任何文本编辑器手动从 HEX 文件中删除多余的行。 您还可以通过连续运行两个命令来自动执行此操作: hex2bin 示例.hex bin2hex 示例.bin 第一个将创建 example.hex 文件中包含的数据的二进制映像并将其放置在 example.bin 文件中。 第二个将进行反向转换并创建一个没有任何装饰的新 example.hex 文件。 必要的程序可以在以下地址“下载” 和。 作者:S. Chekunov,伊热夫斯克 查看其他文章 部分 微控制器. 读和写 有帮助 对这篇文章的评论. 科技、新电子最新动态: 用于触摸仿真的人造革
15.04.2024 Petgugu全球猫砂
15.04.2024 体贴男人的魅力
14.04.2024
其他有趣的新闻: ▪ 抗辐射药丸 ▪ 蓝宝石剃须刀
免费技术图书馆的有趣材料: ▪ 文章 从事镀铝平面镜电真空装置维护的操作员。 劳动保护标准说明 ▪ 文章 Trinistor 转换器,12-24/60 伏 2 安培。 无线电电子电气工程百科全书 本页所有语言 www.diagram.com.ua |