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

堆栈指针
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指令集資料轉移指令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单⽚机常⽤指令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单片机的指令系统

说明 传送操作 交换操作 堆栈操作
目的操作数寻址方式:
直接寻址、寄存器寻址、 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为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单片机的指令列表

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单片机原理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单片机指令表助记符指令说明字节数周期数(数据传递类指令)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单片机指令系统在单片机的世界里,指令系统就如同指挥官手中的指令手册,指引着单片机完成各种复杂的任务。
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,则程序跳转到指定的地址。
位操作指令则专注于对单个位的操作,就像是在精细地调整战斗中的某个关键环节。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
堆栈指针