由两个部分组成:运算器和控制器
运算器:算术逻辑单元(ALU)、位处理器、累加器 ACC 等组成;
控制器:主要有内部晶振和一些定时、控制逻辑组成
拥有三个存储器地址空间
累加器 ACC
:一个最常用的专用寄存器,大部分单操作数指令的操作数取自累加器,指令系统中采用 A 作为累加器的助记符
程序状态字 PSW
:一个 8 位寄存器,它包含了程序状态信息
栈指针 SP
:它指示出栈顶在内部 RAM 块中的位置;SP 的初值越小,堆栈深度就可以越深
数据指针 DPTR
:一个 16 位专用寄存器,当对 64KB 外部数据存储空间寻址时,可作为间址寄存器使用
IO 专用寄存器
:统一使用 MOV 指令操作
串行数据缓存器SBUF
:用于存放欲发送或已接受的数据,由两个独立的寄存器组成,一个是发送缓冲器,另一个是接受缓冲器
定时器与计数器
XTAL1 作为芯片内部振荡电路的输入端,XTAL2 为其输出端
标准内部时钟
在 XTAL1 和 XTAL2 上面接定时原件,内部振荡电路实现自激振荡
外部时钟方式?
下图展示了 HMOS 型芯片的外部时钟连接方式
计算机启动,系统默认进入复位状态;
复位状态下 CPU 和其余转筒寄存器均设置默认值;
在单片机的 RESET 引脚上出现 24 个时钟振荡脉冲(两个机器周期)以上的高电平,单片机就能实现复位
下图表示内部复位的典型格式,RESET 接外部复位电路,而施密特触发器可以用来进行整形操作
简单复位电路有上电复位和手动复位两种
不管是哪一种复位电路都要保证在 RESET 引脚上提供 10ms 以上稳定的高电平
目前存在两种低功耗模式
空闲方式中,仅 CPU 停止工作,但振荡器仍然运行,中断控制器等仍然在时钟控制下进行。
掉电保护方式中,片内振荡器停止工作,片内所有功能全部停止工作,而 RAM 等寄存器内容可维持不变
低功耗工作方式是通过 电源控制寄存器PCON
来确定的
PCON.0=1 进入空闲方式
可以使用中断、硬件复位两种方式退出空闲方式
PCON.1=1 进入掉电保护方式
只能使用硬件复位的方式退出掉电保护方式
不建议通过降低 VCC 电压使得其“不自然的”进入掉电保护状态!
重点关注以下图形,C51 和 STM32 的定时器和计数器对应寄存器名称和布局都差不多,学会了就直接融会贯通即可
T0 由 TH0 和 TL0 构成,T1 由 TH1 和 TL1 构成
TMOD
用于控制和确定各个定时器/计数器的功能和工作模式
TCON
用于控制定时器/计数器 T0、T1 的启动和停止计数,同时包含定时器/计数器的状态
下图为定时器与计数器的工作原理图
控制寄存器 TCON 可以设置以下几个主要的位
定时器/计数器的初始化流程
串行口基本结构
串行口控制寄存器 SCON
设置串行通信接口的工作方式及收发方式
电源控制寄存器 PCON
波特率解释
下图展示了中断系统的程序框图
下面介绍当设置对应寄存器的值后对应含义
IT0=1
设置 INT0 为脉冲触发,下降沿有效IT0=0
设置 INT0 为电平触发,低电平有效IE0
INT0 请求标志位TF0
T0 定时计数溢出标志位EA=1
CPU 开放所有中断EX0=0
禁止 INT0 中断ET0=0
禁止 T0 中断PX0
外部中断 0 优先级设定位PT0
定时器 T0 中断优先级设定位PX1
外部中断 1 优先级设定位PT1
定时器 T1 中断优先级设定位PS
串行口中断优先级设定位。外部中断 0:对应引脚 INT0
外部中断 1:对应引脚 INT1
外部中断有两种触发方式
低电平或高电平的宽度至少要保持一个机器周期,即 12 个振荡周期以上
PX PT PS 可以设置中断的优先级,设置为 0 为低优先级,设置为 1 为高优先级
中断规则
分为 3 个阶段,即中断响应、中断处理和中断返回
中断响应
中断处理
中断返回
PS:中断请求撤销(对于某些中断,如果不及时清除就会触发下一次中断)