增强型51单片机和传统51单片机对比分析
2024-03-15 来源:elecfans
前面的内容,我们从传统的51单片机出发,从硬件的基础上,一步步衍生出了增强型51单片机所增强的地方。现在我们可以清楚地了解,增强型51单片机对比传统的51单片机,增强的地方在于存储器的扩展。而51单片机对于片内内存的寻址方式和片外内存的寻址方式有着很大的不同。因此,我们在使用C语言对增强型51单片机编程的时候,也需要按照寄存器位置的不同,采用不同的操作方式。
1寄存器位于内部的特殊功能寄存器区
我们之前介绍传统8051单片机的时候,曾经列出了传统8051单片机已经使用的21个特殊功能寄存器,因此扩展外设寄存器的一个办法就是利于剩余的特殊功能存储器空间。
由于51单片机的特殊功能寄存器寻址方式只能是直接寻址,不可间接寻址,因此在C语言中无法使用指针的方式去操作这些特殊功能寄存器。因为对于C语言指针来说,它对应的汇编语言是一种间接寻址的方式。基于此,C51在标准的C语言基础上,衍生出了一些额外的语法,如当需要定义这些特殊功能寄存器以便于程序访问的时候,C51加入了一个关键词“sfr”,使用“sfr”关键词可以将特殊功能寄存器区的地址,定义成某个变量,如“sfr P0 = 0x80;”,这句语句的意思就是将位于内部RAM 0x80地址上的寄存器,定义成P0,由于0x80位于特殊功能寄存器区,因此这个定义是完全合法的。在后面想要对P0进行操作,只需要在C语言中直接使用“P0”这个标号即可。如“P0 = 0xff;”。
我们可以打开传统的keil C51头文件“reg51.h”,可以发现这个头文件中,将传统8051的所有寄存器全部定义出来了,如图1所示。
图1传统8051单片机的特殊功能寄存器定义
对于增强型51单片机来说,那些被排放在特殊功能寄存器区的外设控制寄存器只能使用“sfr”关键词的方式去定义,如图2所示。
图2增强型单片机增加的资源示例
除了“sfr”关键词之外,Keil C51还支持使用“sbit”关键词定义特殊功能寄存器的某一位,是因为51单片机是所有单片机中唯一支持寄存器位寻址的芯片。不过为了程序方便移植到其它平台上去,对于这些特殊的关键词,还是尽可能将其限制在少量的文件中。
2寄存器位于内部的扩展的RAM中
当内部的特殊功能寄存器区用完之后,如果想要继续增加寄存器,那么唯一可以选择的空间也就只有特殊功能寄存器以外的区域了。对于增强型51单片机来说,它的内存空间刨去特殊功能寄存器区,还可以给其使用的空间有两个,一个是内置RAM剩余空间,还有一个是内置的外扩RAM。
对于STC8A8K系列的芯片来说,这些寄存器被设计到了内置的外扩RAM上。因此,对于这一段内存上的寄存器,我们可以在C语言中使用常量指针的形式去定义,但是,还是需要使用C51的关键词“xdata”去声明这些地址,当然,去优化的“volatile”关键词也不能少,如图3所示。
图3内置外扩SRAM上寄存器的定义
上一篇:51单片机烧写程序的方法
下一篇:如何学习51单片机
- 关于GD32F2系列增强型MCU的介绍和应用
- 英特尔AI增强型软件定义车载SoC系列丨英特尔确认申报2024金辑奖
- 增强型数字隔离器确保工业环境中的安全性
- STC8G 系列单片机规格参数 -- 内部集成了增强型的双数据指针
- 32位通用增强型Cortex-M3单片机CH32F103C8T6替代stm32f103c8t6
- 用于增强型备用电源解决方案的单芯超级电容器保护集成电路
- TDK 推出增强型嵌入式电机控制器,内存、功率和可靠性均有 提升
- Microchip推出AVR® DU系列USB单片机,支持增强型代码保护和高达15W 的 功率输出
- 基于8051增强型单片机的RJM8L系列超低功耗MCU介绍
- MCS-51单片机定时器/计数器常见习题解答