8051单片机基础知识 联系客服

发布时间 : 星期五 文章8051单片机基础知识更新完毕开始阅读e3d59ecd9ec3d5bbfd0a74de

S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 ALE PSEN RD / WR P2 PCH输出 DPH输出或P2输出 PCH输入 PCL 地址 数据 PCL 输出 输出 输入 输出 指令输入 地址输出有效 指令输入 PCL输出有效 PCL输出有效

外部数据存贮器的取指和读/写周期时序 ③ 扩展方法:

外部数据存贮器扩展时,地址总线和数据总线的连接方法同ROM的扩展相同, 控制信号中主要是读信号RD和写信号WR有所不同。8031的RD信号与外部RAM 的输出允许OE相连,8031的WR信号与外部RAM的写信号WR相连,外部RAM 的片选信号与外部I/O接口的片选信号统一译码产生。 十一.8051的指令系统 1. 寻址方式:就是根据指令中给出的地址寻找真实操作数地址的方式。8051单片机的 寻址方式有七种:

① 寄存器寻址:MOV A,R0 ;A←(R0)

8051可用寄存器寻址的空间是:R0?R7,ACC,CY(位),DPTR,AB ② 直接寻址: MOV A,4FH ;A←(4FH)

可用直接寻址的空间是:内部RAM第128字节(包括其中的可位寻址区)、 特殊功能寄存器。

③ 寄存器间接寻址:MOV A,@R1 ;A←((R1))

8051中可以用R0或R1间接寻址片内或片外RAM的256字节范围,可以 用DPTR或PC间接寻址64K字节外部RAM或ROM。 ④ 立即寻址:MOV A,#6FH ;A←6FH ⑤ 变址寻址:MOV A,@A+DPTR ;A←((R1)+(DPTR))

不论用DPTR或PC作为基址指针,变址寻址方式都只适用与8051的程序 存贮器,通常用于读取数据表。

⑥ 相对寻址:SJMP rel ;PC←(PC)+2+rel ⑦ 位寻址:SETB bit ;(bit)←1

9

8051可用于位寻址的空间是:内部RAM的可位寻址区和SFR中的字节地址 可以被8整除(即地址以“0”或“8”结尾)的寄存器所占空间。 2. MCS-51指令系统

(一)传送、交换、栈出入指令 助 记 符 说 明 字节数 振荡器周期 1 12 MOV A,Rn 寄存器传送到累加器 2 12 MOV A,direct 直接字节传送到累加器 1 12 MOV A,@Ri 间接RAM传送到累加器 2 12 MOV A,#data 立即数传送到累加器 1 12 MOV Rn,A 累加器传送到寄存器 2 24 MOV Rn,direct 直接字节传送到寄存器 2 12 MOV Rn,#data 立即数传送到寄存器 2 12 MOV direct,A 累加器传送到直接字节 2 24 MOV direct,Rn 寄存器传送到直接字节 3 24 MOV direct,direct 直接字节传送到直接字节 2 24 MOV direct,@Ri 间接RAM传送到直接字节 3 24 MOV direct,#data 立即数传送到直接字节 1 12 MOV @Ri,A 累加器传送到间接RAM 2 24 MOV @Ri,direct 直接字节传送到间接RAM 2 12 MOV @Ri,#data 立即数传送到间接RAM 3 24 MOV DPTR,#data16 16位常数加载到数据指针 1 24 MOVC A,@A+DPTR 代码字节传送到累加器 1 24 MOVC A,@A+PC 代码字节传送到累加器 1 24 MOVX A,@Ri 外部RAM(8位地址)传送到ACC 1 24 MOVX A,@DPTR 外部RAM(16位地址)传送到ACC 1 24 MOVX @Ri,A ACC传送到外部RAM(8位地址) 1 24 MOVX @DPTR,A ACC传送到外部RAM(16位地址) PUSH direct 2 24 直接字节压到堆栈 POP direct 2 24 从栈中弹出直接字节 1 12 XCH A,Rn 寄存器和累加器交换 2 12 XCH A,direct 直接字节和累加器交换 1 12 XCH A,@Ri 间接RAM和累加器交换 1 12 XCHD A,@Ri 间接RAM和累加器交换低4位 SWAP A 1 12 累加器内部高、低四位交换

10

(二)算术、逻辑运算指令 助记符 说 明 ADD A,Rn 寄存器加到累加器 ADD A,direct 直接字节加到累加器 ADD A,@Ri 间接RAM加到累加器 ADD A,#data 立即数加到累计器 ADDC A,Rn 寄存器加到累加器(带进位) ADDC A,direct 直接字节加到累加器(带进位) ADDC A,@Ri 间接RAM加到累加器(带进位) ADDC A,#data 立即数加到累加器(带进位) SUBB A,Rn ACC减去寄存器(带借位) SUBB A,direct ACC减去直接字节(带借位) SUBB A,@Ri ACC减去间接RAM(带借位) SUBB A,#data ACC减去立即数(带借位) INC A 累加器加1 INC Rn 寄存器加1 INC direct 直接字节加1 INC @Ri 间接RAM加1 DEC A 累加器减1 DEC Rn 寄存器减1 DEC direct 直接字节减1 DEC @Ri 间接RAM 减1 INC DPTR 数据指针加1 MUL AB A和B寄存器相乘 DIV AB A寄存器除以B寄存器 DAA 累加器十进制调整 ANL A,Rn 寄存器“与”到累加器 ANL A,direct 直接字节“与”到累加器 ANL A,@Ri 间接RAM“与”到累加器 ANL A,#data 立即数“与”到累加器 ANL direct,A 累加器“与”到直接字节 ANL direct,#data 立即数“与”到直接字节 ORL A,Rn 寄存器“或”到累加器 ORL A,direct 直接字节“或”到累加器 ORL A,@Ri 间接RAM“或”到累加器 ORL A,#data 立即数“或”到累加器 ORL direct,A 累加器“或”到直接字节 ORL direct,#data 立即数“或”到直接字节 XRL A,Rn 寄存器“异或”到累加器 XRL A,direct 直接字节“异或”到累加器 XRL A,@Ri 间接RAM“异或”到累加器 XRL A,#data 立即数“异或”到累加器 XRL direct,A 累加器“异或”到直接字节 XRL direct,#data 立即数“异或”到直接字节 CLR A 累加器清零 CPL A 累加器取反 RL A 累加器循环左移 RLC A 经过进位位的累计器循环左移 RR A 累加器循环右移 RRC A 经过进位位的累加器循环右移 11 字节数 1 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 1 2 1 1 1 1 1 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 振荡器周期 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 24 48 48 12 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 12 (三)转移指令

助记符 ACALL addr11 LCALL add16 RET RETI AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE @Ri ,#data,rel DJNZ Rn,rel DJNZ direct,rel NOP 助记符 CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV bit,C JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel

说 明 绝对调用子程序 长调用子程序 从子程序返回 从中断返回 绝对转移 长转移 短转移(相对转移) 相对DPTR的间接转移 累加器为零则转移 累加器为非零则转移 比较直接字节和ACC,不相等则转移 比较立即数和ACC,不相等则转移 比较立即数和寄存器,不相等则转移 比较立即数和间接RAM,不相等则转移 寄存器减1,不为零则转移 直接字节减1,不为零则转移 空操作 (四)布尔指令集 说 明 清进位 清直接寻址位 进位位置位 直接寻址位置位 进位位取反 直接寻址位取反 直接寻址位“与”到进位位 直接寻址位的反码“与”到进位位 直接寻址位“或”到进位位 直接寻址位的反码“或”到进位位 直接寻址位传送到进位位 进位位传送到直接寻址位 如果进位为1则转移 如果进位为零则转移 如果直接寻址位为1则转移 如果直接寻址位为零则转移 如果直接寻址位为1则转移并清除该位 字节数 2 3 1 1 2 3 2 1 2 2 3 3 3 3 3 3 1 字节数 1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 3 振荡器周期 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 24 12 振荡器周期 12 12 12 12 12 12 24 24 24 24 12 24 24 24 24 24 24 12