51单片机的寄存器及指令

合集下载

51单片机工作寄存器组选择指令

51单片机工作寄存器组选择指令

51单片机工作寄存器组选择指令同学们!今天咱们来聊聊51 单片机里超重要的工作寄存器组选择指令。

这指令听起来有点复杂,但其实理解起来也不难哦。

咱们得知道为啥要有工作寄存器组选择指令。

在51 单片机里呀,工作寄存器可是非常重要的。

它们就像是单片机的小助手,帮助单片机快速地处理数据。

但是呢,51 单片机的工作寄存器可不止一组哦,有四组呢!这就像是有四个不同的工具箱,每个工具箱里都有一些工具可以用。

那我们在不同的时候,可能需要用到不同的工具箱,这时候就需要工作寄存器组选择指令来帮忙啦。

那么,这个指令到底是怎么工作的呢?其实很简单啦。

51 单片机里有个特殊的寄存器,叫做程序状态字寄存器(PSW)。

这个寄存器里有两位,专门用来选择工作寄存器组。

这两位就像是两个开关,通过不同的组合,可以选择不同的工作寄存器组。

比如说,当这两位是00 的时候,就选择了第一组工作寄存器;当是01 的时候,就选择了第二组工作寄存器;10 的时候是第三组,11 的时候是第四组。

这样,我们就可以根据自己的需要,随时切换工作寄存器组啦。

那什么时候会用到这个指令呢?比如说,我们在写一个程序的时候,可能一开始需要处理一些简单的数据,用第一组工作寄存器就够了。

但是后来,程序变得复杂了,需要处理更多的数据,这时候就可以切换到第二组或者第三组工作寄存器。

又或者,我们在一个程序里有不同的任务,每个任务需要用到不同的工作寄存器,这时候也可以通过工作寄存器组选择指令来切换。

举个例子吧,假如我们要写一个控制小灯闪烁的程序。

一开始,我们可能只需要用几个简单的变量来控制小灯的亮灭,这时候用第一组工作寄存器就可以了。

但是后来,我们想让小灯闪烁的速度可以调节,这就需要用到更多的变量来存储不同的时间值。

这时候,我们就可以用工作寄存器组选择指令切换到第二组工作寄存器,用里面的寄存器来存储这些时间值。

在使用工作寄存器组选择指令的时候,还有一些要注意的地方哦。

要记得在切换工作寄存器组之前,把当前寄存器组里的数据保存好,不然切换后这些数据可能就会丢失啦。

51系列单片机指令表

51系列单片机指令表
直接寻址单元送累加器A
E5direct
2
1
MOVdirect.A
累加器A送直接寻址单元
F5direct
2
I
MOVRn.#data
立即数送寄存器
78~7Fdata
2
I
MOVdirect,#data
立即数送直接寻址单元
75directdata
3
2
MOV@Ri,#data
立即数送内部RAM单元
76~77data
2
1
MOVdirect,Rn
寄存器送直接寻址单元
88~8Fdireci
2
2
MOVRn.direct
直接寻址单元送寄存器
A8~AFdirect
2
2
MOVdirect.@Ri
内部RAM单元送直接寻址单元
86~87direct
2
2
MOV@Ri,direct
直接寻址单元送内部RAM单元
A6-A7direct
DOdireci
2
2
PUSHdirect
直接寻址单元压入栈顶
COdirect
2
2
算术运算类指令
指令
功能简述
指令代码
字节

T
ADDA,Rn
累加器A加寄存器
28-2F
1
1
ADDA.@Ri
累器A加内部RAM单元
26-27
1
I
ADDA.direct
照加器A加直接寻址单元
25direct
2
1
ADDA.#data
盛加器A与寄存器交换
C8~CF
1
1
XCHA,@Ri

MCS-51单片机的(SFR)特殊功能寄存器

MCS-51单片机的(SFR)特殊功能寄存器

MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在一个51单片机的内部包含了这么多的东西。

对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。

事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的SFR。

1、ACC---是累加器,通常用A表示。

这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器。

在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3指针寄存器(1)程序计数器PC指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H(2)堆栈指针SP指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H(3)数据指针DPTR@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。

DPTR = DPH + DPL。

可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。

分成DPL(低8位)和DPH(高8位)两个寄存器。

用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作4、PSW-----程序状态字。

51单片机 寄存器,引脚与指令

51单片机 寄存器,引脚与指令

51单片机:寄存器,引脚与指令本篇总结了单片机学习过程中常常遇到的一些单片机引脚,寄存器,与指令的缩写符号和助记符及简要介绍,方便大家初学与查看。

欢迎下载!1.51单片机:寄存器符号地址功能介绍B F0H B寄存器ACC E0H累加器PSW D0H程序状态字IP B8H中断优先级控制寄存器P3B0H P3口锁存器IE A8H中断允许控制寄存器P2A0H P2口锁存器SBUF99H串行口锁存器SCON98H串行口控制寄存器P190H P1口锁存器TH18DH定时器/计数器1(高8位)TH08CH定时器/计数器1(低8位)TL18BH定时器/计数器0(高8位)TL08AH定时器/计数器0(低8位)TMOD89H定时器/计数器方式控制寄存器TCON88H定时器/计数器控制寄存器DPH83H数据地址指针(高8位)DPL82H数据地址指针(低8位)SP81H堆栈指针P080H P0口锁存器PCON87H电源控制寄存器下面,我们介绍一下几个常用的SFR。

是累加器,通常用A表示。

ACC---是累加器,通常用1、ACC---这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。

自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。

该标志常用作程序分枝转移的判断条件。

一个寄存器。

B--一个寄存器。

2、B--在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

程序状态字。

PSW-----程序状态字。

3、PSW-----这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。

它的各位功能请看下表:D7D6D5D4D3D2D1D0CY AC F0RS1RS0OV P下面我们逐一介绍各位的用途进位标志。

51单片机的组成

51单片机的组成

51单片机的组成单片机是一种集成电路(IC)芯片,它由中央处理器(CPU)、存储器(RAM、ROM)和各种输入输出(I/O)接口组成。

51单片机是基于Intel 8051架构的一款单片机系列,提供了丰富的功能和广泛的应用领域。

本文将介绍51单片机的基本组成和各部分的功能。

一、CPU(中央处理器)CPU是单片机的核心部分,负责控制单片机的操作和执行指令。

51单片机的CPU包含ALU(算术逻辑单元)、寄存器、指令译码器和定时器/计数器等功能模块。

ALU用于执行算术和逻辑运算,寄存器用于存储数据和指令,指令译码器用于解析指令,定时器/计数器用于计时和计数操作。

二、存储器存储器是存储数据和指令的地方,包括RAM和ROM两种类型。

1. RAM(随机存储器)RAM用于临时存储数据和程序运行所需的临时变量,它可以随时读取和写入数据。

RAM的大小决定了单片机可以存储的数据量和运行的程序规模。

2. ROM(只读存储器)ROM存储了单片机不可更改的程序代码,其中包括初始化程序、中断处理程序等。

ROM的大小决定了单片机可以运行的程序规模和功能。

三、输入输出接口输入输出接口用于与外部设备进行数据交换,包括通用输入输出口、串行口、定时器/计数器和中断引脚等。

1. 通用输入输出口通用输入输出口(GPIO)可配置为输入或输出,用于与外部设备交换数据。

它可以连接按键、LED、显示屏等外部设备,实现数据输入和输出的功能。

2. 串行口串行口用于与外部设备进行串行通信,如与电脑进行数据传输。

它包括串行数据输入口(RXD)和串行数据输出口(TXD),通过串行通信协议进行数据的收发。

3. 定时器/计数器定时器/计数器用于计时和计数操作,可以用于测量时间、产生脉冲信号等。

它可以应用于定时器中断、PWM波形生成、测速测量等应用场景。

4. 中断引脚中断引脚用于处理外部中断信号,如按键中断、外部传感器中断等。

当外部中断信号检测到触发条件时,CPU会暂停当前操作,转而执行中断服务程序。

51单片机汇编指令总结

51单片机汇编指令总结

51单片机汇编指令总结数据传输指令一.片内ram数据传输指令1.以累加器a为目的操作数的指令:mova,rnmova,directmova,@rimova,#data2.以寄存器rn为目的操作数的指令:movrn,amovrn,directmovrn,data3.以轻易地址为目的操作数的指令:movdirect,amovdirect,rnmovdirect1,derect2movdirect,@rimovdirect,#data4.间接地址为目的操作数的指令:mov@ri,amov@ri,directmov@ri,#data5.十六位数据传送指令:movdptr,#data16二.累加器a与片外ram数据传输指令:movxa,@rimovxa,@dptrmovx@ri,amovx@dptr,a三.换算串行:movca,@a+dptr(先pc←(pc)+1,后a←((a)+(dptr)))+movca,@a+pc(先pc←(pc)+1,后a←((a)+(pc)))四.互换指令:1.字节交换指令:xcha,rnxcha,directxcha,@ri2.半字节交换指令:xchda,@ri3.累加器半字节交换指令:swapa五.栈操作指令:1.push(入栈指令)pushdirect2.pop(出栈指令)popdirect算术运算指令:一.乘法加法指令:1.加法指令:adda,rnadda,directadda,@riadda,#data2.拎位次乘法指令:addca,rna←(a)+(rn)+cyaddca,directa←(a)+(direct)+cyaddca,@ria←(a)+((ri))+cyaddca,#dataa←(a)+(data)+cy3.带借位减法指令:subba,rna←(a)-cy-(rn)subba,directa←(a)-cy-(direct)subba,@ria←(a)-cy-((ri))subba,#dataa←(a)-cy-#data二.乘法乘法指令:1.乘法指令:mulabba←(a)×(b)高字节放到b中,低字节放到a中2.乘法指令:divaba←(a)÷(b)的商,(b)←(a)÷(b)的余数三.加1减1指令:1.提1指令:incaa←(a)+1incrnrn←(rn)+1incdirectdirect←(direct)+1inc@ri(ri)←((ri))+1incdptrdptr←(dptr)+12.减至1指令:decadecrndecdirectdec@ri四.十进制调制指令:daa调整累加器a的内容为bcd码逻辑操作方式指令:一.逻辑与、或、异或指令:1.逻辑与指令:anla,rnanla,directanla,@rianla,#data2.逻辑或这而令:orla,rnorla,directorla,@riorla,#dataorldirect,aorldirect,#data3.逻辑异或指令:xrla,rnxrla,directxrla,@rixrla,#dataxrldirect,axrldirect,#data二.清零、row指令:1.累加器a清零指令:crla2.累加器arow指令:cpla三.循环位移指令:1.累加器a循环左移指令:rla2.累加器a循环右移指令:rra3.累加器a连同进位位循环左移指令:rlca4.累加器a连同进位位循环右移指令:rrca控制转移指令:一.无条件迁移指令:1.绝对转移指令:ajmpaddr11(先pc+2,然后将addr11的高十位托付给pc,pc的高六位维持不变)2.长转移指令:ljmpaddr16(用addr16的值替代pc的值)3.相对迁移(长迁移)指令:sjmprel(带符号的偏移字节数)(pc+2,再加rel赋值给pc)4.间接转移指令:jmp@a+dptr(a)+(dptr)→(pc)二.条件转移指令:1.累加器判零迁移指令:jzrel先pc+2;后判断,a为0时转移,pc+rel赋值给pc;否则顺序继续执行jnzrel先pc+2,后判断,a不为0时转移,pc+rel赋值给pc;否则顺序执行2.比较转移指令:cjne目的操作数,源操作数,relcjnea,direct,rel先pc+3传回pc,再比较目的操作数和原操作数cjnea,#data,rel目>源时,程序转移,pc+rel传回pc且cy=0cjnern,#data,rel目=源时,程序顺序执行cjne@ri,#data,rel目djnzrn,rel先pc\\+2,rn-1,当rn为0时程序顺序继续执行,否则pc+rel传到pcdjnzdirect,rel先pc+3,direct-1,direct为0时程序顺序继续执行,否则pc+rel传到pc二.子程序调用、返回指令:1.绝对调用指令acall:acalladdr11先pc+2,sp+1将pc的低八位存入sp;sp+1,将pc的高八位取走sp。

51系列单片机寄存器详解

51系列单片机寄存器详解

AUXR:辅助寄存器字节地址=8EH,不可位寻址- - - WDIDLE DISRTO - - DISALEWDIDLE:WTD在空闲模式下的禁止/允许位当WDIDLE=0时,WDT在空闲模式下继续计数当WDIDLE=1时,WDT在空闲模式下暂停计数DISRTO:禁止/允许WDT溢出时的复位输出当DISRTO=0时,WDT定时器溢出时,在RST引脚输出一个高电平脉冲当DISRT0=1时,RST引脚为输入脚DISALE :ALE禁止/允许位当DISALE=0时,ALE有效,发出恒定频率脉冲当DISALE=1时,ALE仅在CPU执行MOVC和MOVX类指令时有效,不访问外寄存器时,ALE不输出脉冲信号AUXR1:辅助寄存器1字节地址A2,不可位寻- - - -- - - DPSDPS:数据指针寄存器选择位当DPS=0时,选择数据指针寄存器DPRT0DPRT1时,选择数据指针寄存器DPS 当=PSW:程序状态字CY——进位标记AC——半进位标记F0——用户设定标记RS1、RS0——4个工作寄存器区的选择位。

VO——溢出标记P——奇偶校验标记PCON:电源控制器及波特率选择寄存器字节地址=87H,不可位寻址SMOD - - POF GF1 GF0 PD IDLSMOD——波特率倍增位GF1、GF0——用户通用标记PD——掉电方式控制位,PD=1时进入掉电模式IDL——空闲方式控制位,IDL=1时进入空闲方式在AT89S51中PCON.4是电源断电标记位POF,上电是为1IE:中断允许控制寄存器EA:中断允许总控制位当EA=0时,中断总禁止。

当EA=1时,中断总允许后中断的禁止与允许由各中断源的中断允许控制位进行设置。

EX0( EX1):外部中断允许控制位当EX0( EX1)=0 禁止外中断当EX0( EX1)=1 允许外中断ET0(EX1):定时/计数中断允许控制位当ET0(ET1)=0 禁止定时(或计数)中断当ET0(ET1)=1 允许定时(或计数)中断ET2:定时器2中断允许控制位,在AT89S52、AT89C52中ES:串行中断允许控制位当ES=0 禁止串行中断当ES=1 允许串行中断IP:中断优先级控制寄存器PX0——外部中断0优先级设定位PT0——定时中断0优先级设定位PX1——外部中断1优先级设定位PT1——定时中断1优先级设定位PS——串口中断优先级设定位优先级设定位2PT2——定时器SCON:串行口控制寄存器SM0、SM1:串行口工作方式选择位SM2:多机通信控制位REN:允许/禁止串行口接收的控制位TB8:在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清零,也可以作为奇偶校验位,在方式1中是停止位。

51单片机中的21个寄存器

51单片机中的21个寄存器

51单片机中的21个寄存器
ACC 累加器B 用于辅助累加器做某些运算的寄存器
PSW 程序状态字其中最高位是进/借位标志C;PSW.6 是辅助进位标志AC,用于标识加减运算中低四位向高四位的进位;PSW.4 和PSW.3 是寄存器组选择位RS1 和RS0,用于从00H--1FH 的32 个存储器单元(4 组)中选出当前准备使用的一组工作寄存器的映射地址;PSW.2 是溢出标志OV;PSW.0 是ACC 的偶校验位P;PSW 的其余位不用
IP 中断优先级控制寄存器在51 中IP.0--IP.4 依次控制INT0、T0、INT1、T1、UART 中断的优先级,高三位不用
IE 中断使能控制器IE.7 是所有中断的总开关EA,IE.0--IE.4 依次控制INT0、T0、INT1、T1、UART 中断功能的开放或关断
P0、P1、P2、P3 这四个寄存器用于读写51 单片机的四个I/O 端口
SBUF 串行数据缓冲器将数据写入SBUF,单片机就自动将数据从UART 口发送出去
SCON 串行口功能控制器最高两位SM0、SM1 控制串行口工作模式;第5 位SM2 通常用于多机通信中区分地址帧和数据帧;第4 位REN 是控制串口接收数据的使能位;第3 位TB8 和第2 位RB8 分别是在串口的相关工作模式下要发送的和接收到的第9 位数据;次低位TI 和最低位RI 分别标识一个发送或接收过程已结束,这两个标志位都会触发串口中断
TH0、TL0 定时器T0 的计数单元的高8 位和低8 位
TH1、TL1 定时器T1 的计数单元的高8 位和低8 位
TMOD 定时/计数器工作模式控制器低4 位和高4 位的内容对应相同,分别控制T0 和T1 的工作模式,次低位和最低位控制对应定时/计数器的工作模式;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章
一、51单片机的内部资源:
运算器ALU:进行算术或则逻辑运算的部件
布尔处理器:位处理,以进位标志位CY为累加器累加器A
状态寄存器PSW
一个机器周期包含12个时钟震荡周期,6个S1-S6组成,每个转态有两个时相P1和P2
二、并行io
P1、P2、P3为准双向口:做输入线时必须先写入“1”。

P2,P0地址线,16位
P3的复用功能
三、51单片机的片内存储器
片内程序存储器(ROM):
8051具有4kb的ROM,
片内数据存储器(RAM):有128B
内部RAM的编址为00H-7FH
四、特殊功能寄存器
下表中每两行描述一个寄存器,第一行为实际位,第二行表示位
第二章
指令编码格式:
1)单字节指令:只表示操作码:空操作指令、表示操作码和寄存器编码:
2)双字节指令
3)三字节指令
寻址方式:1)、立即寻址2)直接寻址
3)
4)
5)
6)
指令
数据传送类指令:
内部数据传送指令:
外部存储器数据传送指令:
程序存储器数据传送指令:
数据交换指令:
堆栈操作:
算术运算类指令:
逻辑运算类指令
1)只对累加器A进行操作的单操作数逻辑运算指令:累加器清零:CLR A
累加器取反:CPLA
累加器循环左移:RL
累加器循环左移带CY进位:RLC
累加器循环右移:RR
累加器循环右移带CY进位:RRC
2)双操作数逻辑运算指令:
控制程序转移类指令:无条件转移:
条件转移:
JC:判断CY进位标志,为1则跳转,为0则跳过。

常用于循环。

子程序调用:
位操作类指令
伪指令。

相关文档
最新文档