51单片机外部存储器的使用
- 格式:doc
- 大小:2.09 MB
- 文档页数:10
51单片机结构功能51单片机是指基于Intel的8051微处理器为核心的单片机,其结构功能丰富,被广泛应用于各种嵌入式系统。
一、结构51单片机采用冯·诺依曼结构,具有指令存储器和数据存储器,其中程序存储器(ROM)用于存储程序和表格数据,而数据存储器(RAM)用于存储可变数据。
51单片机还具有特殊功能寄存器(SFR),这些寄存器专门用于控制和设置单片机的各种功能。
二、功能1、运算功能:51单片机具有8位运算器,可以进行算术、逻辑和位运算。
2、控制功能:51单片机具有丰富的控制指令,可以实现如条件转移、跳转、中断等功能,还可以进行定时器和计数器的控制。
3、通信功能:51单片机可以通过串行口实现串行通信,也可以通过并行口实现并行通信。
4、存储功能:51单片机内部具有少量的RAM和ROM存储器,同时还可以外接扩展存储器。
5、定时/计数功能:51单片机内部具有定时器和计数器,可以实现定时和计数的功能。
6、中断功能:51单片机具有多个中断源,可以实现多级中断控制。
7、输入/输出功能:51单片机具有多个输入/输出端口,可以实现多种输入/输出控制。
51单片机以其结构紧凑、功能丰富、易于使用等特点,被广泛应用于工业控制、智能家居、消费电子等领域。
C51单片机寄存器功能湖山网络广播系统设计方案一、概述随着科技的发展和数字化的普及,网络广播系统在各种场所扮演着越来越重要的角色。
湖山网络广播系统设计方案旨在满足湖山地区对高质量、高效的网络广播系统的需求。
该方案旨在构建一个稳定、可靠、易用的网络广播系统,以满足湖山地区在公共广播、紧急通知、日常资讯等方面的需求。
二、系统需求分析1、稳定性:系统应具备高度的稳定性,能够保证长时间的连续运行,避免因设备故障或网络问题导致的广播中断。
2、可靠性:系统应具备可靠的备份机制,确保在主设备出现问题时,备份设备能够迅速接管,保证广播的连续性。
3、易用性:系统应具备良好的用户界面,操作简单易懂,方便管理员进行配置和管理。
51单片机buf用法单片机(Microcontroller)是指将微处理器与外部存储器、输入/输出接口及定时器等外围电路集成在一块芯片上的一种微型计算机系统。
而51单片机则是指来自Intel早期生产的一款经典单片机,即Intel 8051。
在51单片机的编程中,BUF(Buffer)是一种常用的功能模块,用于数据的缓冲、传输和处理等操作。
本文将介绍51单片机BUF的基本用法,以及一些常见的应用案例。
一、BUF的基本概念BUF是一种常见的数据缓冲模块,通常由寄存器和状态控制逻辑构成。
其主要作用是在不同模块之间进行数据的传输和处理,起到缓冲数据的作用。
BUF可以分为输入BUF和输出BUF两种类型。
输入BUF接收外部输入信号,将其缓存在寄存器中,以供后续的处理使用。
而输出BUF则将经过处理后的数据从寄存器中输出,发送给外部器件或其他模块。
BUF的主要功能是防止信号的损失和传输延迟,提高数据的稳定性和可靠性。
二、BUF的用法在51单片机中,通过设置寄存器和相关的逻辑控制,实现对BUF的配置和使用。
以下是BUF的一些常见用法:1. 数据的输入和缓冲首先,通过将BUF的输入引脚与外部输入信号相连,将外部输入数据传递给BUF。
然后,将BUF的输出引脚与寄存器相连,通过设置寄存器的控制位,将输入数据缓存在寄存器中。
例如,假设我们需要从外部输入一个模拟信号,并将其用于后续的数据处理。
我们可以使用一个BUF模块将该模拟信号缓存到寄存器中,以供后续的处理使用。
2. 数据的处理和传输一旦输入数据被缓存在寄存器中,我们可以对其进行各种数据处理操作。
比如,可以进行数据的加减运算、位操作、逻辑运算等。
完成数据处理后,我们可以将处理结果传输到其他模块或输出端口,以实现数据的进一步应用。
通过BUF的输出引脚和寄存器的相关设置,可以将处理结果输出到指定的位置。
3. 数据的输出和发送BUF还可以用于将数据发送到外部器件或其他模块。
通过设置BUF的控制位和输出引脚,可以将寄存器中的数据输出并发送。
内部的ROM与外部RAM的空间分配8051单片机的存储器在物理结构上分为程序存储器空间和数据存储器空间,共有4个存储空间:片内程序存储器、片外程序存储器以及片内数据存储器、片外数据存储器空间。
这种程序存储和数据存储分开的结构形式被称为哈佛结构。
MCS-51使用哈弗结构,它的程序空间和数据空间是分开编址的,即各自有各自的地址空间,互不重叠。
所以即使地址一样,但因为分开编址,所以依然要说哪一个空间内的某地址。
而ARM(甚至是x86)这种冯诺依曼结构的MCU/CPU,它的地址空间是统一并且连续的,代码存储器/RAM/CPU 寄存器,甚至PC机的显存,都是统一编址的,只是不同功能的存储器占据不同的地址块,各自为政。
图1MCS-51单片机存储器的配置特点①内部集成了4K的程序存储器ROM;②内部具有256B的数据存储器RAM(用户空间+SFR空间);③可以外接64K的程序存储器ROM和数据存储器RAM。
从物理结构的角度讲,51单片机的存储系统可以分为四个存储空间:既片内ROM,RAM和片外ROM、RAM。
从逻辑结构上看(既编程的角度),可以分为三个不同的空间:(1)片内、片外统一编址的64KB的程序存储器地址空间:0000H~FFFFH(用16位地址);,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为外部ROM 地址空间;(2)256B的内部数据存储器地址空间(用8位地址),00H~FFH,分为两大部分,其中00H~7FH(共128B单元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域;(3)64KB的外部数据存储器地址空间(用16位地址):0000H~FFFFH,包括扩展I/O地址空间。
上述4个存储空间地址是重叠的,如图1所示。
8051的指令系统设计了不同的数据传送指令以区别这4个不同的逻辑空间:CPU访问片内、片外ROM指令用MOVC,访问片外RAM指令用MOVX,访问片内RAM指令用MOV。
单片机外部RAM扩展模块MCS-51系列单片机外部RAM为64K,在一些特殊场合下,远不能满足需要,本文就AT89C51讨论MCS-51系列单片机大容量RAM的扩首先介绍128K随机读取RAM HM628128。
HM628128是32脚双列直插式128K静态随机读取RAM,它具有容量大、功耗低、价格便宜、集成度高、速度快、设计和使用方便等特点。
如若在系统中加入掉电保护电路,保护数据有很高的可靠性,可以和EEPROM相媲美。
技术特性:(1)最大存取时间为120ns;(2)典型选通功耗75mW;典型未选通功耗10uW;(3)使用单一5V电源供电;(4)全静态存储器,不需要时钟及时序选通信号;(5)周期时间与存取时间相等;(6)采用三态输出电路,数据输入和输出端公用;图6 HM628128外部引脚(7)所有输入和输出引脚均与TTL电平直接兼容;(8)有两个片选端,适合于低功耗使用,即为了保存信息,用电池作为后备电源。
保存信息的最低电源电压Vcc=2V。
引脚安排及功能表:图6是HM628128的外部引脚排列图,各引脚名称及功用分别如下:A0~A16是17条地址线;I/O0~I/O7是8条双向数据线;CS1是片选1,低电平有效,CS2是片选2,高电平有效;WR是写控制线,当CS1为低电平,CS2为高电平时,WR的上升沿将I/O0~I/O7上的数据写到A0~A16选中的存储单元中;OE是读出允许端,低电平有效。
HM628128的功能表如表3所示。
其中,H表示高电平,L表示低电平,X表示任意状态由于AT89C51直接外部RAM容量为64K,地址线为16条,其中低8位地址和数据分时复用,因此需要外部地址锁存器和ALE锁存信号来锁存低8位地址。
又由于AT89C51的外部数据和外设地址通用,若扩展外设必然占用数据地址。
因此本系统采用P2.7(A15)口来区分数据和外设:当P2.7(A15)口为高电平时,选择外部数据;P2.7(A15)口为低电平时,则为外设。
C51存储器类型MCS-51单⽚机物理存储器区域1、 data区空间⼩,所以只有频繁⽤到或对运算速度要求很⾼的变量才放到data区内,⽐如for循环中的计数值。
2、 data区内最好放局部变量。
因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提⾼内存利⽤率。
当然静态局部变量除外,其内存使⽤⽅式与全局变量相同;3、确保你的程序中没有未调⽤的函数。
在Keil C⾥遇到未调⽤函数,编译器就将其认为可能是中断函数。
函数⾥⽤的局部变量的空间是不释放,也就是同全局变量⼀样处理。
这⼀点Keil C做得很愚蠢,但也没办法。
4、程序中遇到的逻辑标志变量可以定义到bdata中,可以⼤⼤降低内存占⽤空间。
在51系列芯⽚中有16个字节位寻址区bdata,其中可以定义8*16=128个逻辑变量。
定义⽅法是: bdata bit LedState;但位类型不能⽤在数组和结构体中。
5、其他不频繁⽤到和对运算速度要求不⾼的变量都放到xdata区。
6、如果想节省data空间就必须⽤large模式,将未定义内存位置的变量全放到xdata区。
当然最好对所有变量都要指定内存类型。
7、当使⽤到指针时,要指定指针指向的内存类型。
在C51中未定义指向内存类型的通⽤指针占⽤3个字节;⽽指定指向data区的指针只占1个字节;指定指向xdata区的指针占2个字节。
如指针p是指向data区,则应定义为: char data *p;。
还可指定指针本⾝的存放内存类型,如:char data * xdata p;。
其含义是指针p指向data区变量,⽽其本⾝存放在xdata区。
bit是在内部数据存储空间中 20H .. 2FH 区域中⼀个位的地址,或者 8051 位可寻址 SFR 的⼀个位地址。
code是在 0000H .. 0FFFFH 之间的⼀个代码地址。
data是在 0 到 127 之间的⼀个数据存储器地址,或者在 128 .. 255 范围内的⼀个特殊功能寄存器(SFR)地址。
at98s51单片机存储器的结构特点和使用注意事项1.引言a t98s51单片机是一种常用的存储设备,它具有独特的结构特点和使用注意事项。
本文将介绍at98s51单片机存储器的结构特点和使用注意事项,以帮助用户更好地理解和使用该设备。
2. at98s51单片机存储器结构特点a t98s51单片机的存储器结构具有以下特点:2.1存储单元a t98s51单片机的存储器由多个存储单元组成,每个存储单元能够存储一定的信息。
这些存储单元以字节为单位进行编址,可以通过地址来访问。
2.2存储器单元类型a t98s51单片机的存储器包含多种类型的存储单元,主要包括:-R AM(R an do mA cc es s Me mo ry)随机存储器:用于存储程序运行时的临时数据,具有读写功能,但断电后数据将消失。
-R OM(R ea d-On ly Me m or y)只读存储器:用于存储程序的指令和常量数据,具有只读功能,断电后数据不会丢失。
-E EP RO M(El ec tr ic a ll yE ra sa bl eP rog r am ma bl eR ea d-O n ly Me mo ry)可擦写可编程只读存储器:可重复擦写的存储器,用于存储一些需要频繁更新或修改的数据。
2.3存储器的地址范围a t98s51单片机的存储器地址范围取决于其数据总线的位数,以及具体型号的不同。
常见的a t98s51单片机的存储器地址范围为0x00至0x FF。
3. at98s51单片机存储器的使用注意事项在使用a t98s51单片机存储器时,需要注意以下事项:3.1内存管理合理地利用a t98s51单片机的存储器是提高效率的重要因素。
用户应根据具体的应用需求,合理分配存储器空间,避免出现存储器空间不足或浪费的情况。
3.2存储器读写顺序在a t98s51单片机中,读写数据的顺序对程序的正确性和性能有着重要影响。
在设计程序时,要根据具体情况选择合适的存储器读写顺序,尽量减少存储器操作次数,提高程序的执行效率。
一、51单片机的程序存储器结构1.内部结构单片机内部的程序存储器用于存储单片机工作时候的程序,单片机内部专门设置一个16位的程序计数器(PC),用于知识下一时刻单片机要执行的程序在ROM 空间中的地址位置,即可以存储64Kb空间大小。
程序存储器物理上可以分为片内程序存储器和片外存储器,不同单片机型号有不同的片内程序存储器空间大小。
例如8051单片机片内有4Kb的ROM,那当控制线取0时,PC访问的前4kb空间是片内的ROM;当控制线为0时候,PC访问的是片外的ROM。
2.程序存储器的7个特殊地址51单片机复位后,PC的内容是0000H,即为系统程序的启动地址。
51单片机内部有6个中断源,6个中断源介绍及地址如下所示:中断源之间只间隔8个存储单元,这是不足以存放中断程序的,所以这是中断入口地址,后续有中断服务函数。
二、51单片机的数据存储器数据存储器(RAM)存储单片机运行期间所需要的数据和临时生成的数据。
从物理上分为片内RAM和片外RAM(片外RAM是通过16位的地址总线访问,所以片外RAM也是64kb)。
1.片内数据存储器厂家根据不同的任务要求和需求定义不同的任务块,如下所示:工作寄存器组:一共有32个字节,也被称为通用寄存器,用于临时寄存8个信息,工作寄存器组分为4个组别,每组有R0-R7一共8个数据信息。
位寻址区:一共有16个字节,128位,该区域每一位可按照位于方式使用,这128位会重新分配工作地址。
一般RAM区域:用户编程可以使用的RAM,当然,前两个单元未使用的空间,用户也可以使用。
堆栈区和堆栈指针:先进后出、后入先出的原则进行管理的一段存储区域函数的调用就是一个堆栈操作,如下图所示:为实现堆栈“先入后出,后入先出”数据处理,51单片机内部设置了一个堆栈指针SP。
特殊功能寄存器:专用于控制、管理片内算术逻辑部件等功能模块工作,用户编程时可以直接给特殊功能寄存器设定值。
51单片机内部有包括PC在内19个特殊功能寄存器,如下所示:CPU专用寄存器:累加器A(E0H),寄存器B(F0H),程序状态寄存器PSW(D0H),堆栈寄存器SP(81H),数据指针DPTR(82H、83H)2.片外数据存储器51单片机内部RAM空间不够时候,就通过总线来扩展片外ram,最多可以扩展64KB.。
P0口有三个功能:1、外部扩展存储器时,当数据总线。
2、外部扩展存储器时,当地址总线。
3、不扩展时,可做一般的i/o使用,但内部没有上拉电阻,做为输入输出时应在外部接上上拉电阻。
P1口只做I/0口使用,其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用。
2、做一般I/O口使用时,其内部有上拉电阻。
P3口也有两个功能:1、除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。
2、有内部EPROM的单片机芯片,为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的。
RST/VPD:1、复位,当在此引脚加上两个机器周期的高电平时,面实现复位操作。
2、备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由些引脚引入,以保护内部RAM中的信息不会丢失。
ALE/PROG地址锁存控制信号:在系统扩展时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址的数据的隔离。
例如,ALE与74LS373锁存器的G相连接,当CPU对外部进行存取时,用以锁住地址的低位地址,即P0口输出,ALE有可能是高电平也有可能是低电平,当ALE是高电平时,允许地址锁存信号,当请问外部存储器时,ALE负跳变,将P0口上低8位地址信号送入锁存器,当ALE是低电平时,P0口上的内容和锁存器输出一致。
在没有访问外部存储器期间,ALE以1/6振荡周期频率输出,当访问外部存储器以1/12振荡周期输出,从这里我们可以看到,当系统没有进行扩展时ALE会以1/6振荡周期的固定频率输出,因此可以做为外部时钟,或者外部定时脉冲使用。
PROG为编程脉冲的输入端:单片机内部有一个4K或8K的程序存储器ROM。
R OM的作用是用来存放用户需要运行的程序,而PROG就是将这些程序写到ROM中的脉冲输入端。
PSEN外部程序存储器读选通信号:在读外部ROM时PSEN低电平有效,以实现外部ROM单元的读操作,内部ROM读取时,PSEN不动作,外部ROM读取时,在每个机器周期会动作两次。
程序存储器
程序存储器(ROM)是存放程序的电路。
单片机在编程时,一般先在计算机中用软件编写程序,再通过编程器将编好的程序写入到程序存储器中,单片机通过执行程序存储器中的程序来产生各种信号,从而实现各种控制。
1.程序存储器的使用MCS-51系列单片机可以使用内部程序存储器,也可以使用外部程序存储器。
MCS-51系列单片机使用内部程序存储器还是外部程序存储器,受31脚端的控制。
当A端=0时,单片机只能使用外部程序存储器,无法使用内部程序存储器。
8031、8032单片机内部无程序存储器,只能使用外部程序存储器,因此端必须接地。
当EA端=1时,单片机先使用内部程序存储器,容量不够时将会自动使用外部程序存储器。
2.程序存储器的地址编号
8x51(如8051、8751)单片机内部有4KB的程序存储器(该存储器内有4096个存储单元,每个单元存储1B),存储单元的地址编号是0000H~0FFFH,当进行扩展外接程序存储器时,可外接60KB的程序存储器,外部程序存储器的地址编号是1000H~FFFFH。
纠结了这么久,现在总算有点儿头绪了,先把它整理到这里先,有几点还是j经常被弄糊涂:地址和数据,地址/数据复用,地址的计算,总线的概念,执行指令跟脉冲的关系,哎呀呀,看来计算机组成和原理不看不行啊,得找个时间瞧瞧,过把瘾了解了解。
使用ALE信号作为低8位地址的锁存控制信号。
以PSEN信号作为扩展程序存储器的读选通信号,在读外部ROM是PSEN是低电平有效,以实现对ROM 的读操作。
由RD和WR信号作为扩展数据存储器和I/O口的读选通、写选通信号。
ALE/PROG: 当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
当访问外部存储器时,ALE作为锁存扩展地址的低8位字节的控制信号。
当访问外部数据存储器时,ALE以十二分之一振荡频率输出正脉冲,同时这个引脚也是EPROM编程时的编程脉冲输入端。
]
当非访问外部数据存储器时,ALE以六分之一振荡频率固定输出正脉冲,8051一个机器周期=6个状态周期=12个振荡周期,若采用6MHz的晶体振荡器,则ALE会发出1MHz的固定的正脉冲。
因此它可以用来做外部时钟或定时。
如果我们把这个功能应用与实际,可能给我们的设计带来简化,降低生产成本。
ALE脚是在使用MOVX、MOVC指令时才会变成有效(这些指令都使用到外部RAM或ROM 的地址。
这些指令都有一个特点:地址和数据分时出现在P0口)。
使用C写程序时,要使用它有效,可用访问内部RAM地址的方法。
如:uVariable=*((char *)0x12C),把0x12C地址的内容给uVariable变量。
这个过程有效的脚为ALE、RD。
这个信号线的信号生成是MCU硬件电路实现的,不可以人工控制。
在某些内置TOM的MCU里,可以关闭ALE信号输出,以降低EMI。
ALE/PROG(30脚):
以系统时钟fosc 的1/6的频率,周期性输出方波脉冲。
1系统扩展时,作为外部存储器低八位地址的锁存信号;
2可为系统提供一个频率为fosc/6 的方波信号;
EPROM型单片机编程时编程输入脉冲(第二功能)
PSEN(29脚):外部程序程序存储器的选通输出信号。
当单片机使用外部程序存储器时,此脚在一个机器周期内产生两次负脉冲,作为外部程序存储器ROM的选通信号;
访问外部数据存储器RAM 时,此信号无效。
关于出栈和进栈
关于外部数据存储器:
WR:外部数据存储器写信号RD:外部数据存储器读信号
怎么来扩展存储器呢?
首先必须知道的是总线结构扩展系统:
先看看怎么扩展外部程序存储器的扩展:
锁存地址芯片74ls273(低8位地址不能保持一个机器周期,所以要用到锁存器,而高8为能保持一个机器周期):
瞧瞧简单的扩展外部ROM的电路图(PSEN在一个机器周期内产生两次负脉冲,作为外部程序存储器ROM的选通信号,访问外部数据存储器RAM 时,此信号无效):
访问外部ROM的时序图(P0口呢在一个机器周期内时,首先在第一次ALE下降沿送P0的地址(有74ls373锁存能保持一个机器周期),在第二次ALE下降沿锁存数据,而高8位地址
在P2口,能保持一个机器周期,所以不用锁存器):
想想PSEN就是在B时间段拉低的,故就能把数据给送出去了(O(∩_∩)O哈哈哈~,真NB,谁设计的啊,赞一个,嗯,了解硬件内部结构很重要,所以不要仅仅局限于软件的编程,更需要在有硬件思维的基础上编程)
两片构成64KROM的方法:
多片扩展跟多的ROM呢,没错就是用到了译码器:
懂了扩展ROM,扩展RAM也是一样的;。