增强型51单片机扩展方式

  • 2021/04/27

大家是否思考过一个问题,为什么现在的51单片机在做宣传的时候,不外乎都是称作为“增强型51单片机”?与传统的51单片机相比,究竟哪些地方得到了扩展?在回答这个问题之前,我们先来看一下本书的主角——STC8A8K64S4A12。图1是传统51单片机和STC8A8K64S4A12增强型51单片机的资源对比图。

图1 传统MCS-51单片机和增强型51单片机的资源对比图

通过图1的资源对比图我们可以发现,就STC8A8K64S4A12这个增强型51单片机而言,它相比于传统的51单片机主要在以下几个方面做了提升:

增大了数据存储器SRAM;

增大了程序存储器FlashROM

扩大了供电电压的范围;

增加了机器周期可配置功能,从而避免了外部晶振12分频的问题;

增加了一系列外设。

接着,我们具体来看,这些功能到底是如何实现的。

1、内部数据存储器SRAM的增强单片机要想扩充资源,首先需要做的就是内存的扩展。因为控制这些扩展资源的寄存器,都需要内存地址的依托。另外,传统的51单片机的内存最大只有256字节,我们在开发程序时,用户所定义的变量都存放在这个内存里面,其中还包括了位寻址区,特殊功能寄存器区等我们无法使用的空间,早期的单片机应用,如控制一个开关,处理一个串口命令这些功能还够用,但是随着我们的应用越来越复杂,这么少的内存真是“巧妇难为无米之炊”。因此,内存的扩展非常必要。增强型51单片机的内存扩展,还有一个无法改变的是传统51单片的内存排列,图2列举的MCS-51单片机内部256字节RAM存储分布,因为这个存储分布是和整个51单片机架构息息相关的,无法对其有任何撼动。

图2 传统51单片机的内存排列

增强型51单片机的内存扩展,和传统8051单片机访问外部扩展RAM的方法相同,唯一区别是,传统的51单片在内存扩展之后,P0口和P2口将无法使用,但是增强型51单片机则仍然保留着这两个口的正常功能。由于增强型单片机扩展出来的内存是属于外部存储器扩展,因此如果你对于变量存储的空间有需求,则在编程时需要显示地指明这些变量的存储位置。如果使用汇编语言,则需要使用“MOVX”指令。如果使用C语言,则需要使用“xdata”关键词进行指定,不过为了C语言的可移植性,对于使用这种非标准C语言的关键词,我还是持保留态度。

2、内部程序存储器FlashROM的增强内部程序存储器的扩展方式,也和传统51单片机外部程序存储器的扩展方式类似。但是STC8系列封装管脚为40及以上的单片机,具有扩展64KB外部数据存储器的能力。访问外部数据存储器期间,WR/RD,ALE信号要有效。除此之外,在内部程序存储器被扩大之后,一般增强型51单片机都会在一些特定地址的ROM和RAM之中,存入一些特定的产品信息。图3是STC系列单片机中所保留的一些特定信息。

图3 STC系列单片机中所保留的一些特定信息

3、外设如何扩展传统的51单片机用于控制外设的寄存器地址都是排放在内部RAM的128字节特殊功能寄存器区。这段特殊功能寄存器地址区,传统的8051单片机已经用了一部分用于控制其资源,传统8051单片机特殊功能寄存器区的使用如图4所示。

图4 传统8051单片机的特殊功能寄存器使用传统的

51单片机一共用了21个特殊功能寄存器地址。为了保持与传统8051单片机的兼容,这段特殊功能寄存器原有的资源分配不能改变。因此,使用剩余的107个特殊功能寄存器地址,是外设寄存器扩展的一个途径。如图5所示,STC8数据手册上面列出了STC8的特殊功能寄存器列表。

图5 STC8数据手册列出的特殊功能寄存器列表(1)

图5 STC8数据手册列出的特殊功能寄存器列表(续1)

图5 STC8数据手册列出的特殊功能寄存器列表(续2)

然而,随着外设资源的不断增加,越来越多的外设寄存器需要被编码,原本128字节的特殊功能寄存器区已经用完,想要再扩充资源,只能将这些特殊功能寄存器存放在内部扩展的RAM上面。如图6所示。

图6 内部数据存储器排放的特殊功能寄存器

图6 内部数据存储器排放的特殊功能寄存器(续)

人工客服
(售后/吐槽/合作/交友)

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
查看全部20条内容