1、单片机中data和idate的区别? 2、什么时候用data什么时候用idata? 3、我写到程序时不能定义多余变量,

定义了之后仿真有误。问,怎么办?

以 Keil C 编译器为例,small 模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低 128 个字节,但这 128 个字节也不是全为我们的程序所用,寄存器 R0-R7必须映射到低RAM,要占去 8 个字节,如果使用寄存组切换,占用的更多。
所以可以使用 data 区最大为 120 字节,超出 120 个字节则必须用 idata 显式的指定为间接寻址,另外堆栈至少要占用一个字节,所以极限情况下可以定义的变量可占 247 个字节。
直接寻址要快些。
http://apps.hi.baidu.com/share/detail/15336943

然后还有xdata定义的外部RAM,data,idata,xdata根据具体芯片不同,大小范围也有区别。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答