gpt4 book ai didi

c - 在 C 中将字符串从代码存储器存储到 IDATA 存储器 (8051)

转载 作者:行者123 更新时间:2023-11-30 17:14:35 26 4
gpt4 key购买 nike

我有以下代码行,它将字符串 TesT 存储在 8051 微 Controller 的代码存储器中。

char code  *text_to_compare = "TesT";

如何在 IDATA 内存中存储从 92Hex 开始的相同字符串?

最佳答案

上电后,idata 内存包含或多或少的随机值。一些寄存器具有已知值,但除此之外,唯一已知的数据是 ROM、EPROM 或类似内容中的程序代码。如果您希望将数据值保存在 idata 内存中,则必须告诉处理器将其写入该位置。您可以“手动”执行此操作。例如这样:

char code  *text_to_compare = "TesT";
char idata idataBuffer[5];

void copyToIdata(void)
{
unsigned char i;
for (i = 0; (i < sizeof(idataBuffer)/sizeof(idataBuffer[0])); i++ )
{
/* Fetch data byte from code memory */
char tmpChar = text_to_compare[i];

/* Write data byte to idata memory */
idataBuffer[i] = tmpChar;

/* stop copying if end of string is reached */
if (tmpChar == '\0')
{
break;
}
}
}

或者您可以要求 C 编译器为您生成代码。然后复制将在重置和主函数之间的引导代码中完成:

char idata idataBuffer[5] = {'T', 'e', 's', 'T', '\0'};

如果 idataBuffer 需要从 RAM 中的地址 0x92 开始,您可以告诉链接器将其放置在那里。

请注意:实际上我这里没有c51编译器。因此我无法检查代码是否真的可以编译和运行。但我希望它能给你一个粗略的想法。

致以诚挚的问候

赫尔穆特

关于c - 在 C 中将字符串从代码存储器存储到 IDATA 存储器 (8051),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com