51单片机内部RAM在实际程序寻址中可能会碰到的问题

本文讲述了作者在使用51单片机编程时遇到的一个问题,即在将数组存入0x30-0x3F地址并尝试通过24C01读写时程序出现问题。通过修改数组类型和存储地址,作者发现int类型的数组会占用4个字节,导致寻址冲突。解决方案是使用char类型或避免地址重叠。文章强调在资源有限的单片机中需要注意数据类型占用的内存,并谨慎处理RAM寻址以避免错误。
摘要由CSDN通过智能技术生成
事情是这样的,我前一阵子在做一个I2C的仿真作业:

作业单


我参考了这个博主的代码:

https://blog.csdn.net/Lingdongtianxia/article/details/81135456

在这里夸夸这个博主,真的超详细(歪题

当时写代码的思路是这样的,先把一段数据(数组)储存进单片机内0x30-0x3F的地址里,再把这个地址里的数据通过24C01的读写函数送到24C01的储存空间0x30-0x3F内。

所以这一段代码是这样的:

	p=0x30;                    //p指向单片机0x30-0x3F的地址
	for(a=0;a<16;a++)
	{
   
			*p=arry[a];
			p++;
	}
	
	while(1)
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值