《单片机原理与应用》光学与电子信息学院第2章MCS-51单片机的硬件结构和原理《单片机原理与应用》光学与电子信息学院2.1MCS-51单片机的基本结构2.2CPU2.3MCS-51的引脚2.4单片机的复位、时钟与时序2.5MCS-51的存储器结构2.6并行I/O口知识点《单片机原理与应用》光学与电子信息学院1)理解MCS-51单片机内部硬件运行机制2)掌握特殊功能寄存器的定义及对应的硬件关系3)掌握机器周期的概念4)熟练掌握存储器的架构及特点5)熟练掌握端口的架构及使用特点学习目标《单片机原理与应用》光学与电子信息学院单片机:在一块硅片上集成了CPU、存储器、I/O接口等逻辑部件的单片微型计算机。地址/数据总线端口I/O线振荡与定时电路4KB内部程序存储器128BRAM21SFR2个16位定时器/计数器CPU存贮器扩展控制并行端口串行端口外部中断信号控制信号串行输入串行输出时钟源计数信号内部总线2.1MCS-51的结构2.1.1MCS-51的总体结构《单片机原理与应用》光学与电子信息学院89C51=(8位)CPU+4KBROM+128BRAM+(2×16)T/C+(4×8)I/O+1个UART+5个INTINTELMCS-51系列单片机一览表2.1.2MCS-51单片机的内部结构2.1MCS-51的结构子序列片内ROM形式片内ROM容量片内RAM容量IO特性中断源无ROM计数器并行口串行口INTEL8031√0128B24×815INTEL80C51√4K128B24×815ATMEL89C51√4K128B24×815SiliconLabsC8051F310√16K1280B429114《单片机原理与应用》光学与电子信息学院2.1.2MCS-51单片机的内部结构2.1MCS-51的结构SiliconLabsC8051F310《单片机原理与应用》光学与电子信息学院背景知识:2.1MCS-51的结构《单片机原理与应用》光学与电子信息学院51单片机主要内部资源的学习安排1.中央处理器CPU——第2章2.程序存储器ROM——第2章3.数据存储器RAM——第2章4.并行I/O口——第2、5、7章5.中断INT——第5章6.定时器/计数器T/C——第5章7.全双工串行口UART——第6章2.1MCS-51的结构《单片机原理与应用》光学与电子信息学院2.1MCS-51单片机结构2.2CPU2.3MCS-51的引脚2.4单片机的复位、时钟与时序2.5MCS-51的存储器结构2.6并行I/O口《单片机原理与应用》光学与电子信息学院CPU=控制器+运算器2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院控制器的用途:统一指挥和控制各单元协调工作控制器的任务:从ROM中取出指令→译码→执行指令控制器的组成:程序计数器PC、数据指针寄存器DPTR、…2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院运算器的用途:对数据进行算术运算和逻辑操作运算器的任务:计算→暂存→修改运行标志运算器的组成:累加器ACC、程序状态字寄存器PSW、…2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院2.2CPU(CentralProcessingUnit)2.2.1运算器算术逻辑部件ALU(ArithmeticLogicUnit)+累加器ACC+B寄存器+程序状态字寄存器PSW(ProgramStatusWord)+暂存寄存器+…《单片机原理与应用》光学与电子信息学院一、算术逻辑部件ALU组成:加法器和其他电路组成主要功能:算术运算和逻辑运算2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院二、累加器(ACCUMULATER——A)具有8位字长是利用率最高的寄存器具有可被指令修改功能——存放操作数或中间运算结果的寄存器2.2CPU(CentralProcessingUnit)三、寄存器B一般用于乘、除法指令运算前:乘数/除数运算后:乘积的高位字节/商的余数《单片机原理与应用》光学与电子信息学院四、程序状态字寄存器(ProgramStateWord——PSW)具有8位字长各位都具有特殊含义状态信息通常自动形成,但也可用指令修改——存放程序运行过程中的各种状态信息的寄存器CyACF0RS1RS0OV--PPSW奇偶标志溢出标志寄存器区选择控制位标志0半进位标志进位标志2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院CY(PSW.7)——进位标志在进行加或减运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”。10010011+11110000————————CY=110000011进位标志位CYCYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1P位7位6位5位4位3位2位1位0CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位7位6位5位4位3位2位1位0用途:1、根据CY判断有无进位或借位;2、在位操作中CY可作为位累加器用。举例2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院AC(PSW.6)——半进位标志在进行加或减运算时,如果操作结果的低半字节向高半字节产生进位或借位时,将由硬件置“1”,否则清“0”。01001111+10100001————————AC=111110000半进位CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1P位7位6位5位4位3位2位1位0CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位7位6位5位4位3位2位1位0举例用途:1、根据AC判断加减运算时有无半进位或半借位;2、在BCD码调整运算中要用到AC标志。2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院F0(PSW.5)和F1(PSW.1)——用户标志位可作为用户自行定义的一个状态标记。举例:定义F0为安全门的状态,F0=0→开;F0=1→闭定义F1为指示灯的状态,F1=0→开;F1=1→闭CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1P位7位6位5位4位3位2位1位0CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位7位6位5位4位3位2位1位0用途:在程序运行中判断门或灯的工作状态2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院RS1和RS0(PSW.4和PSW.3)——工作寄存器组指针用途:用于指定CPU的当前工作寄存器组CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1P位7位6位5位4位3位2位1位0CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位7位6位5位4位3位2位1位02.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院OV(PSW.2)——溢出标志在有符号数加减运算中,若有异常结果,OV硬件置1,否则硬件清0。CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1P位7位6位5位4位3位2位1位0CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位7位6位5位4位3位2位1位0用途:判断运算的结果是否正确,正确=0;出错=12.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院OV=C6YC7Y=10=1正数的补码是它本身,负数的补码是(其原码)除符号位外每位求反,然后末尾加1。11111011(-5)+11110000(-16)——————————————CY=111101011→(-21)D7有进位D6有进位OV=C6YC7Y=11=0→运算出错→运算正确00011001(+25)+01111101(+105)——————————————CY=010010110→(-106)D6有进位D7无进位举例2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院P(PSW.0)——奇偶标志位该位始终跟踪累加器A中含“1”个数的奇偶性。如果A中有奇数个“1”,则P置“1”,否则置“0”。满足偶校验原则。举例若A=10011111,则P=0若A=11000001,则P=1CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1P位7位6位5位4位3位2位1位0CYACF0RS1RS0OVF1PCYACF0RS1RS0OVF1PPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位7位6位5位4位3位2位1位0用途:用于串行通讯中的数据校验,判断是否存在传输错误。2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院一、程序计数器(ProgramCounter——PC)——指向ROM存储单元的地址指针(引导程序运行)0000HPC指针……XxxxxxxxXxxxxxxxXxxxxxxxXxxxxxxxXxxxxxxxROM0000H0001H0002H0003H0004HFFFFH永远存放着指向下一条指令的16位地址具有16位字长→可寻址范围216(=65536字节=64KB)具有自动加“1”功能→顺序运行程序功能具有可被指令修改功能→跳转运行程序功能复位时,PC初值=0000H→复位后程序从0000H开始运行2.2CPU(CentralProcessingUnit)2.2.2控制器《单片机原理与应用》光学与电子信息学院二、数据指针寄存器(DataPointer——DPTR)具有16位字长,可寻址范围216(64KB)具有可被指令修改功能→可变更数据地址可拆为2个8位的独立寄存器DPL和DPH……0000H0001H0002H0003H0004HFFFFH35H77HF4H94H9EHDPTR指针……xxHxxHxxHxxHxxHROMRAMDPLDPH0000H0001H0002H0003H0004HFFFFH——指向ROM或RAM存储单元的地址指针(引导数据传送)2.2CPU(CentralProcessingUnit)《单片机原理与应用》光学与电子信息学院三、堆栈指针SP(StackPointer)MCS-51单片机的堆栈,是在片内RAM中开辟的一个专用区,用来暂时存放数据或存放返回地址,并按照“后进先出”(LIFO)的原则进行操作。2.2CPU(CentralProcessingUnit)堆栈的一端是固定的,称为栈底;另一端是浮动的,称为栈顶。最后进栈的元素所在地址就是栈顶。7FH08H07H栈顶栈底《单片机原理与应用》光学与电子信息学院2.2CPU(CentralProcessingUnit)7FH07HSP+108HSP+109HSP+10AHXYZ7FH08H09HSP-10AHXYZSP-1SP-107H堆栈指针SP(StackPointer)是一个8位寄存器,用它存放栈顶的地址。进栈时,SP首先自动加1,将数据压入SP所指示的地址单元中;出栈时,将SP所指示的地址单元中的数据弹出,然后SP自动减1。SP总是指向栈顶。《单片机原理与应用》光