找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1349|回复: 1
打印 上一主题 下一主题
收起左侧

MCS-51单片机 原理 整理

[复制链接]
跳转到指定楼层
楼主
ID:565582 发表于 2019-6-18 22:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
《MCS-51单片机原理、系统设计与应用_12015401.pdf》
MCS-51 Intel 公司 的 8051 内核技术
MSC-51单片机(有史以来,最简单易懂教程).pdf
《新编MCS-51单片机应用设计.pdf》 ---- good

2 MCS-51 PC 指针

PC 是 单片机 CPU 内部的一个寄存器
总是指向程序存储器,存放下一条要执行指令的地址。
复位之后的的值为 0x0000H

CPU内部的寄存器包括:

寄存器        复位值
PC        0000H
Acc        00H
B        00H
PSW        00H
SP        07H
DPTR        0000H
MCS-51 复位之后,(PC)= 0000H,
系统程序从0000H单元开始,0000H是复位入口地址,是系统程序的启动地址。
一般在该单元存放一条绝对跳转指令,从跳转地址开始存放初始化程序和主程序。

2 MCS-52 内部RAM划分

00H — 7FH ( 0 —127 )单元组成的128字节的RAM块

80H ---- FFH ( 128 — 255 )单元组成的 128字节的RAM块 (MCS-51中没有,这一个部分)

80H ---- FFH ( 128 — 255 )的 SFR 特殊功能寄存器块

在MCS-52 中,高128字节的RAM 和SFR块地址重叠,但是物理上是两个不同的地方。
访问的时候,根据指令的不同,来确定是访问RAM,还是方位SFR。
访问高80H ---- FFH RAM是 间接寻址方式。
访问SFR 是 直接寻址方式。
低128字节的RAM 间接 直接都可以。

SFR 这128个字节中仅仅有26个字节是有意义的。

3 MSC-51 低128字节 RAM划分 00H – 7FH



CPU寄存器 SP 指针 复位之后 指向 RAM地址 07H,
如果使用PUSH指令 ,会将数据存放在 RAM地址07H,08H,依次往上。

RAM 地址的 00H — 07H 是第一组 R0 — R7
RAM 地址的 08H — 0FH 是第二组 R0 — R7
RAM 地址的 10H — 17H 是第三组 R0 — R7
RAM 地址的 18H — 1FH 是第四组 R0 — R7
R0—R7 不是 和 PC SP 一样的 CPU内部的寄存器。

R0 – R7 叫做 工作寄存器区 位于 RAM

SFR 应该是位于CPU内部— 是特殊功能寄存器。

4 堆栈

用户RAM区,地址为30H — 7FH,这些地址只能按字节寻址。
复位的时候,SP指向07H单元,当用户使用堆栈的时候,应该首先设置堆栈,用户堆栈一般设置在30H—7FH范围之内。
SP 设置的越大,堆栈越浅。

堆栈 是在片内RAM中开辟出来的一个区域,其主要是为子程序调用和中断操作而设立的。
具体功能是:保护断点和保护现场。
无论是子程序调用,还是中断操作,都需要返回主程序。

堆栈指针SP 是一个8位的SFR,特殊功能寄存器,SP的内容指示堆栈顶部在内部RAM块中的位置。
它可以指向内部RAM 00H— 7FH的任何单元。
实际使用的时候,最好是SP的值,设置为1FH,或者更大的值。

堆栈的操作,也就是对SP指针的操作,是通过指令集中的PUSH和POP指令实现的。
操作两种:一种是数据压入(PUSH)堆栈,
另外一种是数据弹出(POP)堆栈。

堆栈的栈顶由SP自动管理。每次进入压入或者弹出操作以后,堆栈指针SP自动调整以保持指示栈顶位置。
当一个字节数据压入堆栈后,SP自动加1.
一个字节数据弹出堆栈之后,SP自动减1
MCS-51单片机的这种堆栈结构是属于向上生长型的堆栈。

5 堆栈操作指令

MCS-51 单片机内部 RAM,后进先出(Last In First Out),
进栈指令
Push direct
功能是,首先将SP 加1 ,然后将direct指向的地址的内容,放到SP指向的RAM单元中。
出栈指令
POP direct
栈指向的RAM中的内容放入 direct指向的地址中,
SP 减小1.

6 RET 子程序的放回指令

RET
指向指令的时候,
SP ---->PCH 然后 SP - 1 -----> SP
SP ---->PCL 然后 SP - 1 -----> SP
功能是从堆栈中退出PC的高8位和低8位字节,
把栈指针减小2,从PC值开始继续执行程序。不影响标志。

6 RETI 子程序的放回指令

和RET类似,本指令清除了中断响应时候,单片机内部的中断优先级状态。

7 长调用





8 中断

中断源向CPU提出处理请求。
CPU主动中止执行的程序,转去执行中断服务程序,
硬件自动将中断点的地址(16位程序计数器PC的值)压入堆栈中。

中断响应的主要内容是由硬件自动生成一条长调用指令LCALL addr16。
addr16 是程序存储区中的中断向量地址。
例如 对于 外部中断1的响应,产生的长调用指令是,
LCALL 0013H。

生成LCALL 指令后,由CPU直接执行该指令。
首先是将PC的内容压入堆栈保护断点,再将中断入口地址装入PC。

9 典型的中断服务程序

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:565582 发表于 2019-6-18 22:34 | 只看该作者
非常好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表