历史上的今天
返回首页

历史上的今天

今天是:2026年03月23日(星期一)

正在发生

2023年03月23日 | 80C51单片机片内与片外程序存储器的选择

2023-03-23 来源:elecfans

大多数51系列单片机内部都配置一定数量的程序存储器ROM。如80C51芯片内有4KB掩模ROM存储单元,AT89C51芯片内部配置了4KB Flash ROM,它们的地址范围均为0000H~0FFFH。


ROM可以用来存放固定的程序或数据,如系统监控程序,常数表格等。


片内与片外程序存储器的选择

80C51的程序计数器PC是16位的计数器,所以能寻址64KB ROM的任何单元。


1.~EA引脚接高电平

~EA引脚接高电平,对于基本型单片机,首先在片内程序存储器中取指令,当PC的内容超过0FFFH(4K)时,系统会自动转到片外的程序存储器中取指令,外部程序存储器的地址从1000H开始编址。

poYBAGNOUi2AFJPtAAF-heQ6h1o349.png?imageView2/2/w/550

2.~EA引脚接低电平

~EA引脚接低电平时,单片机自动转到片外程序存储器中取指令(无论片内是否有程序存储器),外部程序存储器的地址从0000H开始编址。

pYYBAGNOUjqAfhtRAAEfs4C-8q8525.png?imageView2/2/w/550

程序存储器的几个特殊单元

程序存储器低端的一些地址被固定地用于特定的入口地址,如下图。

pYYBAGNOUkmAb3rQAAHYWreRI8A313.png?imageView2/2/w/550

其中一组特殊单元是0000H~0002H。系统复位后,PC=0000H,单片机从0000H单元开始执行程序。

如果不是从0000H开始,就要在这3个单元中存放一条无条件转移指令,以便转去执行指定的应用程序。

另外,在程序存储器中有各个中断源的入口地址,分配如下:

0003H~000AH——外部中断0中断地址区

000BH~0012H——定时/计数器0中断地址区

0013H~001AH——外部中断1中断地址区

001BH~0022H——定时/计数器1中断地址区

0023H~002AH——串行中断地址区

每个中断地址区有8个存储单元,可以存放中断服务程序,但8个单元一般难以存放得下一个完整的中断服务程序,因此往往需要在中断地址区的首地址存放一条无条件转移指令,转去中断服务程序真正的入口地址。

从002BH开始的单元才是用户可以随意使用的程序存储器。


推荐阅读

史海拾趣

问答坊 | AI 解惑

用Verilog 和VHDL 的比例

大家来投下票好象国外一般用verilog,但以前国内不少人用VHDL自己先来投我用verilog ,偏c,所以好学…

查看全部问答>

EP1C6的原理图第一次没成功,发到其他版面去了,PCB那里,去找吧!

EP1C6的原理图第一次没成功,发到其他版面去了,PCB那里,去找吧…

查看全部问答>

HCS12中断介绍

从网上看到的一个介绍HCS12系列中断的ppt,转来…

查看全部问答>

如何看自己的系统所采用的文件系统是哪种啊?

如何看自己的系统采用的是哪种文件系统啊?是fatfs的还是binfs的啊?…

查看全部问答>

关于DS1302芯片的verilog程序

各位大哥,我想问下DS1302芯片的CE与SCLK这两个时钟的时序该如何去写,DS1302芯片的资料给出在写命令数据与寄存器数据的时候CE必须为高电平,并且在写命令的时候SCLK必须是上升沿而在写寄存器数据时SCLK必须是一个下降沿。我想问下用verilog语句怎 ...…

查看全部问答>

HOHO,我们的51DIY——LC测量小工具完成咯!

[media=ra,400,300,0][/media]同志们,这一周的规整帖,我很高兴地跟大家说,我已经把它做好咯!!     上图以前,我先小小自曝一下糗事: 之前我怀疑过晶振,怀疑过STC,怀疑过LM311...... 谁会想到,一切的一切,其实只是我的程序 ...…

查看全部问答>

电源电容的选择

稳压块的输入和输出电容与实际电路的选择有什么关系呀?  …

查看全部问答>

TAME-A的问题。求解

CCISx Bit 13-12 Capture/compare input select. These bits select the TACCRx input signal. See the device-specific datasheet for specific signal connections. 00 CCIxA 01 CCIxB 10 GND 11 VCC 怎么理解?msp430 x1xx系列输入捕捉 ...…

查看全部问答>

免费wifi

简单的话就用connectify软件,复杂的话就:1.以管理员身份运行命令提示符(用快捷键WIN+R调出运行然后输入CMD打开命令提示符的非是管理员权限),右击“命令提示符”,选择以“管理员身份运行”。2.在命令提示符下输入命令:netsh wlan set hostedn ...…

查看全部问答>

今年电设那乘法器是干啥的

本帖最后由 paulhyde 于 2014-9-15 03:45 编辑 今年电设那乘法器是干啥的,求指教。谢谢    …

查看全部问答>