unsigned char idata temp[8];

时间:2023-03-09 20:17:28
unsigned char idata temp[8];

unsigned char 是无符号字符,单字节

idata 表示变量位于内部数据区,外部数据区是 xdata,代码区是 code
idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同(间接寻址)。
idata是用类似C中的指针方式 访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)。

区别如下:1、位置不同 idata定义在高128字节中,xdata定义在外部RAM中,一些单片机内部集成了外部RAM。
2、访问速度不一样 访问idata的速度稍快。
3、最后,可能也是最重要的,二者在初始化上区分很大。
在基本所有编译器下,unsigned char idata num[3]={1,2,3};可以正确编译,在idata区中,可以看到该数组。
但是unsigned char xdata num[3]={1,2,3},在一些编译器下,xdata中,看不到该数组,程序可能不正确运行。