8051/8751的最小系统
存储器概述
存储器分类
ROM
ROM是只读存储器, 具有非易失性,即掉电后其上的信息不消失,常常用于存储程序和固定的数据表格
RAM
RAM是随机读写存储器,信息由CPU通过MOVX指令读写。 RAM具有易失性,即掉电后其上的信息消失,故用于存储临时性数据
MCS51单片机存储器扩展
线选法
直接以系统的地址位作为存储芯片的片选信号
优缺点:简单明了,且不需增加电路。但存储空间的使用是断续的,不能有效地利用空间,扩充容量受限,只适用于小规模系统的存储器扩展译码法
对系统的高位地址进行译码,以其译码输出作为片选信号。高效率地利用存储空间,适用于大容量多芯片扩展
常用的译码芯片有:74LS139(双2-4译码器)、74LS138(3-8译码器)和74LS154(4-16译码器)等
MCS51指令系统
符号说明
寻址方式
直接寻址
指令码中含有操作数的地址, 根据操作数的地址直接可以找到操作数
- MOV A, 32H ;(0E532H)
- 在MCS -51 单片机指令系统中, 直接寻址方式中可以访问 2种存储器空间:
- RAM的低 128 个字节单元(00H~7FH)
- 特殊功能寄存器。 特殊功能寄存器只能用直接寻址方式进行访问
立即寻址
指令码中含有操作数
MOV A, #05H ;(7405H)
寄存器寻址
指令码中含有操作数的寄存器号,MCS-51根据该寄存器号可以找到操作数
MOV A, R0 ;(0E8H)
寄存器间接寻址
指令码中含有操作数地址所在的寄存器号。MCS-51根据指令码中的寄存器号便可以找到操作数地址,再根据操作数地址便可以找到操作数
MOV R0, #3AH ;(783AH)
MOV A, @R0 ;(0E6H)
- 寄存器间接寻址只能使用寄存器R0、R1 作为地址指针,寻址内部RAM区的数据;当访问外部RAM时, 可使用R0、 R1及DPTR作为地址指针
- 寄存器间接寻址符号为“@”
- 寄存器间址不可以访问SFR
变址寻址
- 指令码内隐含基地址寄存器DPTR/PC的寄存器号;
- 基地址寄存器DPTR/PC内含有基地址,累加器A中含有地址偏移量rel;
- 操作数地址=基地址+地址偏移量
- 这种寻址方式用于访问程序存储器中的数据表格
MOVC A, @A+DPTR ;(93H )
MOVC A, @A+PC ;(83H)
相对寻址
相对寻址不是要找操作数,是寻找将要执行的指令所在的目标地址。MCS-51中的间接转移指令采用这种寻址方式,是以PC的内容为基本地址, 加上指令中给定的偏移量作为转移地址。指令中给出的偏移量是一个 8 位带符号的常数, 其范围为-128~+127
SJMP 80H ;(8080H)
位寻址
指令码中含有位地址,操作数是八位二进制数中的某位
SETB 00H ;(D200H)
- 位寻址指令中位地址的表示方法
- 直接位地址: SETB 07H
- 采用第几单元第几位: SETB 20H.7
- 寄存器名+位数: MOV ACC.7, C
- 用伪指令定义
寻址方式对比
习题
(a) immediate (g) direct addressing
(b) direct addressing (h) direct addressing
(c) direct addressing (i) register indirect
(d) immediate (j) direct addressing
(e) direct addressing (k) register indirect
(f) immediate
数据传送类指令
内部数据传送指令速记图
数据传送类指令可以实现片内RAM之间;A与片外RAM及ROM之间的数据传送,只要不对PSW进行直接操作,不影响标志位
立即型数据传送指令
直接型数据传送指令
寄存器寻址型数据传送指令类
寄存器间接寻址型数据传送指令类
习题
(a) 立即数大于255,超界!属于逻辑错误;(b)OK;(c)OK;(d)原因同(a);(e)OK
(f)OK。当十六进制数以字母开头时,前面加0,否则程序编译时提示“句法错误”。
(g)非法的工作寄存器,合法的只有R0~R7
小结
外部ROM/RAM数据传送指令
DPTR赋值指令
MOV DPTR, #2000H
对外部RAM的数据传送指令
- 片外数据存储器不能直接寻址
对外部ROM的数据传送指令
- 作用:又称查表指令,可直接求取常数表中的函数值或存放系统的不变参数
- DPTR为基址寄存器: 查表范围为 64KB 程序存储器任意空间,称为远程查表指令
- PC为基址寄存器: 常数表只能在查表指令后256B范围内。(PC内容为下一条指令的起始地址。)
MOVX和MOVC区别
- MOVC是与ROM之间的数据传送,而MOVX是与外部RAM数据传送;
- MOV就是移动的意思,C就是Code,代码的意思,X就是eXternal,外部的意思 MOVC就是读代码存储器,MOVX就是读写外部存储器,即外部RAM ;
- MOVC是读取ROM中的数据,只能读不能写(一般来说主要是用来读取常量或常量表) MOVX是读写外部扩展的RAM和扩展的IO口,可以读也可以写
数据交换指令速记
累加器高低4位交换指令
XCH A, Rn
XCH A, Direct
XCH A, @Ri
SWAP A
半字节交换指令
XCHD A, @Ri
把累加器A中低4位和Ri中地址所指单元中低4位交换
位操作类指令速记图
- 除位传送类指令外,数据传送类不影响进位标志Cy和AC,但是会影响奇偶标志P
算术运算指令
加法指令
不带进位位的加法指令
ADD A , #data8\direct@Ri\Rn
带进位位的加法指令
ADDC A , #data8\direct@Ri\Rn
指令中的所加的Cy为指令执行前原有的Cy的内容,执行后所形成新的Cy保留在PSW中
加1指令
INC A\direct@Ri\Rn\DPTR
- 不论两操作数是否带符号,机器均按带符号数运算
减法指令
减法指令
SUBB A , #data8\direct@Ri\Rn
所有减法指令都是带减进位位的
减1指令
DEC A\direct@Ri\Rn
乘法指令
MUL AB ;AXB=BA
除法指令
逻辑及移位类指令
控制转移类指令
条件转移指令
调用与返回指令
子程序返回指令
RET
用途: 子程序末尾、返回主程
中断返回指令
RETI
用途:中断程序尾、返回断点
网友评论