|
发表于 2023-10-10 19:44:49
|
显示全部楼层
一、8051引脚
RST=RESET (9)//复位,重启
P3:
RXD=Received eXchange Data (10,p3.0)//接收串行数据
TXD=Transmit eXchange Data (11,p3.1)//发送串行数据
INT0=interrupt 0 (12,p3.2)//中断0
INT1=interrupt 1 (13,p3.3)//中断1
T0=timer 0 (14,p3.4)//定时器0
T1=timer 1 (15,p3.5)//定时器1
RD=ReaD (16,p3.6)//外部数据存储器(RAM)的读信号
WR=WRite (17,p3.7)//外部数据存储器(RAM)的写信号
XTAL2,XTAL1=External Crystal Oscillator (18,19) //外部晶体振荡器
PSEN=Program Store Enable (29) //程序存储器(ROM)使能
ALE=Address Latch Enable (30) //地址锁存
EA=External Address Enable (31) //外部程序存储器(ROM)地址允许
二、数据传送类指令(7种助记符)
MOV (Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;
MOVC(Move Code)读取程序存储器数据表格的数据传送;
MOVX (Move External RAM) 对外部RAM的数据传送;
XCH (Exchange) 字节交换;
XCHD (Exchange low-order Digit) 低半字节交换;
PUSH (Push onto Stack) 入栈;
POP (Pop from Stack) 出栈;
三、算术运算类指令(8种助记符)
ADD (Addition) 加法;
ADDC (Add with Carry) 带进位加法;
SUBB (Subtract with Borrow) 带借位减法;
DA (Decimal Adjust) 十进制调整;
INC (Increment) 加1;
DEC (Decrement) 减1;
MUL (Multiplication、Multiply) 乘法;
DIV(Division、Divide) 除法;
四、逻辑运算类指令(10种助记符)
ANL (AND Logic) 逻辑与;
ORL (OR Logic) 逻辑或;
XRL (Exclusive-OR Logic) 逻辑异或;
CLR (Clear) 清零;
CPL (Complement) 取反;
RL (Rotate left) 循环左移;
RLC (Rotate Left throught the Carry flag) 带进位循环左移;
RR (Rotate Right) 循环右移;
RRC (Rotate Right throught the Carry flag) 带进位循环右移;
SWAP (Swap) 低4位与高4位交换;
五、控制转移类指令(17种助记符)
ACALL(Absolute subroutine Call)子程序绝对调用;
LCALL(Long subroutine Call)子程序长调用;
RET (Return from subroutine)子程序返回;
RETI (Return from Interruption)中断返回;
SJMP (Short Jump)短转移;
AJMP (Absolute Jump)绝对转移;
LJMP (Long Jump)长转移;
CJNE (Compare Jump if Not Equal)比较不相等则转移;
DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;
JZ (Jump if Zero)结果为0则转移;
JNZ (Jump if Not Zero) 结果不为0则转移;
JC (Jump if the Carry flag is set)有进位则转移;
JNC (Jump if Not Carry)无进位则转移;
JB (Jump if the Bit is set)位为1则转移;
JNB (Jump if the Bit is Not set) 位为0则转移;
JBC (Jump if the Bit is set and Clear the bit) 位为1则转移,并清该位;
NOP (No Operation) 空操作;
六、位操作指令(1种助记符)
CLR (Clear))位清零;
SETB (Set Bit)位置1 。
1.ORG (Origin) 16位地址 ;
此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。
2.[标号:] DB(Define Byte) 字节数据项表;
将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG: DB 88H,100,“7”,“C”
3.[标号:]DW (Define Word) 双字节数据项表;
定义16位地址表,16地址按低位地址存低位字节,高位地址存高位字节。
例如:TAB: DW 1234H,7BH
4.名字 EQU (Equal) 表达式 或名字=表达式;
用与给一个表达式赋值或给字符串起名字。之后名字可用做程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。
例如:COUNT=10 或 SPACE EQU 10H
5.名字 DATA (Data)直接字节地址;
给8位内部RAM单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。例如:ERROR DATA 80H
6.名字 XDATA (External Data)直接字节地址;
给8位外部RAM起个名字,名字规定同DATA伪指令。
例如:IO_PORT XDATA 0CF04H
7.名字 BIT (Bit) 位指令;
给一可位寻址的位单元起个名字,规定同DATA伪指令。
例如:SWT BIT 30H
8.[标号:] END(End);
指出源程序到此结束,其后的程序语句不予理睬。源程序只在主程序最后使用一个END。
七、数据传送指令(30条)
MOV A,Rn 寄存器送A
MOV A,direct 直接字节送A
MOV A,@Ri 间接RAM 送A
MOV A,#data 立即数送A
MOV Rn,A A 送寄存器
MOV Rn,direct 直接数送寄存器
MOV Rn,#data 立即数送寄存器
MOV direct,A A 送直接字节
MOV direct,Rn 寄存器送直接字节
MOV direct,direct 直接字节送直接字节
MOV direct,@Ri 间接 Rn 送直接字节
MOV drect,#data 立即数送直接字节
MOV @Ri,A A 送间接 Rn
MOV @Ri,direct 直接字节送间接Rn
MOV @Ri,#data 立即数送间接 Rn
MOV DPTR,#data16 16 位常数送数据指针
MOV C,bit 直接位送进位位
MOV bit,C 进位位送直接位
MOVC A,@A+DPTR A+DPTR 寻址程序存贮字节送A
MOVC A,@A+PC A+PC寻址程序存贮字节送A
MOVX A,@Ri 外部数据送A(8 位地)
MOVX A,@DPTR 外部数据送A(16 位地址)
MOVX @Ri,A A 送外部数据(8 位地址)
MOVX @DPTR,A A 送外部数据(16 位地址) 1
PUSH direct 直接字节进栈道,SP 加1
POP direct 直接字节出栈,SP 减1
XCH A,Rn 寄存器与 A 交换
XCH A,direct 直接字节与A 交换
XCH A,@Ri 间接Rn 与A 交换
XCHD A,@Ri 间接Rn 与A 低半字节交换
八、逻辑运算指令(35条)
ANL A,Rn 寄存器与到A
ANL A,direct 直接字节与到A
ANL A,@Ri 间接RAM与到A
ANL A,#data 立即数与到A
ANL direct,A A与到直接字节
ANL direct,#data 立即数与到直接字节
ANL C,bit 直接位与到进位位
ANL C,/bit 直接位的反码与到进位位
ORL A,Rn 寄存器或到A
ORL A,direct 直接字节或到A
ORL A,@Ri 间接RAM或到A
ORL A,#data 立即数或到A
ORL direct,A A或到直接字节
ORL direct,#data 立即数或到直接字节
ORL C,bit 直接位或到进位位
ORL C,/bit 直接位的反码或到进位位
XRL A,Rn 寄存器异或到A
XRL A,direct 直接字节异或到A
XRL A,@Ri 间接RAM异或到A
XRL A,#data 立即数异或到A
XRL direct,A A异或到直接字节
XRL direct,#data 立即数异或到直接字节
SETB C 进位位置
SETB bit 直接位置
CLR A A清0
CLR C 进位位清0
CLR bit 直接位清0
CPL A A求反码
CPL C 进位位取反
CPL bit 直接位取反
RL A A循环左移一位
RLC A A 带进位左移一位
RR A A右移一位
RRC A A 带进位右移一位
SWAP A A 半字节交换
九、算术运算指令(24条)
ADD A,Rn 寄存器加到A
ADD A,direct 直接字节加到A
ADD A,@Ri 间接RAM 加到A
ADD A,#data 立即数加到A
ADDC A,Rn 寄存器带进位加到 A
ADDC A,direct 直接字节带进位加到A
ADDC A,@Ri 间接RAM 带进位加到A
ADDC A,#data 立即数带进位加到 A
SUBB A,Rn 从A 中减去寄存器和进位
SUBB A,direct 从A 中减去直接字节和进位
SUBB A,@Ri 从A 中减去间接RAM 和进位
SUBB A,#data 从A 中减去立即数和进位
INC A A加1
INC Rn 寄存器加1
INC direct 直接字节加1
INC @Ri 间接RAM 加1
INC DPTR 数据指针加1
DEC A A减1
DEC Rn 寄存器减 1
DEC direct 直接字节减1
DEC @Ri 间接RAM 减1
MUL AB A乘B
DIV AB A被B除
DA A A十进制调整
十、转移指令(22条)
AJMP addr 11 绝对转移
LJMP addr 16 长转移
SJMP rel 短转移 2 2 80
JMP @A+DPTR 相对于DPTR 间接转移
JZ rel 若A=0 则转移
JNZ rel 若A≠0 则转移
JC rel 若C=1 则转移
JNC rel 若C≠1 则转移
JB bit,rel 若直接位=1 则转移
JNB bit,rel 若直接位=0 则转移
JBC bit,rel 若直接位=1 则转移且清除
CJNE A,direct,rel 直接数与 A 比较,不等转移
CJNE A,#data,rel 立即数与 A 比较,不等转移
CJNE @Ri,#data,rel 立即数与间接RAM比较,不等转移
CJNE Rn,#data,rel 立即数与寄存器比较不等转移
DJNZ Rn,rel 寄存器减 1 不为0 转移
DJNZ direct,rel 直接字节减1 不为 0 转移
ACALL addr 11 绝对子程序调用
LCALL addr 16 子程序调用
RET 子程序调用返回
RETI 中断程序调用返回
NOP 空操作
十一、寄存器部分
SFR= special function register //特殊功能寄存器(片内RAM 80H~FFH)
ACC= accumulate //累加器
PSW= programmer status word //程序状态字
SP= stack point //堆栈指针
DPL,DPH=DPTR(data point register //数据指针寄存器)的低8位和高8位
IE =interrupt enable // 中断使能
IP= interrupt priority //中断优先级
PCON =power control //电源控制
SCON= serial control //串行口控制
SBUF= serial buffer //串行数据缓冲
TCON =timer control //定时器控制
TMOD= timer mode //定时器方式
PSW:
CY= carry (psw.7) //进位(标志)
AC= auxiliary carry (psw.6) //辅助进位
F0= (psw.5) //用户自定义标志位
RS1,RS0=register selection (psw.4,psw.3)//工作寄存器组选择位
OV=overflow (psw.2) //溢出
P=parity (psw.0) //奇偶校验位
IE:
EA=Enable All Interrupt //CPU开/关中断控制位
ET=Enable Timer //定时器溢出中断允许位
ES=Enable Serial Port //串行口中断允许位
EX=Enable External //外部中断的中断允许位
IP:
PS=Priority Serial //串口优先级
PT=Priority Timer //定时器优先级
PX=Priority External //外部中断优先级
SCON:
RI=Receive Interrupt //串行口接收中断请求标志位
TI=Transmit Interrupt //串行口发送中断请求标志位
REN=receive enable //串行口接收允许控制位
SM=serial mode //串行口工作方式选择位
TCON:
TF=Timer Overflow Flag //定时器溢出中断请求标志
TR=Timer Run //定时器启动控制位
IE=Interrupt Edge //外部中断请求标志位
IT=Interrupt Type //外部中断触发方式选择位
十二、其它
PC = program counter //程序计数器
OE=output enable //输出使能
MSB = most significant bit //最高有效位
LSB = last significant bit //最低有效位
ORG = originally //起始来源
DB = define byte //字节定义
EQU = equal //等于
DW = define word //字定义
CLKOUT=Clock out //时钟输出
BUSWDITH //总线宽度
Vref=voltage reference //参考电压(带ADC的单片机中有的)
HSO=High Speed Output //高速输出
HSI=High Speed Input //高速输入
INST=Instruction //指令
NMI=No Mask Interrupt (Input) //不可屏蔽的中断请求(输入)
BHE=Bank High Enable //存储器的高位允许,如在80286系统中RAM的组
织为16位的,分为高8位和低8位数据,分别
的控制信号为BHE和BLE |
|