目录
2.1 MCS-51单片机的结构
MCS-51系列单片机分为51和52两个系列,但是考虑到产品的代表性,以后都将以80C51为例进行介绍。
2.1.1 MCS-51单片机的内部结构
MSC-51单片机的内部结构包含了作为微型计算机所必须的基本功能部件,如CPU、RAM、ROM、定时/计数器和可编程并行I/O口、可编程串行口。这些功能部件通常都挂靠在单片机内部总线上,通过内部总线传送数据信息和控制信息。
80C51单片机的内部资源主要包括:
- 1个8位中央处理器(CPU)——,可以见“2.2.1MCS-51单片机的内部结构”,通常是单核的,它会使用8位来存储数据,但是会用16位(两个8位)来存储地址
- 1个片内振荡器和时钟电路——可以见“2.3.2 时钟电路”
- 4KB片内程序存储器(ROM)——可以见“2.2.2 程序存储器”,4KB的空间可以用十六进制0~0FFFH来表示,这只是片内ROM,空间不够可以在外面添加
- 256字节的片内RAM——可以见“2.2.3 数据存储器”,256字节的空间可以用十六进制0~0FFH来表示,这只是片内RAM,空间不够可以在外面添加;这个256字节的片内RAM分为两个部分:前128B和后128B,其中包含着特殊功能存储器SFR
- 2个16位定时/计数器T/C(T0、T1)——可以见“第6章 单片机的定时/计数器”,分为定时器和计数器,其中定时器:多为12MHz,也可以为6MHz、24MHz等,甚至可以为11.0592MHz;计数器:通常是受时沿影响;52系列的还有T2
- 可寻址64KB外部程序存储器和64KB数据存储空间的控制电路——64KB的空间可以用十六进制0~0FFFFH来表示,是使用16位来存储地址
- 4个8位双向I/O口——可以见“2.4 并行I/O口”,P0~P3
- 1个全双工串行口UART——可以见“第7章 单片机的串行口及应用”
- 5个中断源INT——可以见“第5章 单片机的中断系统”,有2个外中断和3个内中断,其中外部中断可以通过按键来进行,内部中断可以通过串行口和2个定时/计数器来进行
其中,教材结构可以见我写的专栏中的“单片机_介绍”。
SCM——将通用微计算机基本功能部件集成在一块芯片上构成的一种专用微计算机系统(单片机诞生后大体经历了SCM、MCU和SoC三大阶段)
SCM = CPU+OSC+ROM+RAM+T/C+INT+ BEC+I/O+UART
CPU(Central Processing Unit )
单片机内部资源中最核心的部分是CPU,它是单片机的大脑和心脏。CPU的主要功能是产生各种控制信号,控制存储器、输入/输出端口的数据传送、数据运算、逻辑运算等处理。·
CPU = 控制器 + 运算器
控制器
控制器的作用:对取自程序存储器的指令进行译码,在规定的时刻发出各种操作所需的控制信号,完成指令所规定的信号。
控制器的用途:统一指挥和控制各单元协调工作
控制器的任务:从ROM中取出指令→译码→执行指令
控制器的组成:程序计数器PC、数据指针寄存器DPTR、指令寄存器IR、指令译码器ID(主要讲PC和DPTR)
(1)程序计数器(Program Counter——PC)(不属于特殊功能寄存器SFR)
指向ROM存储单元的地址指针(引导程序运行)
16位寄存器(寄存器:放置于CPU内的存储器)→可寻址范围2^16(= 65536B= 64KB)
永远存放着下一条指令的首地址,即PC内容决定着程序的运行轨迹
当CPU要取指令时,PC的内容就会出现在地址总线上;取出指令后,PC的内容可自动加“1” ,以保证程序按顺序执行(即没有分支,不是循环,不是跳转)
具有可被指令修改(如汇编语言:MOV A,@A+PC)功能(不能读写)→跳转运行程序功能
复位时,PC初值=0,即0000H →复位后程序从0000H地址处的指令开始运行
PC不属于特殊功能寄存器SFR(可以见之后的“2.2.3 数据存储器”中的“SFR的名称及其分布”)
PC中的计数值可被编程指令修改
PC不可寻址RAM,只可以寻址ROM
(2)数据指针寄存器(Data Pointer ——DPTR)
指向ROM或RAM存储单元的地址指针(引导数据传送)
16位的专用地址指针寄存器,可寻址范围2^16(64KB)
可拆为2个8位的独立寄存器DPL(DPTR的低8位)和DPH(DPTR的高8位)
DPTR既可以作为一个16位寄存器来使用,但也可以作为两个独立的8位寄存器来使用。
具有可被指令修改功能→可变更数据地址
例如,将地址2000H放入DPTR中
方法1(C语言):DPH=0x20; DPL=0x00;
方法2(汇编语言):MOV DPTR, #2000H
DPTR可以用来存放片内ROM的地址,也可以用来存放片外RAM和片外ROM的地址(即不能存放片内RAM的地址) 。
运算器
运算器的用途:对数据进行算术运算和逻辑操作
运算器的任务:计算缓存器内容→结果暂存→修改运行标志
运算器的组成:累加器ACC、算术逻辑部件ALU、程序状态字寄存器PSW等。
为了提高数据处理速度,片内还增加了一个通用寄存器B和一些专用寄存器与位处理逻辑电路。
(1)累加器(Accumulator——A或ACC)
存放操作数或中间运算结果的寄存器
8位寄存器,简称为A,通过暂存器与ALU相连
其值可由指令修改
是最繁忙的寄存器
(2)程序状态字寄存器(Program State Word——PSW) ——存放程序运行过程中的各种状态信息的寄存器
存放程序运行过程中的各种状态信息的寄存器
8位寄存器,各位都具有特殊含义
状态值可由硬件形成或由指令修改
CY(PSW.7)——进位标志
在进行加或减运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”。
用途:1、可根据CY判断有无进位或借位;2、可作为位操作中的位累加器用。
位操作:是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器 上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。
包括取反(NOT)、按位或(OR)、按位异或(XOR)、按位与(AND)等。
AC(PSW.6)——辅助进位标志
在进行加或减运算时,如果操作结果的低四位数向高四位产生进位或借位时,将由硬件置“1”,否则清“0”。
用途:1、根据AC判断加减运算时有无半进位或半借位;2、在BCD码调整运算中要用到AC标志
F0(PSW.5)和 F1(PSW.1) ——用户标志位
用途: 由用户置位或复位,可做为用户指定的状态标志
置位/复位
简单来讲就是:复位就是清0,置位就是置1。
触发器可以理解为一个执行机构(有两个状态,执行或不执行),复位的时候不执行,置位的时候执行。
RS触发器它的输出在复位的时候为0,置位的时候输出为1,这个RS触发器有两个控制输出状态的引脚R(复位)跟S(置位),R脚为1时,RS触发器强制输出0(在满足输入信号符合高低电平的要求下,不管S脚什么状态),如果R脚为0时,S脚为1,RS触发器被触发,输出1,触发后,只要R脚一直是0,不管S脚怎样变化,RS触发器输出都不变,为1。(与数字模拟电路有关)
置位需要强制性给定一个输入。而复位却可以在循环程序里使用。举个例子。你可以把输入全置1。但复位却可以无限次的把输入置1。只要不跳出循环,当预定义的置位值和复位置等价,那复位可以看成无限次的自动置位。
RS1(PSW.4)和RS0(PSW.3<