单片机
返回首页

增强型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所示。


poYBAGPGQV6AV6rqAALkzUhM--A600.png

图1传统8051单片机的特殊功能寄存器定义

对于增强型51单片机来说,那些被排放在特殊功能寄存器区的外设控制寄存器只能使用“sfr”关键词的方式去定义,如图2所示。


poYBAGPGQXKAG59eAAKfjE4-vzo677.png

图2增强型单片机增加的资源示例

除了“sfr”关键词之外,Keil C51还支持使用“sbit”关键词定义特殊功能寄存器的某一位,是因为51单片机是所有单片机中唯一支持寄存器位寻址的芯片。不过为了程序方便移植到其它平台上去,对于这些特殊的关键词,还是尽可能将其限制在少量的文件中。

2寄存器位于内部的扩展的RAM中

当内部的特殊功能寄存器区用完之后,如果想要继续增加寄存器,那么唯一可以选择的空间也就只有特殊功能寄存器以外的区域了。对于增强型51单片机来说,它的内存空间刨去特殊功能寄存器区,还可以给其使用的空间有两个,一个是内置RAM剩余空间,还有一个是内置的外扩RAM。

对于STC8A8K系列的芯片来说,这些寄存器被设计到了内置的外扩RAM上。因此,对于这一段内存上的寄存器,我们可以在C语言中使用常量指针的形式去定义,但是,还是需要使用C51的关键词“xdata”去声明这些地址,当然,去优化的“volatile”关键词也不能少,如图3所示。


pYYBAGPGQYOAI1ZFAAN4rtTdn-8405.png

图3内置外扩SRAM上寄存器的定义


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 单稳态控制电路设计与分析

  • 光控电路设计与分析

  • IGBT模块通过控制门极阻断过电流

  • 开关电源的基本组成及工作原理

  • 基于M66T旋律发​​生器的电路图解析

  • 一个简单的红外耳机电路

    相关电子头条文章