逻辑结构
- 8位处理器
- 哈佛结构
- 复杂指令集
- 128B RAM + 特殊功能寄存器SFR
- 4KB ROM
- 16位定时/计数器*2:T0和T1
- 8位双向可编程GPIO ,并行端口P0~P3
- 1个UART串行端口
- 中断控制系统
- 内部时钟电路
内部逻辑
数据指针DPTR
16位特殊功能寄存器,用于数据存储器和I/O寻址,(DPH+DPL)
1 | ; 访问片外数据存储器或I/O的指令 |
累加器A
它是一个使用最频繁的专用寄存器,这导致了累加器的瓶颈,它用来存放操作数,是ALU单元的输入之一并且也是ALU运算结果的暂存单元,ALU的运算结果会通过内部总线送回到累加器中得以保存
程序状态字(PSW):
CY,AC,OV,P都是ALU在运算后的标志位直接输入的
- CY:进位标志位
- AC:辅助进位标志位
- OV:溢出标志位
- P:奇偶标志位,通常添加在串行通信时的帧中来保证数据传输的可靠性
- F0:用户标志
- RS1&RS0:工作寄存器组选择控制位
ALU
产生两个结果
- 运算结果送入累加器中
- 标志位送入PSW中
条件转移逻辑电路
- 内部条件:通过判断PSW(程序状态标志位)的状态,这和x86汇编中的
jz,ja
之类的指令很相似;以及累加器是否是结果为0(零状态)来决定是否进行分支转移 - 外部条件:通过F0的值,以及位寻址(8051单片机内部有1个可位寻址区,地址为20H~2FH)空间中的各个位的状态来判断是否进行分支转移
定时器/计数器
定时器/计数器时嵌入式芯片的核心部件,定时、技术、捕获、PWM是由它实现的,51中有两个16位的定时器/计数器
中断系统
外中断2个,定时/计数中断2个,串行中断1个。优先级分为高/低两种
振荡器
- 内部振荡器:误差1%-5%不精确
- 外部振荡器
- 晶体振荡器
- 陶瓷振荡器
- RC振荡器:廉价
由PD位(电源控制寄存器PCON中的一位)控制。当PD=1时,停止工作,系统进入低功耗工作状态
程序存储器
介质类型分类
片内不带程序存储器而使用片外只读存储器的称80C31
内部带ROM的称80C51
内部以EPROM代替ROM的称87C51
内部以FLASH代替ROM的称89C51
容量
采用16位的地址总线,可直接扩展的地址空间位64KB,片内、片外均为64KB
保密及攻击方法
复位及中断入口
复位方式见后文工作方式的内容
中断入口地址:
和x86的中断向量工作方式类似,通过这个入口地址跳转到实际程序的执行地址
复位 0000H~0002H(3个单元)
外部中断0 0003H~000AH(8个单元)
计时器T0溢出 000BH~0012H (8个单元)
外部中断1 0013H~001AH (8个单元)
计时器T1溢出 001BH~0022H (8个单元)
串行口中断 0023H~002AH (8个单元)
计时器 T2/T2EX 002BH~0032H (8个单元,80C52)
数据存储器
容量
片内256B数据存储器地址空间,片外64KB的数据存储器地址空间
寻址
地址只有8位=256B的寻址范围
低128B一定为片内数据RAM区
高128B为特殊功能寄存器SFR区/RAM区:高128B的RAM区和SFR区的地址空间是重叠的。究竟访问哪一个区是通过不同的寻址方式来加以区别的,访问高128B RAM区时,选用间接寻址方式;访问SFR区,选用直接寻址方式(eg: MOV AX [2000H],[]中为常数)
片外数据存储器只能用寄存器间接寻址的方法访问,这里使用的寄存器为DPTR、R1、R0
工作寄存器区
片内数据 RAM区的 0~31(00H~1FH),共 32个单元,是 4个通用工作寄存器组,每个组包含8个8位寄存器,编号为 R0~R7
单片机的信号引脚
- 40引脚双列直插(DIP, Dual In-line Package)
- 44引脚(PLCC, plastic leaded chip carrier)
- 44引脚(PQFP/TQFP, plastic quad flat pack / Thin Quad Flat Package)封装形式
ALE(PROG:编程脉冲):地址所存允许信号
/PSEN:片外程序存储器读选通信号,‘/’表示低电平有效
时钟电路
内部时钟发生器实质上是一个2分频的触发器,讲震荡信号2分频
时序定时单位:震荡周期/节拍、时钟周期/状态周期、机器周期(机器周期是单片机的最小时间单位)、指令周期(由于使用复杂指令集,因此根据指令的不同,可能包含n个机器周期)
工作方式
复位
PC:arrow_right:0000H,对特殊功能寄存器又影响,ALE=0,/PSEN = 1
程序运行出错或者操作错误而使得系统处于死锁状态时,可以使用复位键或WDT看门狗定时器来复位。
复位实现方式:
需要使用RST引脚,该引脚为复位信号的输入端,复位信号是高电平有效,其有效时间应该持续2个机器周期以上才能进行复位
- 上电自动复位
- 按键复位:
- 电平方式(复位端经过电阻和Vcc电源接通实现)
- 脉冲方式(通过RC微分电路产生正脉冲)
程序执行
一般在0000H处有一个跳转指令用来跳转到实际的程序入口
低功耗
由电源控制寄存器(PCON)的有关位来控制
低功耗模式下内部振荡器不工作,因此不产生内部时钟信号
- 待机/空闲(IDLE)方式
- 掉电(POWER DOWN)保护方式
编程和校验
这里有点晕,感觉特别繁琐,先放个图吧
控制线
注:/ 表示低电平有效,没有这个标志标识高电平有效
RST
在振荡器工作时,在RST上作用两个机器周期以上的高电平,将器件复位。
VPD:备用电源引入端,当电源发生故障,电源降到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的数据不丢失
/EA
片外程序存储器访问允许信号,低电平有效。/EA=1,选择片内程序存储器;/EA=0,则程序存储器全部在片外而不管片内是否有程序存储器。
Vpp:编程电压,具体电压值视芯片而定
ALE(PROG: 编程脉冲)
该信号每6个震荡周期出现一次,是地址锁存允许信号。例如在读取指令的时候需要它为1才可以读取。
/PSEN
片外程序存储器读选通信号,低电平有效
指令系统
单字节或双字节指令可能是单机器周期或双机器周期的
三字节指令是双机器周期的
乘除指令是四个机器周期的
总线
地址、数据、控制三总线:地址总线是单向的、数据总线是双向的、控制总线是单向的
位寻址
RAM(20H-2FH)16*8=128位、特殊功能寄存器被8整除的位、I/O口中可以位寻址的位
电源
种类:TYPE A: 5V、 TYPE B: 3.3V、 TYPE C: 1.8V
误差:\(\pm10\%\),少数芯片可以达到\(\pm5\%\)
宽电源芯片
可以同时支持TYPE A/B
芯片工作电压范围很宽,比如工作电压\(3V-5V\),使用\(3V\)工作功耗比使用\(5V\)低。因为逻辑高电平大于等于\(0.7*Vcc\),逻辑低电平小于等于\(0.3*Vcc\),当使用高\(Vcc\)时,高逻辑和低逻辑的电压差大,所以抗干扰能力强
内部方式
XTAL1——片内振荡器的反相放大器输入端
XTAL2——片内振荡器的反相放大器输出端。
外部方式
使用外部振荡器时,外部信号应直接加到XTAL1,而XTAL2悬空。根据频率微调电容取15-30P左右。
这老师的ppt就乱得离谱,感觉还是没理顺