高128单元:(80H-FFH)
21个特殊功能寄存器不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作.
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下:
符号 |
地址 |
功能介绍 |
B |
F0H |
B寄存器 |
ACC |
E0H |
累加器 |
PSW |
D0H |
程序状态字 |
IP |
B8H |
中断优先级控制寄存器 |
P3 |
B0H |
P3口锁存器 |
IE |
A8H |
中断允许控制寄存器 |
P2 |
A0H |
P2口锁存器 |
SBUF |
99H |
串行口锁存器 |
SCON |
98H |
串行口控制寄存器 |
P1 |
90H |
P1口锁存器 |
TH1 |
8DH |
定时器/计数器1(高8位) |
TH0 |
8CH |
定时器/计数器1(低8位) |
TL1 |
8BH |
定时器/计数器0(高8位) |
TL0 |
8AH |
定时器/计数器0(低8位) |
TMOD |
89H |
定时器/计数器方式控制寄存器 |
TCON |
88H |
定时器/计数器控制寄存器 |
DPH |
83H |
数据地址指针(高8位) |
DPL |
82H |
数据地址指针(低8位) |
SP |
81H |
堆栈指针 |
P0 |
80H |
P0口锁存器 |
PCON |
87H |
电源控制寄存器 |
分别说明如下:
1、ACC---是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器。
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
|
P |
下面我们逐一介绍各位的用途
CY:进位标志。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0
例:78H+97H(01111000+10010111)
AC:辅助进、借位(高半字节与低半字节间的进、借位)。
例:57H+3AH(01010111+00111010)
F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。
RS1、RS0:工作寄存器组选择位。这个我们已知了。
0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。
P:奇偶校验位:它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。
例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。
4、DPTR(DPH、DPL)--------数据指针,可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。
5、P0、P1、P2、P3------这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。
关键字:51单片机 存储器介绍
引用地址:
51单片机存储器介绍(3)
推荐阅读最新更新时间:2024-03-16 14:43
51单片机驱动高精度时钟DS3231源代码
本程序一共有2个文件,成功的用stc89c51单片机驱动,完整的代码从 http://www.51hei.com/f/ds3231code.rar 处下载 下面是源码预览(第一个文件): /////////////////////////////////////////////////////////////////////////////////// /* DS3231.h文件 */ //////////////////////////////////////////////////////////////////////////////////// #ifndef _ds3231_h_ #define _ds3231_h
[单片机]
45-基于51单片机的甲醛浓度检测报警系统
具体实现功能 系统由STC89C52单片机+ZE08-CH2O甲醛传感器+LCD1602液晶显示屏+按键+蜂鸣器+指示灯+电源构成。 具体功能: 1、甲醛传感器测得甲醛数据后经过单片机处理,由LCD1602实时显示; 2、可通过按键设置甲醛报警阈值; 3、测得的甲醛浓度超过报警阈值时,开始声光报警。 设计背景 如今自动化、信息化程度越来越高,随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的自动控制系统开始进入了人们的生活,同时也标志了自动控制领域成为了数字化时代的一员。以单片机为核心的自动门系统就是其中之一。它实用性强,功能齐全,技术先进,使人们相信这是科技进步的成果。它更让人类懂得,数字
[单片机]
51单片机双向口和准双向口有什么区别
双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需要对其置1,否则若前一位为低电平,后一位输入的电平为高则MOS管拉不起来导致出错。而双向口则不需要做此动作,因为双向口有悬浮态。 准双向口就是做输入用的时候要有向锁存器写1的这个准备动作,所以叫准双向口。 真正的双向口不需要任何预操作可直接读入读出。 1:准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),端口只有两种状态:高或低。 2:双向除用于数字输入输出外还可用于模拟输入输出,模拟输入时端口通过方向控制设置成为高阻输入状态。双向端口有三种状态:高、低或高阻。 3:初始状态和复位状态下准双向口为1,双向口为高阻状态.有带些比较器的单片机,比较器的
[单片机]
51单片机产生PWM软件延时和定时器产生两种方法
89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大概可以分为软件延时和定时器产生两种方法。下面将逐一介绍。 1 软件延时法 利用软件延时函数,控制电平持续的时间,达到模拟pwm的效果。 程序如下: #include sbit pwm=P1^0; main() { while(1) { pwm=1; delayus(60);//置高电平后延时60us,占空比60% pwm=0; delayus(40); } } void delayus(uint x) { while(x--); } proteus软件仿真结果如下: 可见,用这种延时函数的方法就能简单地模拟出pwm输出。但是
[单片机]
51单片机的延时子程序
延时程序在单片机编程中使用非常广泛,但一些读者在学习中不知道延时程序怎么编程,不知道机器周期和指令周期的区别,不知道延时程序指令的用法, ,本文就此问题从延时程序的基本概念、机器周期和指令周期的区别和联系、相关指令的用法等用图解法的形式详尽的回答读者 我们知道程序设计是单片机开发最重要的工作,而程序在执行过程中常常需要完成延时的功能。例如 在交通灯的控制程序中,需要控制红灯亮的时间持续30秒,就可以通过延时程序来完成。延时程序是如何实现的呢?下面让我们先来了解一些相关的概念。 一、机器周期和指令周期 1.机器周期是指单片机完成一个基本操作所花费的时间,一般使用微秒来计量单片机的运行速度,51 单片机的一个机器周期包
[单片机]
从零开始学51单片机定时器
基于单片机的定时器电路原理图如下所示: 我们学单片机是首先学的就是 led 闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么呢?我们的主程序做了灯的闪烁,就不能再干其它的事了,难道单片机只能这样工作吗?当然不是,我们能用定时器来实现灯的闪烁的功能。 例 1:查询方式 ORG 0000H AJMP START ORG 30H START: MOV P1,#0FFH ;关所 灯 MOV TMOD,#00000001B ;定时/计数器 0 工作于方式 1 MOV TH0,#15H MOV TL0,#0A0H ;即数 5536 SETB TR0 ;定时/计数器 0 开始运行 LOOP:JBC TF
[单片机]
基于51单片机的医用血压测量仪设计案例
一、主要功能 本项目使用Proteus8.12仿真51单片机控制器,使用OLED12864液晶模块、PCF8591 AD模块、按键、电机等。 主要功能: 系统运行后,OLED显示开机显示界面。可通过K1键开始测量血压,气泵阀开启,一段时间后停止,开始测量高压和低压,并将测量值显示在OLED,并且显示当前血压状态。 主要功能如下: (1)OLED显示血压; (2)血压高压测量你; (3)血压低压测量; (4)血压状态显示。 二、硬件资源 51单片机核心模块、OLED12864液晶模块、按键、电机模块、PCF8591 AD模块。 三、软件设计 /* //定义结构体 _sys_ctrl sys_ctrl; //系统参数设置 vo
[单片机]
AT89C2051单片机制作的六位数显多路定时电子钟
这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片IC实现。 一片20引脚的单片机STC2032(引脚排列与AT89C2051完全相同)为电子钟主体,其显示笔画数据从P1口分时输出,P3口则输出对应的六位选通信号。由于LED数码管点亮时耗电较大,故不能使用AT89C2051单片来完成,但是可以可以用STC89C2032来完成。另外,本站制作时用超高亮的发光二极管代替昂贵的大数码管,成本低,效果独特。 本电子钟设计有三个轻触式按键,这里我们分别命名为:模式设定键K1、加调整键K2、减调整键K3。由于STC89C2032内部已经集成有复位电阻,所以,
[单片机]