C51编程:Keil模式设置与8051扩展关键字解析

1 下载量 16 浏览量 更新于2024-09-01 收藏 70KB PDF 举报
"本文介绍了Keil C51的模式设置和编程中的关键知识点,包括C51对ANSIC标准的扩展、存储类型、内存区域、特殊功能寄存器以及存储模式。" 在嵌入式开发中,Keil C51是一款广泛使用的编译器,专为8051系列微控制器设计。深入理解C51对标准ANSIC的扩展对于有效利用8051的硬件特性至关重要。C51提供了许多针对8051硬件的特定关键字,使得程序员可以直接操作硬件资源。 一、C51扩展关键字 C51 V4.0版本包含19个扩展关键字,例如: 1. `_at_`:用于指定变量存储位置。 2. `idatasfr`:用于内部数据存储器的间接寻址区域。 3. `16`:用于声明16位变量。 4. `alien`:处理不同字节序的内存。 5. `interrupt`:定义中断服务函数。 6. `small`、`large`、`task`、`Code`:定义内存模型。 7. `bit`、`pdata`:处理位变量和一页外部RAM。 8. `using`:选择SFR的bank。 9. `reentrant`:支持重入函数。 10. `xdata`:处理外部直接寻址RAM。 11. `compact`、`sbit`、`sfr`:声明紧凑模式、位变量和特殊功能寄存器。 二、内存区域 1. **Program Area**(程序区):由`Code`关键字声明,最大可容纳64KB程序代码。 2. **Internal Data Memory**(内部数据存储区): - `data`:直接寻址区,包含内部RAM的低128字节(00H~7FH)。 - `idata`:间接寻址区,覆盖整个内部RAM(00H~FFH)。 - `bdata`:可位寻址区,位于20H~2FH,用于位操作。 3. **External Data Memory**(外部数据存储区): - `xdata`:用于外部直接寻址RAM,最大可达64KB(0000H~0FFFFH)。 - `pdata`:紧凑模式下访问1页(256Bytes)外部RAM。 4. **Special Function Register Memory**(特殊功能寄存器区): - `sfr`:字节寻址SFR,如`sfr P0 = 0x80;`。 - `sfr16`:字寻址SFR,如`sfr16 T2 = 0xcc;`。 - `sbit`:位寻址SFR,如`sbit EA = 0xAF;`。 三、存储模式 存储模式决定未明确指定存储类型的变量和函数参数的默认存储位置。C51支持多种内存模型,例如`small`、`large`和`compact`,它们决定了变量如何在不同内存区域分配。`small`模式适合小规模程序,所有变量都在内部RAM中;`large`模式允许使用全部的外部RAM;而`compact`模式则结合了内部和外部RAM,适用于需要节省内存的情况。 了解并熟练运用这些知识点,开发者可以更好地优化8051微控制器的程序,提高代码效率,同时充分利用硬件资源。在实际编程过程中,根据项目需求选择合适的存储模式和关键字,能够显著提升程序性能和可维护性。