8051单片机指令定义详解..

合集下载

8051单片机指令定义详解

8051单片机指令定义详解
PSW
堆栈指针
ISP/IAP 地址生成器 程序计数器PC PCA SPI
TMP1
定时器0/1 串行口1 串行口2
WDT
LVD/LVR Control Unit
Port1锁存器
AD C
Port2,3,4, 5锁存器 Port2,3,4, 5驱动器
Port1驱动器
单片机内部结构MCS-51
MCS-51单片机与8051单片机的区别
各部分功能清单
• 1. 算术逻辑单元ALU • ALU :能进行8位二进制数的加(带进位加)、减(带借位 减)、乘、除、加1、减1及BCD加法的十进制调整等算术运算, 能进 行8位变量逻辑“与”、 “或”、 “异或”、 求补、 清零等逻辑运 算, 并有数据传送、程序转移等功能。
• 2.累加器ACC • ACC :称累加器A, 为一个8位寄存器, 它是CPU中使用最频繁的 寄存器。进入ALU作算术和逻辑运算的操作数多来自于A, 运算结果也 常送回A保存。 • 3.寄存器B • 是为ALU进行乘除法设置的。 • 4. 程序状态字寄存器PSW PSW是一个标志寄存器(8位), 它保存指令执行结果的特征信 息, 以供程序查询和判别。
STC12C5A60S2系列1T单片机简介 STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的 单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传 统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位 A/D转换(250K/S),针对电机控制,强干扰场合。1.增强型8051 CPU,1T,单时钟 /机器周期,指令代码完全兼容传统80512.工作电压:STC12C5A60S2系列工作电 压:5.5V- 3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V- 2.2V(3V单 片机)3.工作频率范围:0 - 35MHz,相当于普通8051的 0~420MHz4.用户应用 程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节......5.片上集成 1280字节RAM6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通 8051传统I/O口) 可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入 /高阻,开漏 每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过 55mA7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专 用仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片8.有 EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)9. 看门狗10.内部集成 MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)11.外 部掉电检测电路:在P4.6口有一个低压门槛比较器 5V单片机为1.32V,误差为 +/-5%,3.3V单片机为1.30V,误差为+/-3%12.时钟源:外部高精度晶体/时钟,内 部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使 用内部R/C振荡器还是外部晶体/时钟

8051指令集

8051指令集

8051指令集資料轉移指令MOV 移動MOVC 程式記憶體移動MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令PUSH 放入堆疊POP 由堆疊取回XCH 8位元交換XCHD 低4位元交換SWAP 高低4位元交換算術指令ADD 兩數相加ADDC 兩數相加再加CSUBB 兩數相減再減CINC 加一指令DEC 減一指令MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存BDIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存BDA (DA A 只此一条指令)調整為十進數邏輯指令ANL做AND(逻辑与)運算ORL做OR(逻辑或)運算XRL 做(逻辑异或)運算CLR 清除為0CPL 取反指令RL 不带进位左环移RLC 带进位左环移RR 不带进位右环移RRC 带进位右环移控制转移类指令JC C=1時跳JNC C=0時跳JB 位元=1時跳JNB 位元=0時跳JBC 位元=1時跳且清除此位元LCALL 长调用子程序ACALL 绝对调用子程序RET 由副程式返回RETI 由中斷副程式返回AJMP 绝对转移SJMP 相对转移JMP @A+DPTR 散转,相对DPTR的间接转移JZ A=0時跳JNZA 0時跳CJNE 二數比較,不相等時跳DJNZ 減一,不等於0時跳NOP 空操作位变量指令SETB 設定為1ORG 程序开始,规定程序的起始地址END 程序结束EQU 等值指令(先赋值后使用)例:SUM EQU 30H DB 定义字节指令DW 定义字内容DS 定义保留一定的存贮单元数目BIT 位地址符号指令例:SAM BIT P1.0RET 子程序返回指令RETI 中断子程序返回指令$ 本条指令地址算术运算指令指令说明周期ADD A,Rn A←A+Rn 12ADD A,direct A←A+direct 12ADD A,@Ri A←A+Ri 12ADD A,#data A←A+data 12ADDC A,Rn A←A+Rn+C 12ADDC A,direct A←A+direct+C 12ADDC A,@Ri A←A+Ri+C 12ADDC A,#data A←A+data+C 12SUBB A,Rn A←A-Rn-C 12SUBB A,direct A←A-direct-C 12SUBB A,@Ri A←A-Ri-C 12SUBB A,#data A←A-data-C 12INC A A←A+1 12INC Rn Rn←Rn+1 12INC direct direct←direct+1 12INC @Ri @Ri←@Ri+1 12INC DPTR DPTR←DPTR+1 12DEC A A←A-1 12DEC Rn Rn←Rn-1 12DEC direct direct←direct-1 12DEC @Ri @Ri←@Ri-1 12MUL AB 两个无符号的8位数据相乘,其中高阶8位放入B缓存器,低阶8位则放入累积器ACC 24DIV AB 两个无符号的8位数据相除,把ACC值除以B缓存器值,商数放回ACC,余数放在B 48 DA A 累加器作十进制调整 48逻辑运算指令指令说明周期ANL A,Rn A←A and Rn 12ANL A,direct A←A and direct 12ANL A,@Ri A←A and Ri 12ANL A,#data A←A and data 12ANL direct,A direct←direct and A 12ANL direct,#data direct←direct and data 24ORL A,Rn A←A or Rn 12ORL A,direct A←A or direct 12ORL A,Rn A←A or Rn 12ORL A,@Ri A←A or Ri 12ORL A,#data A←A or data 12ORL direct,A direct←direct or A 12ORL direct,#data direct←direct or data 24XRL A,Rn A←A xor Rn 12XRL A,direct A←A xor direct 12XRL A,@Ri A←A xor Ri 12XRL A,#data A←A xor data 12XRL direct,A direct←direct xor A 12XRL direct,#data direct←direct xor data 12CLR A 清除累加器 12CPL A 累加器反相 12RL A 累加器向左旋转 12RLC A 累加器和C左旋 12RR A 累加器向右旋转 12RRC A 累加器和C右旋 12SWAP A 累加器的高低四位互换 12数据转移指令指令说明周期MOV A,Rn A←Rn 12MOV A,direct A←direct 12MOV A,@Ri A←Ri 12MOV A,#data A←data 12MOV Rn,A Rn←A 12MOV Rn,direct Rn←direct 24MOV Rn,#data Rn←data 12MOV direct,A direct←A 12MOV direct,Rn direct←Rn 24MOV direct,direct direct←direct 24MOV direct,@Ri direct←Ri 24MOV direct,#data direct←data 24MOV @Ri,A Ri←A 12MOV @Ri,direct Ri←direct 24MOV @Ri,#data Ri←data 12MOV DPTR,#data 16 Ri←16bit data 24MOVC A,@A+DPTR A←程序内存的数据 24MOVC A,@A+PC A←程序内存的数据 24MOVX A,@Ri A←外部RAM的数据(8bit地址) 24 MOVX A,@DPTR A←外部RAM的数据(16bit地址) 24 MOVX @Ri,A 外部的RAM(8bit)←A 24MOVX @DPTR,A 外部的RAM(16bit)←A 24PUSH direc 推迭区←direct 24POP direc direct←堆栈区 24XCH A,Rn A和Rn互换 12XCH A,direct A和direct互换 12XCH A,@Ri A和Ri互换 12XCHD A,@Ri A和Ri的低四位互换 12位运算指令指令说明周期CLR C 清除进位旗标 12CLR bit 清除直接位 12SETB C 设定进位旗标 12SETB bit 设定直接位 12CPL C 进位旗标反相 12CPL bit 直接位反相 12ANL C,bit C←C and bit 24ANL C,/bit C←C and bit(反相) 24ORL C,bit C←C or bit 24ORL C,/bit C←C or bit(反相) 24MOV C,bit C←bit 12MOV bit,C bit←C 24JC rel 若C=1跳至rel 24JNC rel 若C=0跳至rel 24JB bit,rel 若bit=1跳至rel 24JNB bit,rel 若bit=0跳至rel 24JBC bit,rel 若bit=1跳至rel,且清除此位 24程序跳跃指令指令说明周期ACALL addr11 绝对式子程序呼叫 24LCALL addr16 远程子程序呼叫 24RET 从子程序返回 24RETI 从中断子程序返回 24AJMP addr11 绝对式跳跃 24LJMP addr16 远程跳跃 24SJMP rel 短程跳跃 24JMP @A+DPTR 间接跳跃 24JZ rel 若A=0跳至rel 24JNZ rel 若A不等于0跳至rel 24CJNE A,direct,rel 若A不等于direct跳至rel 24CJNE A,#data,rel 若A不等于data跳至rel 24CJNE Rn,#data,rel 若Rn不等于data跳至rel 24CJNE @Ri,#data,rel 若Ri不等于data跳至rel 24DJNZ Rn,rel Rn减1不等于0跳至rel 24DJNZ direct,rel direct减1不等于0跳至rel 24NOP 没动作 12缩写符号说明缩写符号说明备注Rn 缓存器R0-R7direct 8bit内部数据存储器,包括1.内部数据存储器(00-7F)的地址2.特殊功能缓存器(80-FF)的地址,如P0,PSW,TMOD..等@Ri 由缓存器R0或R1所寻址的内部RAM数据#data 8bit常数#data 16 16bit常数addr 16 16bit的目的地址,可使跳跃指令跳跃64kaddr 11 11bit的目的地址,可使跳跃指令跳跃2krel 具正负号的8位地址偏移量,用于相对地址的跳跃bit 1个bit:只所有可以位寻址的位。

8051单片机常用指令

8051单片机常用指令

8051单⽚机常⽤指令3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指9.堆栈操作3.2 分类指令在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。

Rn:当前指定的⼯作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。

Ri:当前指定的⼯作寄存器组中的RO,R1(其中i=0,1)。

(Ri):Ri间址寻址指定的地址单元。

((Ri)):Ri间址寻址指定地址单元中的内容。

dir:8位直接字节地址(在⽚内RAM和SFR存储空间中)。

#data8:8位⽴即数。

#datal6:16位⽴即数。

addrl6:16位地址值。

addrll:11位地址值。

bit:位地址(在位地址空间中)。

rel:相对偏移量(⼀字节补码数)。

下⾯介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。

3.2.1数据传送与交换类指令共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为⽬的的操作数的指令;访问外部RAM的指令;读程序存储器的指令;数据交换指令以及准栈操作指令。

9.堆栈操作PUSH dir ;SP⼗1-6P,(dir)⼀(SP)POP dir ;((SP))⼀dir,SP-1--P ,例1 SP=07H,(35H)=55H,指令PUSH 35H执⾏后,55H送⼊08H地址单元,SP=08H。

例2 SP=13H,(13H)= 1FH,指令POP 25H执⾏后,1FH压⼊25H地址单元,SP此时为12H。

综合例把⽚内RAM中50H地址单元中的内容与40H地址单元中的内容互换。

⽅法⼀(直接地址传送法):MOV A ,50H数据传送与交换类指令是各类指令中数量最多、使⽤最频繁的⼀类指令,编程时应能⼗分熟练地灵活运⽤3.2.2算术运算类指令共有24条指令,主要包括加、减、乘、除、增量、减量和⼗进制调整等指令。

8051单片机的指令系统

8051单片机的指令系统
立即寻址、直接寻址、寄存器寻址、 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 寄存器间接寻址、变址寻址。
说明 传送操作 交换操作 堆栈操作
目的操作数寻址方式:
直接寻址、寄存器寻址、 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P ACC的指令影响奇偶标志 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影 响标志位。 响标志位。
9 XCH XCH XCH XCHD SWAP
MOV XCH SWAP XCH XCHD
交换指令( 交换指令(5条)
A, A,Rn A, A, direct A, A, @Ri A, @Ri A, A
R6, #29H A, R6 A A, R6 A, @R0
例: 已知A中的内容为34H
算术运算类指令
MOV A,# 60H , ;A←#60H MOV DPTR,# 3400H ;DPTR←#3400H , MOV 30H,# 40H , 单元←#40H ;30H单元 单元
4 寄存器间接寻址
以寄存器中内容为地址,以该地址中内容为操 作数的寻址方式。间接寻址的存储器空间包括内 部数据RAM和外部数据RAM。能用于寄存器间接 寻址的寄存器有R0,R1和DPTR。在寄存器名称 前面加一个符号@来表示寄存器间接寻址。 例:
2 直接寻址
指令中直接给出操作数地址的寻址方式, 能进行直接寻址的存储空间有SFR寄存器和内 部数据RAM。 例:
MOV MOV PSW,# 20H , A,30H , ;PSW←#20H ;A←(30H)
3 立即寻址
指令中直接给出操作数的寻址方式。立即操 作数用前面加有#号的8位或16位数来表示。 例:
程序存储器 执行前PC 执行前

8051单片机的指令列表

8051单片机的指令列表
1
1
ADDC A,#data
累加器加立即数和进位标志
2
1
ADDC A,direct
累加器加直接寻址单元和进位标志
2
1
INC A
累加器加1
1
1
INC Rn
寄存器加1
1
1
INC direct
直接寻址单元加1
2
1
INC @Ri
内部RAM单元加1
1
1
INC DPTR
数据指针加1
1
2
DA A
十进制调整
1
1
SUBB A,Rn
ORL C,bit
C逻辑或直接寻址位
2
2
ORL C,/bit
C逻辑或直接寻址位的反
2
2
JC rel
C为1转移
2
2
JNC rel
C为零转移
2
2
JB bit,rel
直接寻址位为1转移
3
2
JNB bit,rel
直接寻址为0转移
3
2
JBC bit,rel
直接寻址位为1转移并清该位
3
2
直接寻址单元或立即数
3
1
XRL A,Rn
累加器异或寄存器
1
1
XRL A,@Ri
累加器异或内部RAM单元
1
1
XRL A,#data
累加器异或立即数
2
1
XRL A,direct
累加器异或直接寻址单元
2
1
XRL direct,A
直接寻址单元异或累加器
2
1
XRL direct,#data
直接寻址单元异或立即数

80C51单片机原理

80C51单片机原理

80C51单片机原理RAM地址寄存器 RAM 128B 程序地址寄存器P0驱动器 P2锁存器 P2驱动器P1锁存器 暂存器2 B 寄存器 4KB ROM暂存器1ACC SP P0锁存器 PC PC 增1 缓冲器 P3锁存器 OSC中断、串行口及定时器PSW ALU DPTRP1驱动器 P3驱动器XTAL1XTAL2 P0.0~P0.7 P2.0~P2.7 P3.0~P3.7 P1.0~P1.7 RST ALEV CCV SS定时控制 指令译码器 指令寄存器 PSEN EA表2-1 P3口各引脚与第二功能表PSW 的各位定义见表80C51 P0~P3接口功能简见大多数口线都有双重功能,介绍如下: 1、P0口具有双重功能:(1) 作为通用I/O ,外接I/O 设备。

(2) 作为地址/数据总线。

在有片外扩展存储器的系统 中,低8位地址和数据由P0口分时传送。

PSW 位地址 PS W.7PSW .6PSW .5 PSW .4 PSW .3 PSW .2 PSW .1 PSW .0 位标志CY ACF0RS1RS0OVF1P2、P1口是唯一的单功能口:作为输入/输出口,P1口的每一位都可作为输入/输出口。

3、P2口具有双重功能:(1)作为输入/输出口。

(2)作为高8位地址总线。

在有片外扩展存储器的系统中,高8位地址由P2口传送。

4、P3口具有双重功能:(1)作第一功能使用时,其功能为输入/输出口。

(2)作第二功能使用时,每一位功能定义如表2.1所示。

80C51单片机的4个I/O口都是8位双向口,这些口在结构和特性上是基本相同的,但又各具特点,以下将分别介绍之。

图2-9 P0口某位的结构图2-10 P1口某位的结构图2-11 P2口某位的结构图2-12 P3口某位的结构P0~P3口使用时应注意事项1、如果80C51单片机内部程序存贮器ROM够用,不需要扩展外部存贮器和I/O接口,80C51的四个口均可作I/O口使用。

8051单片机指令表

8051单片机指令表

8051单片机指令表助记符指令说明字节数周期数(数据传递类指令)MOV A,Rn寄存器传送到累加器11 MOV A,direct直接地址传送到累加器21 MOV A,@Ri累加器传送到外部RAM(8地址)11 MOV A,#data立即数传送到累加器21 MOV Rn,A累加器传送到寄存器11 MOV Rn,direct直接地址传送到寄存器22 MOV Rn,#data累加器传送到直接地址21 MOV direct,Rn寄存器传送到直接地址21 MOV direct,direct直接地址传送到直接地址32 MOV direct,A累加器传送到直接地址21 MOV direct,@Ri间接RAM传送到直接地址22 MOV direct,#data立即数传送到直接地址32 MOV@Ri,A直接地址传送到直接地址12 MOV@Ri,direct直接地址传送到间接RAM21 MOV@Ri,#data立即数传送到间接RAM22 MOV DPTR,#data1616位常数加载到数据指针31 MOVC A,@A+DPTR代码字节传送到累加器12 MOVC A,@A+PC代码字节传送到累加器12 MOVX A,@Ri外部RAM(8地址)传送到累加器12 MOVX A,@DPTR外部RAM(16地址)传送到累加器12 MOVX@Ri,A累加器传送到外部RAM(8地址)12 MOVX@DPTR,A累加器传送到外部RAM(16地址)12 PUSH direct直接地址压入堆栈22POP direct直接地址弹出堆栈22XCH A,Rn寄存器和累加器交换11XCH A,direct直接地址和累加器交换21XCH A,@Ri间接RAM和累加器交换11XCHD A,@Ri间接RAM和累加器交换低4位字节11(算术运算类指令)INC A累加器加111 INC Rn寄存器加111 INC direct直接地址加121 INC@Ri间接RAM加111 INC DPTR数据指针加112 DEC A 累加器减111 DEC Rn寄存器减111 DEC direct直接地址减122 DEC@Ri间接RAM减111 MUL AB累加器和B寄存器相乘14 DIVAB累加器除以B寄存器14 DA A累加器十进制调整11 ADD A,Rn寄存器与累加器求和11 ADD A,direct直接地址与累加器求和21 ADD A,@Ri间接RAM与累加器求和11 ADD A,#data立即数与累加器求和21 ADDC A,Rn寄存器与累加器求和(带进位)11 ADDC A,direct直接地址与累加器求和(带进位)21 ADDC A,@Ri间接RAM与累加器求和(带进位)11 ADDC A,#data立即数与累加器求和(带进位)21 SUBB A,Rn累加器减去寄存器(带借位)11 SUBB A,direct累加器减去直接地址(带借位)21 SUBB A,@Ri累加器减去间接RAM(带借位)11 SUBB A,#data累加器减去立即数(带借位)21(逻辑运算类指令)ANL A,Rn寄存器“与”到累加器11 ANL A,direct直接地址“与”到累加器21ANL A,@Ri间接RAM“与”到累加器11 ANL A,#data立即数“与”到累加器21 ANL direct,A累加器“与”到直接地址21 ANL direct,#data立即数“与”到直接地址32 ORL A,Rn寄存器“或”到累加器12 ORL A,direct直接地址“或”到累加器21 ORL A,@Ri间接RAM“或”到累加器11 ORL A,#data立即数“或”到累加器21 ORL direct,A累加器“或”到直接地址21 ORL direct,#data立即数“或”到直接地址31 XRL A,Rn寄存器“异或”到累加器12 XRL A,direct直接地址“异或”到累加器21 XRL A,@Ri间接RAM“异或”到累加器11 XRL A,#data立即数“异或”到累加器21 XRL direct,A 累加器“异或”到直接地址21 XRL direct,#data立即数“异或”到直接地址31 CLR A累加器清零12 CPL A累加器求反11 RL A累加器循环左移11 RLC A带进位累加器循环左移11 RR A累加器循环右移11 RRC A带进位累加器循环右移11 SWAP A累加器高、低4位交换11 (控制转移类指令)JMP@A+DPTR相对DPTR的无条件间接转移12 JZ rel累加器为0则转移22 JNZ rel累加器为1则转移22 CJNE A,direct,rel比较直接地址和累加器,不相等转移32 CJNE A,#data,rel比较立即数和累加器,不相等转移32CJNE Rn,#data,rel比较寄存器和立即数,不相等转移22 CJNE@Ri,#data,rel比较立即数和间接RAM,不相等转移32 DJNZ Rn,rel寄存器减1,不为0则转移32 DJNZ direct,rel直接地址减1,不为0则转移32 NOP空操作,用于短暂延时11 ACALL add11绝对调用子程序22 LCALL add16长调用子程序32 RET从子程序返回12 RETI 从中断服务子程序返回12 AJMP add11无条件绝对转移22 LJMP add16无条件长转移32 SJMP rel无条件相对转移22(布尔指令)CLR C清进位位11 CLR bit清直接寻址位21 SETB C置位进位位11 SETB bit置位直接寻址位21 CPL C取反进位位11 CPL bit取反直接寻址位21 ANL C,bit直接寻址位“与”到进位位22 ANL C,/bit直接寻址位的反码“与”到进位位22 ORL C,bit直接寻址位“或”到进位位22 ORL C,/bit直接寻址位的反码“或”到进位位22 MOV C,bit 直接寻址位传送到进位位21 MOV bit,C进位位位传送到直接寻址22 JC rel如果进位位为1则转移22 JNC rel如果进位位为0则转移22 JB bit,rel如果直接寻址位为1则转移32 JNB bit,rel如果直接寻址位为0则转移32JBC bit,rel直接寻址位为1则转移并清除该位22(伪指令)ORG指明程序的开始位置DB定义数据表DW定义16位的地址表EQU给一个表达式或一个字符串起名DATA给一个8位的内部RAM起名XDATA给一个8位的外部RAM起名BIT给一个可位寻址的位单元起名END指出源程序到此为止(指令中的符号标识)Rn工作寄存器R0-R7Ri工作寄存器R0和R1@Ri间接寻址的8位RAM单元地址(00H-FFH)#data88位常数#data1616位常数addr1616位目标地址,能转移或调用到64KROM的任何地方addr1111位目标地址,在下条指令的2K范围内转移或调用Rel8位偏移量,用于SJMP和所有条件转移指令,范围-128~+127 Bit片内RAM中的可寻址位和SFR的可寻址位Direct直接地址,范围片内RAM单元(00H-7FH)和80H-FFH $指本条指令的起始位置。

单片机第4章8051单片机指令系统

单片机第4章8051单片机指令系统

单片机第4章8051单片机指令系统在单片机的世界里,指令系统就如同指挥官手中的指令手册,指引着单片机完成各种复杂的任务。

8051 单片机的指令系统更是其中的重要组成部分,它为我们提供了丰富多样的指令,让我们能够灵活地控制单片机的运行。

8051 单片机的指令系统可以分为五大类,分别是数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令。

数据传送指令是指令系统中的基础,就像是在战场上调配物资一样。

它能够实现寄存器之间、寄存器与存储器之间、立即数与寄存器或存储器之间的数据传递。

比如 MOV 指令,它可以将一个数据从源地址传送到目的地址。

假设我们要将立即数 50H 传送到累加器 A 中,就可以使用指令“MOV A, 50H”。

这样,累加器 A 就存储了 50H 这个数值。

算术运算指令则像是在进行战斗中的兵力计算。

它包括加法、减法、乘法和除法等运算。

ADD 指令用于加法运算,SUBB 指令用于带借位的减法运算。

例如,我们要将累加器 A 中的值与寄存器 B 中的值相加,并将结果存放在累加器 A 中,就可以使用指令“ADD A, B”。

如果要进行带借位的减法运算,比如从累加器 A 中减去寄存器 B 中的值以及借位标志位 CY 的值,可以使用指令“SUBB A, B”。

逻辑运算指令就像是在制定战略时的思考逻辑。

AND 指令用于逻辑与操作,ORL 指令用于逻辑或操作,XRL 指令用于逻辑异或操作。

以 AND 指令为例,如果我们要将累加器 A 中的值与立即数 80H 进行逻辑与操作,并将结果存放在累加器 A 中,就可以使用指令“AND A, 80H”。

控制转移指令则是指挥战斗中的战略部署调整。

它可以改变程序的执行顺序,使单片机能够根据不同的条件执行不同的程序段。

比如 JZ 指令,如果累加器 A 的值为 0,则程序跳转到指定的地址;JC 指令,如果进位标志位 CY 为 1,则程序跳转到指定的地址。

位操作指令则专注于对单个位的操作,就像是在精细地调整战斗中的某个关键环节。

8051单片机指令定义详解——ADDCA,(3)

8051单片机指令定义详解——ADDCA,(3)

8051单片机指令定义详解——ADDCA,(3)8051 单片机指令定义详解——ADDC A,(3)8051 单片机指令定义详解(ADDC A,)ADDC A,功能:带进位的加法。

说明:执行ADDC 指令时,把src-byte 所代表的源操作数连同进位标志一起加到累加器A 上,并将结果置于累加器A 中。

根据运算结果,若在第7 位有进位生成,则将进位标志置1,否则清零;若第3 位有进位生成,则置辅助进位标志为1,否则清零。

如果是无符号整数相加,进位的置位显示当前运算结果发生溢出。

如果第6 位有进位生成而第7 位没有,或第7 位有进位生成而第6 位没有,则将OV 置1,否则将OV 清零。

在进位有符号整数相加运算的时候,OV 置位,表示两个正整数之和为一负数,或是两个负整数之和为一正数。

本类指令的源操作数允许4 种寻址方式:寄存器寻址、直接寻址、寄存器间接寻址、和立即寻址。

示例:假设累加器A 中的数据为0C3H(11000011B),R0 的值为0AAH(10101010B),进位标志为1,执行如下指令:ADDC A,R0累加器A 中的结果为6EH(01101101B),辅助进位标志AC 被清零,进位标志C 和溢出标志OV 被置1。

ADDC A,Rn 字节数:1 执行周期:1 机器吗:00110rrr 操作:(A)←(A) +(C)+(Rn)ADDC A, direct 字节数:2 执行周期:1 机器吗:00110101 aaaaaaaa 操作:(A)←(A)+(C)+(direct)ADDC A, @Ri 字节数:1 执行周期:1 机器吗:0010011i 操作:(A)。

8051单片机21个特殊功能寄存器和指令汇总

8051单片机21个特殊功能寄存器和指令汇总

MCS-51单片机21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SF R存储空间中,地址空间为80H-FFH,在这片SF R空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有R OM,用来存放程序,有R AM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。

在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SF R)。

这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。

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

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

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

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

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

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

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

8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。

这样就没事了。

8051单片机指令详解

8051单片机指令详解

数据传递类指令(1)以累加器为目的操作数的指令MOV A,RnMOV A,directMOV A,@RiMOV A,#data第一条指令中,Rn代表的是R0-R7。

第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。

第四条指令是将立即数data送到A中。

下面我们通过一些例子加以说明:MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。

MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。

MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。

如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。

MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。

(2)以寄存器Rn为目的操作的指令MOV Rn,AMOV Rn,directMOV Rn,#data这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。

(3)以直接地址为目的操作数的指令MOV direct,A 例: MOV 20H,AMOV direct,Rn MOV 20H,R1MOV direct1,direct2 MOV 20H,30HMOV direct,@Ri MOV 20H,@R1MOV direct,#data MOV 20H,#34H(4)以间接地址为目的操作数的指令MOV @Ri,A 例:MOV @R0,AMOV @Ri,direct MOV @R1,20HMOV @Ri,#data MOV @R0,#34H(5)十六位数的传递指令MOV DPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。

其中高8位送入DPH,低8位送入DPL。

例:MOV DPTR,#1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。

8051单片机for循环的汇编指令

8051单片机for循环的汇编指令

8051单片机是一种十分经典的单片机产品,它的应用非常广泛。

在程序设计中,for循环是一种十分常见的结构,今天我们就来讨论一下在8051单片机中,如何使用汇编指令来实现for循环。

1. for循环的基本原理在C语言中,for循环的基本结构通常为:```cfor (初始化表达式; 条件表达式; 更新表达式) {循环体}```其中,初始化表达式用于初始化循环控制变量,条件表达式用于判断是否进入循环,更新表达式用于更新循环控制变量的值。

在8051单片机中,我们需要将这个逻辑转化为对应的汇编指令序列。

2. 实现for循环的汇编指令在8051单片机中,通常使用DJNZ(Decrement and Jump ifNot Zero)指令来实现for循环。

DJNZ指令有两个操作数,第一个操作数为目标位置区域,第二个操作数为循环计数器。

其基本格式为: ```DJNZ A, target```其中,A为循环计数器,target为跳转的目标位置区域。

该指令的作用是将A减一,如果A不为零,则跳转到目标位置区域执行,否则继续执行下一条指令。

3. for循环的汇编实现示例下面是一个简单的例子,演示了如何在8051单片机中使用汇编指令实现for循环:```assemblyMOV R0, #10 ; 初始化循环计数器,设置循环次数为10LOOP: ; 循环开始标签; 循环体; 在这里编写循环体的汇编指令; ...DJNZ R0, LOOP ; 循环计数器减一,如果不为零则跳转到LOOP标签```在这个示例中,使用MOV指令将立即数10加载到R0寄存器中,作为循环次数的初始值。

然后通过DJNZ指令进行循环,当R0不为零时跳转到LOOP标签执行循环体中的指令,直到循环结束。

4. 注意事项在使用汇编指令实现for循环时,需要注意一些细节:- 循环计数器的选择:在8051单片机中,有多个寄存器可以用作循环计数器,如R0、R1等。

需要根据具体的应用场景和程序需求来选择合适的寄存器。

8051的引脚定义及功能

8051的引脚定义及功能

8051的引脚定义及功能8051是一种经典的8位单片机,最早由Intel公司于1980年推出。

它具有许多功能丰富的引脚,用于连接外围设备和实现各种功能。

下面是8051的引脚定义及其功能的详细说明。

1.P0口:P0.0-P0.7为8位双向通用IO口,可连接外围设备或扩展芯片。

P0口可通过对相应位进行读写来实现读取和输出数据。

2.P1口:P1.0-P1.7为八位双向通用IO口,功能同P0口类似。

与P0不同的是,P1口还具有输入/输出控制功能。

P1口的输入/输出控制位可分别设定为输入模式或输出模式。

3.P2口:P2.0-P2.7为8位双向通用IO口,功能同P0口类似。

P2口还具有外部数据总线的能力,用于连接外部存储器或其他设备。

4.P3口:P3.0-P3.7为8位双向通用IO口,功能同P0口类似。

P3口还具有一些额外的功能引脚,如P3.0/RXD和P3.1/TXD用于串口通信,P3.2/INT0和P3.3/INT1用于外部中断。

5.RST引脚:复位引脚,用于将单片机复位到初始状态。

在复位时,所有寄存器和引脚都会被初始化。

6.ALE引脚:地址锁存使能引脚,用于在外部总线上锁存地址信号。

在每个时钟周期的开始,ALE引脚会产生一次正脉冲,用于锁存当前的地址。

7.PSEN引脚:程序存储器使能引脚,用于选择外部程序存储器或内部程序存储器。

当PSEN为低电平时,外部程序存储器被选中。

8.EA/VPP引脚:程序存储器地址扩展/编程电压引脚。

EA引脚用于控制程序存储器地址空间的扩展,VPP引脚用于编程时的供电电压。

9.XTAL1和XTAL2引脚:外部晶体振荡器引脚。

通过连接外部晶体和相关电路,可以实现单片机的时钟源。

10.VCC和GND引脚:供电引脚。

VCC引脚连接正电压,GND引脚连接地。

11.ADC引脚:模拟数字转换引脚,用于连接外部模拟输入设备。

8051的ADC引脚能够将模拟信号转换为数字信号,供单片机进行处理。

单片机8051指令

单片机8051指令

8051指令系统汇总表启动及中断入口地址0000HRESETINT0003H0000BHT/C0INT0013H1001BHT/C10023H串口1002BH仅8032(8052)有0033HPF1(电源故障)__DS80C320003BH串口2...0043HINT2INT004BH30053HINT4INT005BH50063HWDTI__看门狗进位辅助进位用户寄存器选择符号运算出错标志奇偶标志标志 0 0 0 1=奇0 1 1 0=偶1 0 21 1 3TMOD89HPCON87H位地址(符号地址)字节地址SFR寻址MSB位地址LSBSRF寄存器IE0及IE1在中断返回前应清除(CLR IE0(IE1))。

RAM 访问时间选择 WD1 WD0 复位时间0 0 0 2机器周期0 0 217+5120 0 1 3机器周期(缺省) 0 1 220+5120 1 0 4机器周期 1 0 223+5120 1 1 5机器周期 1 1 226+512 1 0 0 6机器周期 1 0 1 7机器周期 1 1 0 8机器周期 1 1 1 9机器周期扩展中断使能DOG INT5 INT4 INT3 INT2WDIF—看门狗中断标志WDRF—看门狗计数器复位标志EWT-—使能看门狗计数器复位RWT---复位看门狗计数器指令表中的定义如下:Ri=R0及R1;Rn=R0--R7;direct=内部RAM;data=立即数(单字节或双字节)。

51单片机汇编指令表

51单片机汇编指令表

以下是一些常见的51单片机(如8051系列)的汇编指令:
1. 数据传送指令:
- MOV:将一个数据或寄存器的值移动到另一个寄存器或存储器位置。

- MOVC:将数据从外部代码存储器复制到累加器或寄存器。

2. 算术运算指令:
- ADD:将累加器与另一个寄存器或存储器中的值相加。

- SUB:从累加器中减去另一个寄存器或存储器中的值。

- INC:将累加器或寄存器的值加1。

- DEC:将累加器或寄存器的值减1。

3. 逻辑运算指令:
- ANL:对累加器和另一个寄存器或存储器中的值进行逻辑与操作。

- ORL:对累加器和另一个寄存器或存储器中的值进行逻辑或操作。

- XRL:对累加器和另一个寄存器或存储器中的值进行逻辑异或操作。

- CPL:对累加器或寄存器中的值进行按位取反操作。

4. 条件分支指令:
- CJNE:比较两个值,并在不相等时跳转到指定的地址。

- DJNZ:递减累加器或寄存器,并在结果不为零时跳转到指定的地址。

5. 跳转指令:
- JMP:无条件跳转到指定的地址。

- SJMP:短跳转,跳转到相对于当前地址的指定偏移量。

- AJMP:绝对跳转,跳转到指定的地址。

- LCALL:长调用,将当前地址入栈并跳转到指定的子程序地址。

6. 位操作指令:
- SETB:将某个位设置为1。

- CLR:将某个位清零。

- JB:如果某个位为1,则跳转到指定地址。

- JNB:如果某个位为0,则跳转到指定地址。

第三章8051单片机指令系统

第三章8051单片机指令系统
• 布尔处理操作类指令又称位操作指令。
返回本节
3.1.2 指令格式
• 在MCS-51指令中,一般指令主要由操作码、操作数 组成。 指令格式为:操作码 [目的操作数][,源操作数]
• 指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,
数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地
返回本节
3.2.2 直接寻址
• 指令中直接给出操作数地址的寻址方式,能 进行直接寻址的存储空间有SFR寄存器和片 内RAM的128个单元。
例如:MOV A,P1; A←(P1) 把SFR中P1口的内容送A。
MOV A,30H ;A←(30H) 注意解释字段中加括号和不加括号的区别! • 30H为直接给出的内部RAM的地址。
返回本节
3.2.3 寄存器寻址
• 以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 例如:MOV A,R0;A ←(R0) CLR A ;A←0 INC DPTR;DPTR←DPTR+1 ADD A,R5;A←(A)+(R5)
返回本节
3.2.4 寄存器间接寻址
direct所指出的片内存储单元中 。
4.以间接地址为目的操作数
MOV @Ri,A ;(Ri) ← A MOV @Ri,direct ;(Ri) ←(direct) MOV @Ri,#data ;(Ri) ← #data 例如:设(30H)=6FH,R1=40H,
MOV @R1,30H, 结果30H单元中数据取出送入R1间接寻址的 40H单元,(40H)=6FH。
A←(A+PC) 这种寻址方式多用于查表操作。
程序存储器

8051指令总结

8051指令总结

8051指令总结指令总结共性:(1)立即数不能用作目的操作数。

(2)以累加器A为目的操作数的指令影响P标志位。

(3)Rn与Rn、Rn 与@Ri、@Ri与@Ri不能同时出现在指令的源、目的操作数中。

操作数的表现形式:内部RAM:A、Rn、@Ri、direct、#data外部RAM:@DPTR、@Ri外部ROM:@A+DPTR、@A+PC一、数据传送指令(5种/29条)对标志位的影响:除以累加器A为目的操作数的数据传送指令对P标志位有影响外,其余数据传送指令均不影响标志位。

格式:MOV , ;←(一)内部RAM数据传送指令1. 指令操作码:MOV2. 源、目的操作数均在片内RAM、SFR中。

3. 操作数A、Rn、@Ri、direct、#data之间,除Rn之间、Rn 与@Ri之间、@Ri之间不能直接传送外,其余均可直接传送。

4.源和目的操作数同为一种寻址方式只有直接地址direct 。

(二)外部RAM数据传送指令1. 指令操作码:MOVX2. 源、目的操作数均在片外RAM中,其中有一个必须是A。

3. 操作数为@DPTR、@Ri ,只能通过累加器A,采用寄存器间接寻址方式。

@Ri:片外RAM的低256个单元,@ DPTR:片外RAM的全部64KB的空间。

(三)程序存储器(ROM)数据传送指令1. 指令操作码:MOVC,主要用于查表。

2. 源操作数在片外ROM中,目的操作数在A中。

3. 操作数为@A+DPTR、@A+PC,只能读入累加器A中。

@A+DPTR :远程查表表可以放在64KB ROM的任何地址。

@A+PC:近程查表,表只能在查表指令后的256B ROM的地址空间中。

4. 偏移量A的计算方法:@A+DPTR:A=欲查数值距离表首地址的值@A+PC:A=表首地址-当前指令的PC值-1(四)数据交换指令1. 半字节交换SW AP A ;(A)3~0←→(A)7~4XCHD A , @Ri ;(A)3~0←→((Ri))3~02. 字节交换XCH A ,包括Rn、@Ri、direct 。

8051单片机指令和寻址方式

8051单片机指令和寻址方式

8051单⽚机指令和寻址⽅式80C51指令系统专⽤于80C51系列单⽚机,具有255种操作码(00H-FFH)除去A5H。

1. 寻址⽅式寻址⽅式就是指指令中给出寻找操作数或操作数所在地址的⽅法,执⾏任何指令都需要操作数。

1)⽴即寻址MOV DPTR,#1234H; ⽴即寻址是指在指令中直接给出操作数,出现在指令中的操作数称为⽴即数,因此被称为⽴即寻址。

2)直接寻址MOV A,3AH; 直接寻址是指在指令中直接给出操作数单元地址。

功能是将⽚内RAM的3AH单元内的数据传送内累加器A。

直接寻址⽅式只能给出8位地址,因此这种寻址⽅式的寻址范围只限于⽚内RAM。

具体:a.低128单元,在指令中直接以单元地址的形式给出;b.特殊功能寄存器,即可以以单元地址形式也可以以寄存器符号形式给出。

直接寻址是访问SFR寄存器的唯⼀⽅法。

3)寄存器寻址INC R0; 寄存器寻址是指指令中将指定的寄存器的内容作为操作数。

该语句实现R0寄存器的⾃加⼀操作。

寄存器寻址范围: a.四个寄存器组共32个通⽤寄存器; b.部分特殊功能寄存器,A、AB、DPTR。

4)寄存器间接寻址ANL A,@R1; 是指在指令中给出的寄存器内容是操作数的地址,从该地址取出的才是操作数。

@前缀是区分寄存器寻址和间接寻址的标志。

寻址范围:a.⽚内ram低128单元,只能采⽤R0或R1为间接寻址寄存器;b.⽚外的64K ram单元,使⽤DPTR作为间接寻址寄存器;c.⽚外RAM低256单元,除了⽤DPTR外还可以⽤R0或R1为间址寄存器,例如MOVX A,@R0d.堆栈区,堆栈操作指令(PUSH和POP)5)相对寻址是指在指令中给出的操作数为程序转移的偏移量。

如JC 80H;6)变址寻址是指以DPTR或PC为基址寄存器,累加器A作为变址寄存器,以两者的内容相加,形成16为的程序存储地址作为操作数地址。

如:MOVC A,@A+DPTR; 变址寻址只能对程序存储器寻址7)位寻址单⽚机有位操作功能,位寻址的范围包括:a)⽚内ram中的位寻址区。

8051_指令符号定义

8051_指令符号定义

■指令符號定義符號說明Rn 所選擇暫存器庫中之R0~R7,n=0~7。

direct 直接定址位址。

@Ri 間接定址位址,i=0或1。

#data 8位元資料常數。

#data16 16位元資料常數。

addr11 11位元位址常數,使用於ACALL及AJMP指令。

addr16 16位元位址常數,使用於LCALL及LJMP指令。

rel 8位元偏移位址常數,使用於SJMP及相對跳躍指令中。

bit 位元定址位址。

←以右方資料取代左方資料。

(X) 將X內容取出。

((X)) 以X內容為位址,以間接定址方式取出資料。

rrr n之2進制值。

如n=6,rrr=110。

符號定義■算數運算指令指令說明位元組機械週期ADD A,Rn 將暫存器內容加入A累加器 1 1 ADD A,direct 將直接位址內容加入A累加器 2 1 ADD A,@Ri 將間接位址內容加入A累加器 1 1 ADD A,#data 將8位元常數資料加入A累加器 2 1 ADDC A,Rn 將暫存器與進位C F加入A累加器 1 1 ADDC A,direct 直接位址內容與進位C F加入累加器 2 1 ADDC A,@Ri 間接位址內容與進位C F加入累加器 1 1 ADDC A,#data 將8位元常數資料與進位加入累加器 2 1 SUBB A,Rn A累加器內容減暫存器與借位C F 1 1 SUBB A,direct A累加器內容減直接位址內容與借位 2 1 SUBB A,@Ri A累加器內容減間接位址內容與借位 1 1 SUBB A,#data 累加器內容減8位元常數資料與借位 2 1 INC A A累加器內容加1 1 1 INC Rn 暫存器內容加1 1 1 INC direct 直接位址內容加1 2 1 INC @Ri 間接位址內容加1 1 1 INC DPTR 資料指標DPTR內容加1 1 2 DEC A A累加器內容減1 1 1 DEC Rn 暫存器內容減1 1 1 DEC direct 直接位址內容減1 2 1 DEC @Ri 間接位址內容減1 1 11 4 MUL AB A累加器乘以暫存器B,相乘結果之高8位元存入B,低8位元存入ADIV AB A累加器除以暫存器B,相除結果之商存1 4入A,餘數存入BDA A A累加器內容調整成10進制BCD數 1 1算數運算指令■ 邏輯運算指令指令說明位元組機械週期ANL A,Rn 暫存器AND至A累加器內 1 1 ANL A,direct 直接位址內容AND至A累加器內 2 1 ANL A,@Ri 間接位址內容AND至A累加器內 1 1 ANL A,#data 8位元資料AND至A累加器內 2 1 ANL direct,A A累加器內容AND至直接位址內 2 1 ANL direct,#data8位元資料AND至直接位址內 3 2 ORL A,Rn 暫存器OR至A累加器內 1 1 ORL A,direct 直接位址內容OR至A累加器內 2 1 ORL A,@Ri 間接位址內容OR至A累加器內 1 1 ORL A,#data 8位元資料OR至A累加器內 2 1 ORL direct,A A累加器內容OR至直接位址內 2 1 ORL direct,#data8位元資料OR至直接位址內 3 2 XRL A,Rn 暫存器XOR至A累加器內 1 1 XRL A,direct 直接位址內容XOR至A累加器內 2 1 XRL A,@Ri 間接位址內容XOR至A累加器內 1 1 XRL A,#data 8位元資料XOR至A累加器內 2 1 XRL direct,A A累加器內容XOR至直接位址內 2 1 XRL direct,#data8位元資料XOR至直接位址內 3 2 CLR A 清除A累加器 1 1 CPL A A累加器內容取補數 1 1 RL A A累加器內容向左旋轉1位元 1 1 RLC A A累加器與進位C F一起左旋1位元 1 1 RR A A累加器內容向右旋轉1位元 1 1 RRC A A累加器與進位C F一起右旋1位元 1 1 SWAP A A累加器的高低4位元互相交換 1 1邏輯運算指令■ 資料轉移指令指令說明位元組機械週期MOV A,Rn 將暫存器內容移入A累加器 1 1 MOV A,direct 將直接位址內容移入A累加器 2 1 MOV A,@Ri 暫存器間接位址內容移入A累加器 1 1 MOV A,#data 將8位元常數資料移入A累加器 2 1 MOV Rn,A 將A累加器內容移入暫存器 1 1 MOV Rn,direct 將直接位址內容移入暫存器 2 2 MOV Rn,#data 將8位元常數資料移入暫存器 2 1 MOV direct,A 將A累加器內容移入直接位址內 2 1 MOV direct,Rn 將暫存器內容移入直接位址內 2 2 MOV direct,direct 將直接位址內容移入直接位址內 3 2 MOV direct,@Ri 暫存器間接定址內容移入直接位址內 2 2 MOV direct,#data 將8位元常數資料移入直接位址內 3 2 MOV @Ri,A 將A累加器內容移入間接位址內 1 1 MOV @Ri,direct 將直接位址內容移入間接位址內 2 2 MOV @Ri,#data 將8位元常數資料移入間接位址內 2 1 MOV DPTR,#data16 將16位元常數資料移入資料指標內 3 2 MOVC A,@A+DPTR 將程式記憶體內容移入A累加器內 1 2 MOVC A,@A+PC 將程式記憶體內容移入A累加器內 1 2 MOVX A,@Ri 將外部資料記憶體內容移入A累加器 1 2 MOVX A,@DPTR 將外部資料記憶體內容移入A累加器 1 2 MOVX @Ri,A 將A累加器內容移入外部資料記憶體 1 2 MOVX @DPTR,A 將A累加器內容移入外部資料記憶體 1 2 PUSH direct 將直接位址內容存入堆疊內 2 2 POP direct 自堆疊頂端取出資料存入直接位址內 2 2 XCH A,Rn A累加器內容與暫存器內容互換 1 1 XCH A,direct A累加器內容與直接位址內容互換 2 1 XCH A,@Ri A累加器內容與間接位址內容互換 1 1 XCHD A,@Ri 累加器與間接位址低4位元內容互換 1 1資料轉移指令■布林運算指令指令說明位元組機械週期CLR C 清除進位旗標C F=0 1 1 CLR bit 清除位元位址內容 2 1 SETB C 設定進位旗標C F=1 1 1 SETB bit 設定位元位址內容 2 1 CPL C 將進位旗標C F內容取補數 1 1 CPL bit 將位元位址內容取補數 2 1 ANL C,bit 將位元位址內容AND至C F內 2 1 ANL C,/bit 將位元位址內容取補數AND至C F內 2 2 ORL C,bit 將位元位址內容OR至C F內 2 2 ORL C,/bit 將位元位址內容取補數OR至C F內 2 2 MOV C,bit 將位元位址內容移入進位旗標C F內 2 1 MOV bit,C 將進位旗標C F移入位元位址內 2 2 JC rel 若C F=1,則跳至相對位址rel 2 2 JNC rel 若C F=0,則跳至相對位址rel 2 2 JB bit,rel 若 (bit)=1,則跳至相對位址rel 3 2 JNB bit,rel 若 (bit)=0,則跳至相對位址rel 3 2 JBC bit,rel 若 (bit)=1,則跳至相對位址rel,同時清3 2除位元位址bit內容布林運算指令■程式分支指令指令說明位元組機械週期ACALL addrl1 副程式呼叫(可定址2KB範圍) 2 2 ACALL addrl6 副程式呼叫(可定址64KB範圍) 3 2 RET 自副程式返回主程式 1 2 RETI 自中斷副程式返回主程式 1 2 AJMP addrl1 絕對跳躍 (2KB範圍) 3 2 LJMP addrl6 遠程跳躍 (64KB範圍) 3 2 SJMP rel 相對跳躍 (-128byte ~ +127byte) 2 2 JMP @A+DPTR 間接跳躍 (64KB範圍) 1 2 JZ rel 若A=0,則跳至rel位址2 2範圍-128byte ~ +127byteJNZ rel 若A≠0,則跳至rel位址2 2範圍-128byte ~ +127byteCJNE A,direct,rel 若A累加器與直接位址內3 2容不相等,則跳至rel位址範圍-128byte ~ +127byteCJNE A,#data,rel 若A≠data,則跳至rel位址,範圍3 2-128byte ~ +127byteCJNE Rn,#data,rel 若暫存器內容≠data,則跳至rel位址3 2範圍-128byte ~ +127byteCJNE @Ri,#data,rel 若間接位址內容≠data,則跳至rel位3 2址,範圍-128byte ~ +127byteDJNZ Rn,rel 暫存器內容減1,若不等於0,則跳2 2至rel位址DJNZ direct,rel 直接位址內容減1,若不等於0,則3 2跳至rel位址NOP 無動作 1 1程式分支指令。

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

8051单片机指令定义详解
MOVC MOVX XRL NOP ORL POP RET RETI RL RLC RR RRC SETB SJMP SUBB SWAP XCH XCHD 把程序存储器中的代码字节数据 转送至累加器A 外部传送 字节变量的逻辑异或 空操作 两个字节变量的逻辑或运算 出栈 从子例程返回 中断返回 将累加器A中的数据位循环左移 带进位循环左移 将累加器饿数据位循环右移 带进位循环右移 置位 短跳转 带借位的减法 交换累加器的高低半字节 交换累加器和字节变量的内容 交换累加器和@Ri对应单元中的 数据的低4位
常温下内部R/C振荡器频率为:5.0V单片机为:11MHz~15.5MHz 3.3V单片机 为: 8MHz~12MHz 精度要求不高时,可选择使用内部时钟,但因为有制造误 差和温漂,以实际测试为准13.共4个16位定时器 两个与传统8051兼容的定时器/计 数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波 特率发生器 再加上2路PCA模块可再实现2个16位定时器14. 2个时钟输出口,可由 T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟15.外部中断I/O口7 路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块, Power Down模式可由外部中断唤醒, INT0/P3.2, INT1/P3.3, T0/P3.4, T1/P3.5, RxD/P3.0, CCP0/P1.3(也可通过寄存器设置到P4.2 ), CCP1/P1.4 (也可通过寄存器 设置到P4.3)16. PWM(2路)/PCA(可编程计数器阵列,2路) ---也可用来当2路 D/A使用 ---也可用来再实现2个定时器 ---也可用来再实现2个外部中断(上升 沿中断/下降沿中断均可分别或同时支持)17.A/D转换, 10位精度ADC,共8路,转换 速度可达250K/S(每秒钟25万次)18.通用全双工异步串行口(UART),由于STC12系 列是高速的8051,可再用定时器或PCA软件实现多串口19. STC12C5A60S2系列有 双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2), TxD2/P1.3(可通过寄存器设置到P4.3)20.工作温度范围:-40 - +85℃(工业级) / 0 75℃(商业级)21.封装:PDIP-40,LQFP-44,LQFP-48 I/O口不够时,可用2到3根普通 I/O口线外接 74HC164/165/595(均可级联)来扩展I/O口, 还可用A/D做按键扫描 来节省I/O口,或用双CPU,三线通信,还多了串口。
STC12C5A60S2单片机硬件系统框图
红外光电 传感器阵 列 数码管显 示电路 键盘电路
系统电源
蜂鸣器电 路 STC125A60S 2单片机 电机控制 电路 速度检测 电路
程序下载 接口
STC12C5A60S2系统内部结构框图
AUX-RAM 1024B
RAM地址 寄存器 RAM 256B
Байду номын сангаас
程序存储器 B寄存 器 ACC TMP2 ALU
STC12C5A60S2系列1T单片机简介 STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的 单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传 统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位 A/D转换(250K/S),针对电机控制,强干扰场合。1.增强型8051 CPU,1T,单时钟 /机器周期,指令代码完全兼容传统80512.工作电压:STC12C5A60S2系列工作电 压:5.5V- 3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V- 2.2V(3V单 片机)3.工作频率范围:0 - 35MHz,相当于普通8051的 0~420MHz4.用户应用 程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节......5.片上集成 1280字节RAM6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通 8051传统I/O口) 可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入 /高阻,开漏 每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过 55mA7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专 用仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片8.有 EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)9. 看门狗10.内部集成 MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)11.外 部掉电检测电路:在P4.6口有一个低压门槛比较器 5V单片机为1.32V,误差为 +/-5%,3.3V单片机为1.30V,误差为+/-3%12.时钟源:外部高精度晶体/时钟,内 部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使 用内部R/C振荡器还是外部晶体/时钟
绝对调用 加法 带进位的加法 绝对跳转 对字节变量进行逻辑运算 若两个操作数不相等则转移 清除累加器 在加法运算之后,对累加器A进行 十进制调整 DEC 把BYTE所代表的操作数减1 DIV 除法 DJNZ 减1,若非0则跳转 INC 加1 JB 若位数据位1则跳转 JC 若进位标志为1,则跳转 JMP 间接跳转 JNB 如果bit所代表的位不为1则跳转 JNC 若进位标志非1则跳转 JNZ 如果累加器的类容非0则跳转 JZ 如果累加器的类容为0则跳转 LCALL 长调用 LJMP 长跳转 MOV 传送字节变量 MUL 乘法 ACALL ADD ADDC AJMP ANL CJNE CLR DA
PSW
堆栈指针
相关文档
最新文档