就数据存储类型而言,8051系列有片上、片外程序存储器、片上、片外数据存储器,片上程序存储器分为直接地址区和间接地址类型,分别为code、
使用不同的内存时,程序的执行效率不同。 创建C51程序时,为了提高程序的执行效率,建议指定变量的存储类型。 关于这个问题,稍后会详细说明。 与ANSI-C稍有不同,分为SAMLL、COMPACT、LARGE模式,每种模式对应不同的实际硬件系统,也能得到不同的编译结果。
51系列中的data、idata、xdata、pdata差异:
data:固定是指上一个0x00-0x7f的128个RAM。 acc能够直接读写是最快的,生成的代码也最小。
idata:固定是指前一个0x00-0xff的256个RAM。 其中,前面的128和data的128完全相同,只是访问方法不同。 idata以类似于c的指针方式访问。 程序集语句为mox ACC,@Rx . (不重要的补充:在c中,idata进行指针式访问很有效。 )
xdata:外部扩展RAM一般是指外部0x0000-0xffff空间,通过DPTR访问。
当地址出现在A0-A7上时,pdata:外部扩展RAM的低位256字节读写,并通过movx ACC、@Rx读写。 这很特殊,而且C51上好像有这个漏洞,所以建议不要使用。 但是,也有他的优点,具体的使用方法是中级的问题,所以在这里不提及。
单片机c语言unsigned char代码表[ ]代码是什么角色?
代码的作用是告诉单片机,我定义的数据放在程序存储区(ROM ),写了就不能更改。 其实和程序集中的寻址MOVX )非常相似。 由于无法用c语言详细说明是ROM还是RAM ),所以在软件中添加此语句以代替汇编指令。 对应的也有data放入RAM的意思。
程序可以简单地分为代码(程序)区域和数据(数据)区域。 代码区域在运行中无法更改。 在data区域中放置全局变量和临时变量需要不断变更。 cpu从代码区域读取指令,并对data区域的数据进行运算处理,因此代码区域存储在哪个介质上并不重要。
以前的计算机程序存储在卡上,代码空间也可以放入rom、ram、flash中。 因此,通常将程序放入flash中,然后加载到ram中运行。 DATA区域没有选择。 必须放入RAM中。 放入rom也无法变更。
bdata怎么用那个?
程序需要8个以上的bit变量时,想要一次给8个变量赋值时很不方便。 (举例说明其便利性。 如果你想知道更多细节,请在APP应用中自己思考。 )此外,不能定义bit数组。 只有一个方法
char bdata模式;
sbit MODE_7=MODE^7;
sbit mode _6=模式^ 6;
sbit MODE_5=MODE^5;
sbit MODE_4=MODE^4;
sbit MODE_3=MODE^3;
sbit mode _2=模式^ 2;
sbit mode _1=模式^ 1;
sbit MODE_0=MODE^0;
定义了8个bit变量MODE_n
这是定义语句,Keilc的特殊数据类型。 如果是sbit,请记住
比特模式_0=模式^ 0;
赋值语句这样写c语言被视为异或运算。
keil生成的文件:
. plg:编译器的编译结果
. hex和. bin:可执行文件
. map和. lst:链接文件
. o :目标文件
. crf、 lnp、 d、 axf :调试文件
. opt :保存项目配置信息
. bak :工程备份文件
M51文件,startup文件。