简介
本笔记参考B站高宏亮老师的教学视频:点击观看
计算机的数值表示
源码
正数:首位 0,其余七位表示实际数值
负数:首位 1,其余七位表示实际数值
缺点是部分运算会出错,需要额外的算法对其进行处理,十分麻烦
反码
正数:首位 0,其余七位表示实际数值
负数:首位 1,其余七位为正数七位的逐位取反结果
例如:正数 01011100,则负数 10100011
缺点是正负运算或者负负运算都会少一个 1
补码
完美的编码方式,不会产生致命性错误,几乎所有计算机都使用该编码系统
正数:首位 0,其余七位表示实际数值
负数:首位 1,其余七位为正数七位的逐位取反后加一
例如:正数 01111000,负数 10000111
最后加一的作用就是为了抵消反码中出现的“误差 1”现象
MCS51 单片机
型号与构成
MCS-51 单片机型号对应参数解析图
基本内部结构图
常用器件介绍
- ACC 累加器:ALU 进行运算时,数据绝大部分来自累加器 A
- PSW 标志寄存器:一个 8 位寄存器,保存指令执行结果状态
常见控制部件
- 定时和控制电路
- 指令寄存器
- 指令译码器
- 程序计数器 PC
- 堆栈指针 SP
- 数据指针 DPTR
存储结构
程序存储器 ROM
- 存放单片机工作时的程序,没有 ROM 就无法工作
- MCS51 内置程序计数器 PC,他可指示 CPU 下一步所处理的程序在 ROM 中的地址
- ROM 有片内存储器和片外存储器(通过总线访问)两种
为便于快速访问片内和片外 ROM,单片机自带控制线 EA,来决定使用内还是外 ROM
EA=1
,高电平,当 PC 大于某值时访问片外 ROM,其余时刻访问片内 ROM
EA=0
,低电平,片内 ROM 被忽略
ROM 存在七个特殊的地址
数据存储器 RAM
- 具备快速存取功能,掉电后数据立刻丢失
- 同样具有片内和片外两个类型
内部寄存器分为以下几个主要区域
- 工作寄存器:也称通用寄存器,每次存储 8 个信息,共 4 组,每组用 R0-R7 表示
- 位寻址区
- 一般 RAM 区:也称用户 RAM 区,80 字节
- 堆栈区与堆栈指针,安装 LIFO 原则
- 特殊功能寄存器:类似于一个自定义变量池,用户可以自定义,但是不可以挪作他用
外部引脚与总线接口
P0 口(P0.0-P0.7)
不接片外存储器与扩展 IO 口时,作为双向 IO 口使用;
反之,分时复用为低八位地址总线与双向数据总线;
P1 口(P1.0-P1.7) 可做双向 IO 口
P2 口(P2.0-P2.7)一般做双向 IO 口,扩展外存后可做高八位地址总线
P3 口(P3.0-P3.7)除做双向 IO 口外,还可做特殊用途
控制线
MCS51 单片机通过不同信号对内外存储器进行读写操作;
片外数据存储器通过 RD\WR 指令读写;
片外程序存储器读通过 PSEN 指令实现;
并行 IO 口工作原理
主要有四大 IO 口,他们具有特殊锁存作用,分别是 P0 P1 P2 P3
P1
写入时:
D=1,此时锁存器右下角 Q 为对 D 取反,得到 0,此时场效应管 V1=0,不导通,VCC=5v 直接通过上拉电阻输出信号 1
D=0,Q 取反得 1,此时 V1=1,场效应管导通,故与 VCC=5v 相互抵消,输出信号 0
读入时:
D=0,场效应管不导通,外界信号直接流入通过下方绕过
P3
读写流程和 P1 口几乎一致,只不过要注意第二功能区的与非门,即 1 和 1 取 0,1 和 0 取 1,以此类推
P2
MUX 数据选择器,可视为一单刀双掷开关,当控制=0 时,链接锁存器;当控制=1 时,链接地址总线;
工作周期
晶振
XTAL1 以及 XTAL2 口为外接晶振口;
内部晶振由一个反相放大器构成
复位方式
外部电路使 RST 端出现连续两周期的高电平,此时执行复位;
机器周期
- 机器周期包含 S1-S6 六个
- 一个状态包含两拍 P1\P2
- 一个拍称为一个时钟周期
指令周期
定义:机器取一个指令并将其完整执行完毕的周期过程;
一个指令周期一般由 1-2 个机器周期组成;
仅乘除运算需 4 机器周期完成;