增强型51单片机扩展方式

文/Edward

大家是否思考过一个问题,为什么现在的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 内部数据存储器排放的特殊功能寄存器(续)
(0)

相关推荐

  • 自学单片机第一天:51单片机的构成,软件环境搭建

    https://m.toutiao.com/is/JcoW9Gd/ 学了一段C语言基础,买了ARM(4412)开发板准备学嵌入式,没有任何基础,看了几天裸机教程,头大啊真是从入门到放弃.欲速则不达,还 ...

  • 单片机“朝花夕拾”系列——乐创增强型51单片机讲义序

    本来想的是认认真真地做一部ARM内核的MCU教程和文档,这个入口最好的芯片切入口就是STM32.然而最不凑巧的是,现在STM32无论哪一个型号都是一"芯"难求.以至于我Layout ...

  • 如何看待增强型51单片机?

    文 / Edward  1  辩证地看待51内核单片机 要回答这个问题,首先需要来看一下传统的51单片机.在有些文章或者书本中,对于51单片机的态度是全面否定的,一旦听到某人要学习或者使用51单片机, ...

  • 增强型51和传统51单片机外设操作的区别

    文/Edward 前面的内容,我们从传统的51单片机出发,从硬件的基础上,一步步衍生出了增强型51单片机所增强的地方.现在我们可以清楚地了解,增强型51单片机对比传统的51单片机,增强的地方在于存储器 ...

  • 51单片机——增强型PWM,使用自带PWM发生器

    0. 序 之前用定时器做了模拟PWM输出,得到的1k左右波形还行,到10k往上波形就特别难看,又是跳变又是长短不一.后来在参考手册上面看到stc15w4k系列自带pwm波形发生器,于是整了好久写出来了 ...

  • 51单片机IO口输入输出方式

    描述 传统51单片机IO接口只可以作为标准双向IO接口,如果用其来驱动LED只能用灌电流的方式或是用三极管外扩驱动电路. 灌电流方式:LED正极接VCC,负极接IO口.IO为高电平是LED两极电平相同 ...

  • 一天入门51单片机

    本套教程共3节课程,熟悉这3节课程的话,你已经入门51单片机了. 下面是内容正文 单片机学习的第一步,什么是单片机最小系统? 我来打个比喻吧. 我们都知道,人的大脑是可以控制眼耳口鼻,手脚,全身等等, ...

  • 51单片机的存储空间梳理

    文/Edward我们在学习传统的MCS-51单片机的时候,一定学习过51单片机的存储结构.传统的MCS-51存储器有三个空间,分别是片内RAM(内部数据存储器).片外RAM(外部扩展的数据存储器) 和 ...

  • 51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)

    一.思路及相关问题 1.逻辑思路: 当按下key1时 led1亮起来 因为按下去具有瞬时性不用while,用if语句,当松开时,用while(!key1) ,函数调用. 先在脑海里想象它的大致运行过程 ...

  • 在51单片机上跑RTOS有没有意义?

    最近看见我的一个技术交流群在讨论一个问题:在51单片机上跑RTOS有没有意义? 今天就来围绕51和RTOS展开讲讲. 1关于51单片机及性能和资源 51单片机可以说是我们这一代人的经典,因为它资源不是 ...