Keil C51中变量的使用Keil C51是一款功能强大且广泛应用于8051单片机的编译器,正确地使用变量是获得高效目标代码的关键。Keil C51中变量的使用与标准C有所不同,主要体现在变量的存储模式和类型上。CPU存储结构与变量的关系在标准C中,不加特别定义的变量是放在存储器中的,使用register可以强制变量存储在寄存器中,对于使用特别频繁且数量不多的变量可以选用这种存储模式,以获得更高的工作效率。然而,51内核单片机的存储结构不同,具有3个存储空间:程序存储器空间、片外数据存储器空间和片内数据存储器及特殊功能寄存器空间。因此,在Keil C51中使用变量就和标准C有很大不同。Keil C51变量分析Keil C51支持标准C原有的多数变量类型,但新增了多种存储类型,也新增了一些标准C没有的变量。Keil C51中定义变量的格式如下:[存储种类]数据类型[存储类型]变量名表;其中,[存储类型]是标准C中没有的,共有6种:data、bdata、idata、xdata、pdata和code。每种存储类型都有其特点和应用场景。Keil C51新增的变量类型Keil C51中新增了bit、sfr、sbit、sbitl6等变量类型,这些变量类型不支持数组和指针操作。bit变量存储在片内数据存储器的可位寻址字节上,sfr变量存储在片内特殊功能寄存器中,sbit变量存储在片内特殊功能寄存器的可位寻址字节上,sbitl6变量存储在片内特殊功能寄存器的连续2个字节的低地址上。Keil C51中使用变量存储模式的必要性在Keil C51中,变量的存储模式是一个可选项,如果不使用这个选项,则Keil C51在编译时自动进行优选分配。但这种处理方法有缺点,如系统不知道各种变量的使用频度,可能对使用频度高的变量使用了访问速度慢的片外存储方式,而对使用频高的变量使用了片内存储方式,使得程序的运行效率降低。因此,正确地使用变量存储模式是获得高效目标代码的关键。
|